猿问

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

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

就像下面的代码


#include<stdio.h>

int entry()  //entry is the entry point instead of main

 {

   return 0;

 }


慕无忌1623718
浏览 858回答 3
3回答

慕桂英4014372

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

qq_笑_17

如果您使用的是提供GNU Binutils的系统(例如Linux),则可以使用该objcopy命令使任意函数成为新的入口点。假设一个名为的文件program.c包含entry函数:$ cat > program.c#include <stdio.h>int entry(){&nbsp; &nbsp; 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
随时随地看视频慕课网APP
我要回答