为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用gcc更改C程序的入口点?

如何使用gcc更改C程序的入口点?

C
慕无忌1623718 2019-11-30 10:54:50
如何更改用gcc编译的C程序的入口点?就像下面的代码#include<stdio.h>int entry()  //entry is the entry point instead of main {   return 0; }
查看完整描述

3 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

这是一个链接器设置:


-Wl,-eentry

的-Wl,...事情参数传递给链接器和链接器将一个-e参数设置项功能


查看完整回答
反对 回复 2019-11-30
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

如果您使用的是提供GNU Binutils的系统(例如Linux),则可以使用该objcopy命令使任意函数成为新的入口点。


假设一个名为的文件program.c包含entry函数:


$ cat > program.c

#include <stdio.h>

int entry()

{

    return 0;

}

^D

首先使用-c生成可重定位目标文件的方式对其进行编译:


$ gcc -c program.c -o program.o

然后,您将重新定义entry为main:


$ objcopy --redefine-sym entry=main program.o

现在使用gcc编译新的目标文件:


$ gcc program.o -o program

注意:如果您的程序已经具有名为的功能main,则在步骤2之前,您可以执行单独的objcopy调用:


objcopy --redefine-sym oldmain=main program.o


查看完整回答
反对 回复 2019-11-30
  • 3 回答
  • 0 关注
  • 857 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信