C++ 文件编译:-L 和 -I 参数不适用于 boost 库

C++ file compiling: -L and -I arguments don't work for boost library

有类似的问题,但他们的回答对我的问题不起作用。 我有一个 C++ 程序,上面有 #include <boost/test/unit_test.hpp>(包括其他内容)。

要正确编译,如果我理解的话,我应该执行命令:

g++ -g -L/path_to_boost_lib -lboost_lib myprog.cpp -o myprog.exe

如果我定位,我会得到 /usr/lib/x86_64-linux-gnu/libboost_unit_test_framework.so. 因此,我通过以下方式编辑了对 g++ 的调用:

g++ -g -L/usr/lib/x86_64-linux-gnu -lboost_unit_test_framework myprog.cpp -o myprog.exe

但我仍然收到类型为 undefined reference to boost::unit_test 的错误。

我也尝试了包含 boost 文件夹的选项 -I/usr/include/,但没有成功。

是因为订单。 GCC 链接器从左到右遍历工件,它在目标文件中遇到的每个未知符号都必须由随后出现的工件解析。

正确的命令是:

g++ -g myprog.cpp -L/usr/lib/x86_64-linux-gnu -lboost_unit_test_framework -o myprog.exe

请参阅 this answer 以获得更详尽的解释。

我建议使用像 CMake 这样的构建工具来为您处理这些底层细节。