我想将程序的入口点从main更改为自定义函数,但是在这种情况下似乎无法调用全局变量的构造函数。
这样的代码:
#include <stdin.h>
#include <stdlib.h>
const char my_interp[] __attribute__((section(".interp"))) = "/lib64/ld-linux-x86-64.so.2";
class A {
public:
A() {
printf("construct A\n");
}
};
A a;
int main() {
printf("main start\n");
}
extern "C" {
int smain() {
printf("smain start\n");
exit(0);
}
}
这样的编译命令:
g++ -g -Wl,-e,smain -o smain smain.cc
答案 0 :(得分:2)
使用-e
选项进行编译可以代替_start
而不是main
例程。
当您为start
使用替代方法时,将丢失初始化,而初始化将成为_start
例程的一部分。
在这种情况下,您将丢失对A
的构造函数调用,因为a
是全局的。
您也不能使用命令行参数。