当我尝试建立这个项目的cmake和gcc在64位Linux(debian的)机器,我得到的链接错误:
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变量,并发出这样的configure命令(我认为):
export LIBS=-ldl && ./configure
但是,我现在该如何办呢?
更新:
如此看来,在(或至少一个)库被发现,但不包含有关的符号。 也许它在/ lib中的32位库尝试?
有没有办法拆卸/lib64/libdl.so.2,以确保它确实具有的dlopen等的引用?
现在的问题似乎指南生成工具库的正确版本。