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 这样的构建工具来为您处理这些底层细节。
有类似的问题,但他们的回答对我的问题不起作用。
我有一个 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 这样的构建工具来为您处理这些底层细节。