C++编译器安装了Boost库但仍找不到

3
在编译一些测试应用程序时,我遇到了以下错误:
g++: error: −lboost_system: No such file or directory
g++: error: −lboost_filesystem: No such file or directory

在运行以下命令时:
g++ -I/usr/include/boost/ -L/usr/lib/x86_64-linux-gnu/  aescuda.cpp -o test.o −lboost_system −lboost_filesystem

这些库已安装并位于如下位置:

<prompt>$ ll  /usr/lib/x86_64-linux-gnu/libboost_system.*
-rw-r--r-- 1 root root 49178 Jun 20  2014 /usr/lib/x86_64-linux-gnu/libboost_system.a
lrwxrwxrwx 1 root root    25 Jun 20  2014 /usr/lib/x86_64-linux-gnu/libboost_system.so -> libboost_system.so.1.54.0
-rw-r--r-- 1 root root 14536 Jun 20  2014 /usr/lib/x86_64-linux-gnu/libboost_system.so.1.54.0
<prompt>$ ll  /usr/lib/x86_64-linux-gnu/libboost_filesystem.*
-rw-r--r-- 1 root root 217628 Jun 20  2014 /usr/lib/x86_64-linux-gnu/libboost_filesystem.a
lrwxrwxrwx 1 root root     29 Jun 20  2014 /usr/lib/x86_64-linux-gnu/libboost_filesystem.so -> libboost_filesystem.so.1.54.0
-rw-r--r-- 1 root root  88936 Jun 20  2014 /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.54.0

有人能建议我错在哪里吗 :(

1
安装时是否运行了 ldconfig 命令? - stark
是的,我已经执行了ldconfig。现在我面临以下问题... obj / x86_64 / release / aescuda.cpp.o:在函数“_GLOBAL__sub_I_aescuda.cpp”中: aescuda.cpp:(.text.startup + 0x68b):对“boost :: system :: generic_category()”的未定义引用] ...有什么建议吗? - sam
1个回答

3
你在 l 前面有一个错误的字符:
−lboost_system

应该是一个ASCII连字符:
-lboost_system

这会导致编译器将整个字符串视为输入文件名(显然不存在,因此出现“无此文件或目录”错误),而不是要传递给链接器的选项。

(考虑更改终端字体。)


谢谢,这很有帮助。但现在又出现了另一个错误: **obj/x86_64/release/aescuda.cpp.o: 在函数_GLOBAL__sub_I_aescuda.cpp'中: aescuda.cpp:(.text.startup+0x68b): 未定义的参考boost::system::generic_category()**。你有什么建议吗? - sam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接