Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从源代码生成链接器时出错_C++_Cmake_Linux Mint - Fatal编程技术网

C++ 从源代码生成链接器时出错

C++ 从源代码生成链接器时出错,c++,cmake,linux-mint,C++,Cmake,Linux Mint,我正在尝试从源代码构建应用程序。我可以使用“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

我正在尝试从源代码构建应用程序。我可以使用“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\u EXE\u LINKER\u FLAGS=-ldl
传递给CMake可执行文件。要更改CMake构建脚本,请添加以下内容:

target_link_libraries(target_name dl)
其中,
target\u name
基本上是没有任何扩展名的可执行文件名(例如,
.exe

编辑:事实上,我刚刚重读了你的问题,我把它放错地方了。你真的想要:

target_link_libraries(Basic dl)
显然,还存在与pthread相关的错误,因此您还必须添加:

target_compile_options(Basic PUBLIC -pthread)
无论哪个文件包含
add\u library(Basic)
(通常是
CMakeLists.txt
),这两个文件都会被放入其中

编辑2:尝试以下操作,而不是
目标编译选项

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

谢谢所以我应该在CMakeLists.txt中添加target_link_库(target_name dl)?目标的名字应该是od-batch-launcher?对不起,我对CMake不太舒服。太好了!有些进步!!与“dlopen”等相关的错误;你走了。但是,我无法添加目标编译选项。我在src/Basic/CMakeLists.txt:116(target\u compile\u options)处发现:CMake错误:target\u compile\u options用无效参数调用谢谢!添加PUBLIC也允许cmake通过。但是,我仍然得到:../../bin/lux64/Release/libBasic.so:当我运行make时,对'pthread_sigmask'的引用未定义。@user2984140您可以尝试使用
set(CMAKE_CXX_FLAGS“${CMAKE_CXX_FLAGS}-pthread”)
而不是
target_compile_options