Когда я пытаюсь построить этот проект с CMake и GCC на 64-битной Linux (Debian) машина, я получаю сообщение об ошибке от линкера:Строительный проект с участием CMake, как мне сделать это известно библиотек
Linking C executable ../../../../cpsadamsx
/home/dala/lib64/libSimTKcommon.so: undefined reference to `dlopen'
/home/dala/lib64/libSimTKcommon.so: undefined reference to `dlclose'
/home/dala/lib64/libSimTKcommon.so: undefined reference to `dlerror'
/home/dala/lib64/libSimTKcommon.so: undefined reference to `dlsym'
collect2: ld returned 1 exit status
make[2]: *** [cpsadamsx] Error 1
make[1]: *** [sundials/examples/cpodes/serial/CMakeFiles/cpsadamsx.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
Очевидно, dlopen, dlclose, dlerror и dlsym являются ссылками на libdl.so. У меня есть библиотека в /lib64/libdl.so.2, но почему она не найдена?
Было бы нормальным «./configure; делать; сделать install'-путь, который я мог бы установить переменную LIBS и выдал команду конфигурационный как это (я думаю):
export LIBS=-ldl && ./configure
Но как же мне делать теперь?
UPDATE:
Таким образом, кажется, что (или по крайней мере) находится библиотека, но не содержит символы, о которых идет речь. Возможно, он пытается с 32-битной библиотекой в / lib?
Есть ли способ разобрать /lib64/libdl.so.2, чтобы убедиться, что у него есть ссылки dlopen и т. Д.?
Проблема теперь, кажется, направляет инструменты сборки в правильную версию библиотеки.
Это может работать, но это не «мой» проект, поэтому предпочтительно не хочу, чтобы редактировать файлы CMakeLists.txt. – dala