gpt4 book ai didi

c++ - boost::filesystem 体系结构 x86_64 的 undefined symbol

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:17:11 27 4
gpt4 key购买 nike

我对使用 GNU 很陌生。我正在尝试开始使用 boost 文件系统库,但我不断收到这些错误。我正在尝试使用 boost::filesystem 获取当前工作目录。

我的代码:

boost::filesystem::path full_path( boost::filesystem::detail::current_path() );
cout << "Current path is : " << full_path << endl;

我的命令:

g++ -I boost_1_58_0 main.cpp -o example

结果:

Undefined symbols for architecture x86_64:
"boost::filesystem::detail::current_path(boost::system::error_code*)", referenced from:
_main in main-1c56eb.o
"boost::system::system_category()", referenced from:
___cxx_global_var_init2 in main-1c56eb.o
"boost::system::generic_category()", referenced from:
___cxx_global_var_init in main-1c56eb.o
___cxx_global_var_init1 in main-1c56eb.o
ld: symbol(s) not found for architecture x86_64

有人可以解释错误的原因吗?我做错了什么?

最佳答案

boost.filesystem 不是一个只有头文件的库。您必须使用 -L-l 标志链接到库。 (并确保库已经正确构建)。您需要链接到 boost_systemboost_filesystem 库。命令行可能如下所示:

g++ -Iboost_1_58_0 -Lboost_1_58_0/lib/ -lboost-filesystem -lboost_system main.cpp -o example

(将-L参数替换为libboost-filesystem.so文件所在的路径)

然后,在您能够运行可执行文件之前,您必须让加载程序知道到哪里寻找库。您可以使用以下命令执行此操作:

export DYLD_LIBRARY_PATH=/path/to/boost/bib:$DYLD_LIBRARY_PATH

要使其自动化,我建议使用像 cmake 这样的构建系统而不仅仅是命令行。

关于c++ - boost::filesystem 体系结构 x86_64 的 undefined symbol ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31881396/

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