如何更改用gcc编译的C程序的入口点?就像下面的代码#include<stdio.h>int entry() //entry is the entry point instead of main { return 0; }
3 回答
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
- 3 回答
- 0 关注
- 857 浏览
添加回答
举报
0/150
提交
取消