Ziggo-CaaS-Switch软件配置: undefined reference to pthread_create

Ziggo-CaaS-Switch软件配置编译错误:

88%\] Built target time_sync_app Scanning dependencies of target time_sync \[ 91%\] Building C object CMakeFiles/time_sync.dir/time_sync_main_loop.c.o \[ 94%\] Linking C executable time_sync /usr/bin/ld: CMakeFiles/time_sync.dir/time_sync_main_loop.c.o: in function \`main': time_sync_main_loop.c:(.text+0x1be3): undefined reference to \`pthread_create' collect2: error: ld returned 1 exit status make\[2\]: \*\*\* \[CMakeFiles/time_sync.dir/build.make:85: time_sync\] Error 1 make\[1\]: \*\*\* \[CMakeFiles/Makefile2:80: CMakeFiles/time_sync.dir/all\] Error 2 make: \*\*\* \[Makefile:84: all\] Error 2 **错误分析:**pthread_create 属于线程库,当前链接 time_sync 时没有把线程库真正带进去,所以在最后 ld 阶段失败。其实,undefined reference to pthread_create 是典型的"编译时带了 -lpthread,但链接阶段没有正确链接线程库"的问题。你这个仓库的 CMakeLists.txt 把 -lpthread 塞进了 CMAKE_C_FLAGS,这并不可靠,尤其在可执行文件链接阶段经常失效。 **解决步骤:** 直接改交换机软件目录下的 CMakeLists.txt: xx/Ziggo-CaaS-Switch-main/Ziggo-CaaS-Switch-main/Software/Time-Synchronization/CMakeLists.txt 把末尾这两段: ```bash add_executable(time_sync time_sync_main_loop.c) target_link_libraries(time_sync ${PROJECT_NAME}) add_executable(switch_config switch_config_main.c) target_link_libraries(switch_config ${PROJECT_NAME}) ``` 改成更稳妥的写法: ```bash find_package(Threads REQUIRED) add_executable(time_sync time_sync_main_loop.c) target_link_libraries(time_sync ${PROJECT_NAME} Threads::Threads m) add_executable(switch_config switch_config_main.c) target_link_libraries(switch_config ${PROJECT_NAME} Threads::Threads m) ``` 如果你的环境里 Threads::Threads 解析有问题,也可以先用简单版本: ```bash target_link_libraries(time_sync ${PROJECT_NAME} pthread m) target_link_libraries(switch_config ${PROJECT_NAME} pthread m) ``` 然后重新构建,最好清掉原来的 build 目录重新跑一遍: ```bash cd /path/to/Software/Time-Synchronization rm -rf build mkdir build cd build cmake .. make -j ``` ![](https://i-blog.csdnimg.cn/direct/4d5e476f6afc435984e3de861a5890f8.png)

相关推荐
50万马克的面包13 小时前
三子棋小游戏(C语言详解)
c语言·开发语言·算法
程序员三明治13 小时前
【AI】Prompt 工程入门:从五要素框架到 RAG 生产级 Prompt 模板与 Java 实战
java·人工智能·后端·大模型·llm·prompt·agent
旷世奇才李先生13 小时前
React 18\+Next\.js 14实战:服务端渲染与跨端开发全指南
java·人工智能·python
跨境技工小黎13 小时前
亚马逊数据抓取怎么做?2026最新实战教程
java·大数据·数据库
01漫游者13 小时前
JavaScript继承深度解析
开发语言·javascript·ecmascript
罗超驿13 小时前
2.LeetCode 1089. 复写零——双指针解法学习笔记
java·算法·leetcode
青山师13 小时前
Java枚举深度解析:从类型安全到JVM级单例模式
java·jvm·枚举·javase·java面试·java核心
雨辰AI13 小时前
SpringBoot3 + 人大金仓 V9 全栈日志实战:Logback + Loki + Filebeat 构建统一日志平台
java·数据库·后端·云原生·eureka·logback·政务
超梦dasgg13 小时前
java微服务项目的架构和链路串联
java·微服务·架构
SamDeepThinking13 小时前
打造高效团队的四个关键动作
java·后端·团队管理