CMake中使用pkg-config调用uSockets库提示‘library uSockets not found’求助
解决CMake中pkg-config找不到uSockets库的问题
修复.pc文件的Libs字段格式错误
你的uSockets.pc里Libs: -L${libdir} -l uSockets存在格式问题:-l和库名之间不能有空格,链接器会把空格后的uSockets当成普通文件名而非库名。修改为:Libs: -L${libdir} -luSockets让pkg-config定位到你的.pc文件
pkg-config默认只搜索系统预设路径(如/usr/lib/pkgconfig)和PKG_CONFIG_PATH环境变量包含的路径。如果你的uSockets.pc不在这些路径里,两种解决方式:- 运行CMake前临时设置环境变量:
export PKG_CONFIG_PATH=/你的uSockets.pc所在目录绝对路径:$PKG_CONFIG_PATH - 在CMake代码里指定路径,放在
pkg_check_modules调用前:set(PKG_CONFIG_PATH "${CMAKE_CURRENT_SOURCE_DIR}/你的uSockets.pc所在相对目录" ${PKG_CONFIG_PATH})
- 运行CMake前临时设置环境变量:
替换.pc文件中的相对路径
你用的prefix=../include/uSockets是相对路径,CMake如果采用out-of-source构建(比如单独的build文件夹),pkg-config解析路径时会出错。换成绝对路径更可靠:prefix=/absolute/path/to/include/uSockets最后确认库文件的有效性
确保libuSockets.a确实在${prefix}/libs目录下,同时检查库的架构和你的项目匹配(比如项目是64位,库不能是32位)。
内容的提问来源于stack exchange,提问作者Zajebany Sifl
相关产品推荐
相关产品推荐

