[英]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.