machen Wenn ich versuche, dieses Projekt mit cmake und gcc zu bauen auf einem 64-Bit-Linux (Debian) Maschine, bekomme ich einen Fehler von dem Linker:Bauvorhaben Cmake beteiligt, wie kann ich es bewusst Bibliotheken
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....
Anscheinend sind dlopen, dlclose, dlerror und dlsym Verweise auf libdl.so. Ich habe diese Bibliothek in /lib64/libdl.so.2, aber warum wird sie nicht gefunden?
Wäre es ein normales './configure gewesen; machen; machen install'-Pfad Ich konnte die LIBS Variable gesetzt haben und erteilt den Befehl configure wie folgt aus (glaube ich):
export LIBS=-ldl && ./configure
Aber wie mache ich es jetzt?
UPDATE:
So scheint es, dass der (oder zumindest a) Bibliothek gefunden wird, enthält aber nicht die Symbole in Frage. Vielleicht versucht es mit der 32-Bit-Bibliothek in/lib?
Gibt es eine Möglichkeit, /lib64/libdl.so.2 zu disassemblieren, um sicherzustellen, dass es die Referenzen dlopen usw. hat?
Das Problem scheint jetzt die Build-Tools auf die richtige Version der Bibliothek zu führen.
die funktionieren könnte, aber es ist nicht „mein“ Projekt, so vorzugsweise will ich nicht die CMakeLists.txt-Dateien bearbeiten. – dala