簡體   English   中英

從源代碼構建時鏈接器錯誤

[英]Linker error while building from source code

我正在嘗試從源代碼構建應用程序。 我可以使用'cmake'配置它。 但是,當我運行“ make”時,它會給我以下信息:

Linking CXX executable ../../bin/lux64/Release/od_batch_launcher
../../bin/lux64/Release/libBasic.so: undefined reference to `dlopen'
../../bin/lux64/Release/libBasic.so: undefined reference to `dlclose'
../../bin/lux64/Release/libBasic.so: undefined reference to `dlerror'
../../bin/lux64/Release/libBasic.so: undefined reference to `dlsym'
../../bin/lux64/Release/libBasic.so: undefined reference to `pthread_sigmask'
collect2: error: ld returned 1 exit status
make[2]: *** [bin/lux64/Release/od_batch_launcher] Error 1
make[1]: *** [src/Basic/CMakeFiles/od_batch_launcher.dir/all] Error 2
make: *** [all] Error 2

我了解它無法動態鏈接到C ++庫。 我不太了解如何對cmake進行必要的更改。 我正在Linux Mint 17上運行gcc版本:4.9.2,感謝您的幫助。 謝謝!

嘗試將-DCMAKE_EXE_LINKER_FLAGS=-ldl傳遞給CMake可執行文件。 要更改CMake構建腳本,請添加以下內容:

target_link_libraries(target_name dl)

其中target_name基本上是不帶任何擴展名的可執行文件名稱(例如.exe )。

編輯:實際上,我只是重讀了您的問題,而我將其放在錯誤的位置。 你真的想要:

target_link_libraries(Basic dl)

顯然,還有與pthread相關的錯誤,因此您還必須添加:

target_compile_options(Basic PUBLIC -pthread)

這兩個文件都放在包含add_library(Basic) (通常是CMakeLists.txt )的文件中。

編輯2:代替target_compile_options ,請嘗試:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM