编译阶段:架构与工具链类报错
报错现象 1:undefined reference to xxx 架构符号找不到
编译时报大量未定义引用,明明库文件已经放置到指定路径,-L 链接参数也配置完成,依旧提示符号缺失。 排查方向
- 确认 gcc、g++ 工具链是鲲鹏 aarch64 专用版本,不要混用 x86 编译工具,交叉编译环境容易出现该问题。
- 检查 BoostKit 组件库文件架构,执行
file 库名.so核对输出为 aarch64;部分离线包解压后存在残留 x86 架构旧库,会干扰链接过程。 - 调整编译优先级,BoostKit 相关库放在链接参数靠后位置,避免系统原生库优先覆盖。
报错现象 2:BoostKit 头文件找不到 fatal error:xxx.h: No such file
已经解压部署 BoostKit 套件,CMake 依然提示头文件不存在。 排查方向
- 核对环境变量
CPLUS_INCLUDE_PATH、C_INCLUDE_PATH是否正确导入 BoostKit 的 include 目录,临时 shell 配置重启终端会失效,建议写入 profile 持久化。 - 离线部署场景,部分组件子目录嵌套层级深,不要只配置根目录,需要确认对应模块的 include 真实路径。
- CMake 项目需要显式指定
INCLUDE_DIRECTORIES,仅配置系统环境变量,部分工程不会自动读取。
运行时:动态库加载报错
报错现象:error while loading shared libraries,cannot open shared object file
程序启动提示无法打开 BoostKit 的 so 共享库,ldd 查看显示 not found,但文件物理真实存在。 排查方向
- 更新系统动态链接缓存:
ldconfig,如果是自定义路径,把 BoostKit lib 目录写入/etc/ld.so.conf.d/下配置文件。 - 临时调试可以通过 export LD_LIBRARY_PATH 指定库路径,适合快速验证,不建议生产环境长期依赖该临时变量。
- 权限校验:库文件缺少读执行权限,也会表现为找不到库,chmod 补全文件权限。
编译阶段:架构与工具链类报错
报错现象 1:undefined reference to xxx 架构符号找不到
编译时报大量未定义引用,明明库文件已经放置到指定路径,-L 链接参数也配置完成,依旧提示符号缺失。 排查方向
file 库名.so核对输出为 aarch64;部分离线包解压后存在残留 x86 架构旧库,会干扰链接过程。报错现象 2:BoostKit 头文件找不到 fatal error:xxx.h: No such file
已经解压部署 BoostKit 套件,CMake 依然提示头文件不存在。 排查方向
CPLUS_INCLUDE_PATH、C_INCLUDE_PATH是否正确导入 BoostKit 的 include 目录,临时 shell 配置重启终端会失效,建议写入 profile 持久化。INCLUDE_DIRECTORIES,仅配置系统环境变量,部分工程不会自动读取。运行时:动态库加载报错
报错现象:error while loading shared libraries,cannot open shared object file
程序启动提示无法打开 BoostKit 的 so 共享库,ldd 查看显示 not found,但文件物理真实存在。 排查方向
ldconfig,如果是自定义路径,把 BoostKit lib 目录写入/etc/ld.so.conf.d/下配置文件。