Ubuntu Trusty Tahr编译ttwatch时make无法找到libusb求助
嘿,作为同样在老Ubuntu版本上踩过编译坑的C/C++开发者,我来帮你搞定这个libusb找不到的麻烦!你已经装了必要的依赖包,cmake也能正常跑,但make就卡壳,大概率是cmake没正确识别到libusb的路径,或者系统链接库的缓存没更新,试试下面这些步骤:
先确认libusb的安装状态
先在终端跑这个命令,看看pkg-config能不能找到libusb:pkg-config --libs libusb-1.0如果输出是
-lusb-1.0之类的结果,说明pkg-config能识别到;要是没输出或者报错,那得手动给cmake指定路径了。手动给cmake指定libusb路径
Ubuntu Trusty上,libusb-1.0的头文件一般在/usr/include/libusb-1.0,库文件在/usr/lib/x86_64-linux-gnu/libusb-1.0.so(32位系统是/usr/lib/i386-linux-gnu/libusb-1.0.so)。你可以重新运行cmake,手动指定这些路径:cmake -DLIBUSB_INCLUDE_DIR=/usr/include/libusb-1.0 -DLIBUSB_LIBRARY=/usr/lib/x86_64-linux-gnu/libusb-1.0.so .之后再运行
make试试。更新系统链接库缓存
有时候装完-dev包后,系统的动态链接库缓存没更新,导致make时找不到库。跑一下这个命令:sudo ldconfig之后重新执行
cmake .和make,说不定就正常了。检查CMakeLists.txt的配置
打开ttwatch项目里的CMakeLists.txt,确认里面有没有正确引入libusb的代码:
比如应该有类似这样的片段:find_package(libusb-1.0 REQUIRED) include_directories(${LIBUSB_INCLUDE_DIRS}) target_link_libraries(ttwatch ${LIBUSB_LIBRARIES})如果没有的话,手动加上这些内容,再重新cmake和make。
如果以上步骤都试过还是不行,建议把make时弹出的具体错误信息贴出来(比如是“undefined reference to libusb_xxx”还是“fatal error: libusb.h: No such file or directory”),这样能更精准地定位问题~
内容的提问来源于stack exchange,提问作者tinwhiskers

