安装ns-allinone-3.37和opengym时CMake无法找到pthread库的求助
解决NS-3编译时无法找到pthread库的CMake错误
先排查系统依赖是否缺失
pthread是Linux下的标准线程库,大概率是系统没装对应的开发包。直接在终端执行:
sudo apt-get install libpthread-stubs0-dev
(如果是RHEL/CentOS系,用sudo yum install glibc-devel)
定位具体依赖pthread的模块
先从错误日志里找线索,执行命令过滤出pthread相关错误:
cat /home/chae/ns-allinone-3.37/ns-3.37/cmake-cache/CMakeFiles/CMakeError.log | grep -i pthread
从输出里能看到是哪个检测步骤或模块在找pthread,比如是NS-3的某个核心模块,还是openGym的扩展模块。
全局修改CMake配置(不用逐个改目标)
打开主目录的CMakeLists.txt,在project(ns-3)这类项目声明语句之后,添加以下配置:
# 强制优先使用pthread set(CMAKE_THREAD_PREFER_PTHREAD ON) set(THREADS_PREFER_PTHREAD_FLAG ON) # 查找Threads库(自动关联pthread) find_package(Threads REQUIRED)
如果想让所有目标都自动链接pthread,再加上一行全局链接:
link_libraries(Threads::Threads)
如果定位到是特定模块(比如openGym相关),找到该模块的CMakeLists.txt,在target_link_libraries里加上Threads::Threads即可。
清理缓存重新编译
之前的cmake缓存可能残留错误配置,先删掉:
rm -rf cmake-cache CMakeCache.txt
然后重新执行:
cmake .
之后尝试编译验证是否解决问题。
内容的提问来源于stack exchange,提问作者채희주인공지능학과
相关产品推荐
相关产品推荐

