微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使其他函数作为除C中main之外的入口点

每个程序都有一个main() ,程序从那里开始执行。 是否有可能编写一个没有main()的程序,并将另一个函数作为入口点? 如果是这样的话,任何人都可以告诉我该怎么办? 我正在使用Linux?

为什么iconv函数需要一个非const的缓冲区?

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] 举报,一经查实,本站将立刻删除。

相关推荐