我想编译使用多线程的gtkmm程序。我用这个例子来测试多线程。
不幸的是,我在编译时遇到了一些链接错误:
//usr/bin/ld:src/multithreadingandprogress.p/multithreadlingandprogress window.cpp.o:对符号'pthread_create@@GLIBC_2.2.5'的未定义引用
和:
/usr/bin/ld:/lib/x86_64-linux-gnu/libphread.so.0:添加符号时出错:命令行中缺少DSO
我想我需要一些LDFLAGS或一些环境变量来设置??有人知道如何为这个任务设置gnome生成器来编译吗?
有什么帮助吗?Thx
我在gtkmm-3.0中构建相同的教程时遇到了类似的问题。在CMake文件中添加以下行解决了此问题。
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
如果您不使用CMake,则需要手动为编译器添加此标志。
在linux系统中使用线程的完整CMake必须包含以下命令:
set(CMAKE_THREAD_LIBS_INIT "-lpthread")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
set(CMAKE_HAVE_THREADS_LIBRARY 1)
set(CMAKE_USE_WIN32_THREADS_INIT 0)
set(CMAKE_USE_PTHREADS_INIT 1)
set(THREADS_PREFER_PTHREAD_FLAG ON)
请查看此链接,了解有关CMake的更完整方法。