gpt4 book ai didi

c++ - 在 boost 二进制文件上使用显式位置编译 boost 标志

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:20:49 25 4
gpt4 key购买 nike

我正在编译一个需要boost::filesystem 的项目。我在编译步骤中包含了以下标志:

g++ -Wall -ggdb -Werror -std=c++11 -lboost_system 
-lboost_filesystem -I /custom/path/to/boost_1_67_0
-o build/main build/cp.o build/walk.o build/diff.o build/main.o

我得到一个错误:

build/cp.o: In function `boost::filesystem::relative(boost::filesystem::path const&, boost::filesystem::path const&)':
/custom/path/boost_1_67_0/boost/filesystem/operations.hpp:690: undefined reference to `boost::filesystem::detail::relative(boost::filesystem::path const&, boost::filesystem::path const&, boost::system::error_code*)'
build/cp.o: In function `boost::filesystem::weakly_canonical(boost::filesystem::path const&)':
/custom/path/boost_1_67_0/boost/filesystem/operations.hpp:728: undefined reference to `boost::filesystem::detail::weakly_canonical(boost::filesystem::path const&, boost::system::error_code*)'
collect2: error: ld returned 1 exit status
make: *** [build] Error 1

我怀疑这是因为我有各种其他 boost::filesystem 二进制文件,其中一些没有 relativeweakly_canonical 在他们的版本中。我也不知道在哪里提供参数来指定二进制文件的位置。我怀疑这与标志 lboost_systemlboost_filesystem 有关,我可以在其中提供位置。

我目前正在构建 .so,但我可以看到文件系统 .so 已经成功构建在 /custom/path/boost_1_67_0/bin.v2/libs/filesystem/build/gcc-4.8.5/release/threading-multi/libboost_filesystem.so.1.67.0, 所以我想同时指出这一点。构建库需要很长时间。

那么我可以扩展的是 -lboost_{libname} 标志吗?是 -I 标志吗?

编辑:既然在构建期间由 --prefix 指定的二进制位置已经完成,我尝试了同样的事情,即使使用 -L 但它没有用.请参阅下面我对 LD_LIBRARY_PATH 解决方案的回答。

最佳答案

我有一个解决方案,但它并不完美:

我怀疑这是因为在 $LD_LIBRARY_PATH 中指定了另一个 boost 库二进制文件,我无法使用 -L /custom/path/... 优先加载我自己的库.

因此,我做了:

export LD_LIBRARY_PATH=/custom/path/...:$LD_LIBRARY_PATH

而且有效。

这绝不是一个好的答案,因为如果没有 LD_LIBRARY_PATH,它并不能真正使这个构建过程对用户可移植。旗帜。更好的答案将被批准而不是这个。

关于c++ - 在 boost 二进制文件上使用显式位置编译 boost 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50705811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com