Я получаю ошибку Symbol lookup error: undefined symbol atexit (linux/C)
при попытке запустить программу.atexit()
должно быть определено в <stdlib.h>.
Могу ли я что-нибудь добавить к опции -l
при компиляции с помощью gcc?Или что-нибудь еще, что я мог сделать?Это в C.
Я пытаюсь написать общий объект, где я вызываю atexit
один раз.Я также определяю соответствующую функцию , как объяснено .
$ 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
.