我想知道当我的代码运行“系统”函数时调用了哪个符号。
在我的示例代码中,当特别包含标头 stdlib.h 时,该符号称为 _system$UNIX2003,当不包含标头时,(可能)默认符号名为 _system(没有后缀 $UNIX2003)
下图显示了我的实验结果: 为什么我们有不同的系统符号?无论如何在运行时检测正确的符号(我尝试使用 dlsym,但我需要包含动态库的句柄,但无法弄清楚我是否应该使用 dlopen 加载库)?
编辑:只有在 32 位拱形下编译时,我才会出现这种奇怪的符号修饰。
EDIT2:有人建议我使用隐式函数指针来获取正确符号的地址。但除非我在我的代码中专门调用该函数,否则它将不起作用。否则,我会收到使用未声明的标识符“系统”的编译错误