每个程序都有一个main() ,程序从那里开始执行。 是否有可能编写一个没有main()的程序,并将另一个函数作为入口点? 如果是这样的话,任何人都可以告诉我该怎么办? 我正在使用Linux?
c ++ boost计算在函数中花费的时间
操作系统语言在Linux中如何表示
如何模拟video捕捉设备并提供dynamicvideo内容?
使用闪存驱动器将编译的二进制文件复制到另一台机器
如果使用gcc编译,指定-e <symbol>选项可让您将入口点更改为函数symbol() 。
有一个解决方案来构建可执行共享库,您可以使用另一个函数作为入口点来构建一个程序。
代码如下所示:
#include <stdio.h> #include <stdlib.h> const char __invoke_dynamic_linker[] __attribute__ ((section (".interp"))) = "/lib/ld-linux.so.2"; void fun() { printf("This is fun./n"); exit(0); }
然后建立你的程序作为共享库,并指定func作为入口点:
$ gcc -fpic -shared -o fun.so -Wl,-e,fun fun.c $ ./fun.so
这样的问题是func不能像我们在main函数中那样拥有正常的参数,这是因为我们没有c库来初始化主要参数的东西。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。