неопределенная ссылка на `dlopen ' - PullRequest
1 голос
/ 31 мая 2011

У меня есть программа, которая не собирается с современным GCC с последующим выводом:

gcc -I/usr/lib/qt3/include -I/opt/kde3/include/  -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -lqt-mt -ldl -L/usr/lib/qt3/lib64 -o autocheck autocheck.cpp
autocheck.cpp: In function 'int main(int, char**)':
autocheck.cpp:64:62: warning: too many arguments for format
autocheck.cpp:79:79: warning: too many arguments for format
/tmp/ccOFReGf.o: In function `main':
autocheck.cpp:(.text+0x244): undefined reference to `dlopen'
autocheck.cpp:(.text+0x2e1): undefined reference to `dlerror'
collect2: ld returned 1 exit status

Я искал совет в Интернете, но нашел только рекомендацию добавить -ldl к компоновщику. Но это не помогает здесь. Что мне делать?

1 Ответ

12 голосов
/ 31 мая 2011

Переместите autocheck.cpp так, чтобы он находился перед библиотеками в вашей команде.В библиотеках ищутся только те вещи, которые нужно разрешить в файлах, которые появляются перед ними.Поэтому ваша команда должна выглядеть так:

gcc autocheck.cpp -I/usr/lib/qt3/include -I/opt/kde3/include/  -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -lqt-mt -ldl -L/usr/lib/qt3/lib64 -o autocheck 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...