当我尝试运行程序时收到错误Symbol lookup error: undefined symbol atexit (linux/C)
。 atexit()
应在<stdlib.h>.
使用gcc编译时,我可以添加-l
选项吗?还是我能做的其他事情?这是在C.
我正在尝试编写一个共享对象,我只调用atexit
一次。我还定义了相应的函数like explained。
$ LD_PRELOAD=mymal.so /bin/ls
/bin/ls: symbol lookup error: ./mymal.so: undefined symbol: atexit
编译后我没有收到错误,就在我尝试执行它时。
我使用命令(source)构建共享库:
gcc -fPIC -c -ldl mymal.c
ld -shared -soname mymal.so.1 -o mymal.so -lc mymal.o
已解决:它与g++
而不是gcc
配合使用。
答案 0 :(得分:1)
该函数名为atexit
,而不是Atexit
。