2014-09-02 11 views
11

Ich versuche, eine Datei in Ubuntu zu machen und wenn ich mich mache immer diesen Fehler:undefined reference to Symbol ‚pthread_key_delete @@ GLIBC_2.2.5

/usr/bin/ld: ../../gtest-1.7.0/libgtest.a(gtest-all.cc.o): undefined reference to symbol  '[email protected]@GLIBC_2.2.5' 
/lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line 
collect2: error: ld returned 1 exit status 
make[2]: *** [src/tests/run_tests] Error 1 
make[1]: *** [src/tests/CMakeFiles/run_tests.dir/all] Error 2 
make: *** [all] Error 2 

Ich sah jemand geht in Makefile zu erwähnen und Hinzufügen von '-L/lib64 -l Pthread' zur Variable LDFLAGS, aber wie macht man das? Völlig neu hier auf Linux = X

+0

ich die gleiche Sache sehe, und eine CMake-Orie schätzen würde Antwort. –

Antwort

2

ich das gleiche Problem betroffen: -lpthread sollte in Ihrer Verknüpfung Aufruf letzten Mal gewesen sein (hat mit Mischung aus statischen und geteilten Symbolen zu tun)

Also mit CMake: ${CMAKE_THREAD_LIBS_INIT} sollte letzte. Zum Beispiel:

target_link_libraries(mytestlib 
    ${BINARY_DIR}/libgmock.a 
    glog 
    gflags 
    ${Boost_LIBRARIES} 
    ${CMAKE_THREAD_LIBS_INIT} 
) 

Und für den OP: Suche nach „Faden“ in der CMakeLists.txt für das Projekt Ihrer bauen und derjenigediejenigedasjenige Abschnitt (oder einen Link einzufügen, welches Projekt Sie versuchen zu bauen, wenn es Open Source ist) - wenn die oben ist nicht selbsterklärend

+1

Dies ist eher eine plattformübergreifende angemessene Antwort. Das Kompilieren auf Mac gegen Linux hat unterschiedliche Anforderungen und dies verhindert jedes hässliche 'if (APPLE)' Zeug. – David

15

die obige Verknüpfung Problem durch Zugabe gelöst

-lpthread -lm to CMakeLists.txt (target link libraries for luxrender); 
TARGET_LINK_LIBRARIES(... -lpthread -lm) 

mit freundlichen Grüßen,

+1

Kann dieses Problem ohne Makefile gelöst werden? –

+0

Das Problem wurde behoben, indem ich ein Open-Source-Projekt in einem Cluster kompilierte, in dem ich keine Kontrolle über die Umgebung habe. Prost. – domini1000