CMake编译树莓派pigpio项目出现函数未定义引用错误如何解决?
问题原因
该错误属于链接阶段错误,你引入Findpigpio.cmake后仅完成了pigpio路径探测,没有将pigpio的库文件关联到你的项目编译目标上。Findpigpio.cmake执行成功后通常会导出两个核心变量:
PIGPIO_INCLUDE_DIR:pigpio头文件所在路径PIGPIO_LIBRARY:pigpio的库文件路径
你当前的配置没有将pigpio库链接到最终的可执行文件,因此链接器无法找到pigpio相关函数的实现。
修复方案
直接修改你的CMakeLists.txt,添加链接pigpio库的配置即可,修改后完整内容如下:
cmake_minimum_required(VERSION 3.0.0) project(RPapp C) include(pigpio/util/Findpigpio.cmake) include_directories(inc ${PIGPIO_INCLUDE_DIR}) set(CMAKE_C_STANDARD 11) add_executable(RPapp ${PROJECT_SOURCE_DIR}/src/main.c ${PROJECT_SOURCE_DIR}/src/gpio.c ${PROJECT_SOURCE_DIR}/src/spi.c) # 新增以下行,将pigpio库链接到你的编译目标 target_link_libraries(RPapp ${PIGPIO_LIBRARY})
生效验证
修改完成后删除旧的构建缓存,重新执行构建流程即可:
rm -rf _build && mkdir _build && cd _build cmake .. make
如果修改后仍然报错,可以打开pigpio/util/Findpigpio.cmake文件,查看模块导出的库变量名是否为PIGPIO_LIBRARY,如果是其他名称(比如PIGPIO_LIBRARIES、pigpio_LIBRARY),替换成对应名称即可。
内容的提问来源于stack exchange,提问作者TrivialCase
相关产品推荐
相关产品推荐

