有没有办法在调用 main 函数之前解析命令行选项?

Is there a way to parse command line options before main function is called?

当 C/C++ 程序被调用时:

./prog --arg=42

命令行参数被转发到主函数

int main (int argc, char* argv[])

在哪里可以解析参数(或转发到某个进行解析的库)。

我想知道是否可以在C运行时调用主函数之前拦截参数。 因为我写了一个替换库,所以我不能使用像 my_lib::init(argc, argv).

这样的初始化函数

我知道一个函数的 __attribute__((constructor)),所以它在调用 main 之前被调用,但是我不知道如何在这样一个标记的函数中获取命令行参数。

我认为没有标准的方法来拦截调用可执行文件的入口点 main()

但是,您可以调整可执行文件的链接过程,例如可以使用 ld--wrap-u 选项。在链接过程中还有更多选项可以替换符号,请考虑您的链接器手册。