如果我搜索包含文件 libusb.h 的文件,
$grep -r "libusb.h" /usr/local/lib/
我明白了:
二进制文件/usr/local/lib//libusb-1.0.0.dylib匹配
二进制文件/usr/local/lib//libusb-1.0.a匹配
二进制文件/usr/local/lib//libusb-1.0.dylib匹配
但是当我编写课程时,我得到了:
test.cpp:2:10: fatal error: 'libusb.h' file not found
#include <libusb.h>
现在我知道这是因为没有正确包含 / usr / local / lib 文件夹。我尝试了以下等等,但似乎没有什么能解决它。
gcc -lusb test.cpp
C_INCLUDE_PATH=/usr/local/lib
export C_INCLUDE_PATH
感谢你的帮助,我提出了这个命令......
gcc test.cpp -I/usr/local/include -L/usr/local/lib -lusb-1.0
但现在我明白了......
ld: symbol(s) not found for architecture x86_64
我尝试添加
-stdlib = ++的libstdc
但这似乎也没有帮助。
答案 0 :(得分:2)
包含lib路径在这里不会帮到你。 lib路径包含您链接的二进制文件的路径。
您需要找到 include 路径,该路径提供您链接的lib的导出符号的声明。
一个共同的分布(不是一成不变的!),是:
lib/ (binaries to link against)
include/ (declarations are here!)
bin/ (.so on *nix or .dll or Windows)
答案 1 :(得分:1)
我可能在这里打死马。但是我有同样的问题,列出的解决方案对我不起作用。如果你在同一条船上,这就是我最终的工作:
gcc -I /usr/include/libusb-1.0/ -lusb-1.0 example.c
答案 2 :(得分:0)
这有效......
gcc -std=c++0x -stdlib=libc++ -I/usr/local/include -L/usr/local/lib -lusb-1.0 -lstdc++ test.cpp
您也可以切换到Clang。这有效:
clang++ -std=c++0x -stdlib=libc++ -I/usr/local/include -L/usr/local/lib -lusb-1.0 test.cpp
有关详情,请参阅评论。