PopOS系统下cmake编译项目时ld无法找到lXrandr等依赖库如何解决
问题解决方案
问题根源
- 你找到的
/usr/bin/xrandr是工具的可执行文件,编译链接阶段需要的是对应库的开发文件,Debian系系统会把运行时库和开发头文件/链接文件分开打包,你目前缺少这三个依赖对应的开发包 - 直接用
sudo执行cmake和编译操作会导致生成的构建文件权限异常,后续会触发更多非代码类问题,不要这么操作 - 你自行源码编译安装的cmake没有经过dpkg包管理器注册,所以
dpkg -l cmake查询不到记录是正常现象,不影响正常使用
解决步骤
- 先清理之前用sudo生成的存在权限问题的build目录,退回项目源码根目录执行:
sudo rm -rf build mkdir build cd build
- 安装缺失的依赖开发包,PopOS基于Ubuntu软件源,直接执行如下命令安装即可:
sudo apt update sudo apt install libxrandr-dev libxinerama-dev libfontconfig1-dev
- 重新执行编译安装流程,cmake和编译步骤不要加sudo,只有最终安装到系统目录的步骤需要加sudo:
cmake .. cmake --build . --config Release sudo cmake --install .
注:如果项目不需要安装到系统全局路径,最后一步可以不用加sudo,自行指定本地安装路径即可
补充说明
你之前调整LD_LIBRARY_PATH无效是因为该变量是程序运行时动态加载器找运行时库用的,编译链接阶段ld查找库不依赖该变量,遇到同类cannot find -lxxx报错时,直接安装xxx对应的开发包即可解决。
内容的提问来源于stack exchange,提问作者geekygekko
相关产品推荐
相关产品推荐

