boost::filesystem 未定义的体系结构符号 x86_64
boost::filesystem Undefined symbols for architecture x86_64
我对使用 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
标志 link 到图书馆。 (并确保库已经正确构建)。您需要 link 到 boost_system
和 boost_filesystem
图书馆。
命令行可能如下所示:
g++ -Iboost_1_58_0 -Lboost_1_58_0/lib/ -lboost-filesystem -lboost_system main.cpp -o example
(将-L
参数替换为libboost-filesystem.so
文件所在的路径)
然后,在您能够 运行 可执行文件之前,您必须让加载程序知道到哪里寻找库。您 shell 可以使用以下命令执行此操作:
export DYLD_LIBRARY_PATH=/path/to/boost/bib:$DYLD_LIBRARY_PATH
为了让它自动运行,我建议使用像 cmake
这样的构建系统,而不仅仅是命令行。
我对使用 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
标志 link 到图书馆。 (并确保库已经正确构建)。您需要 link 到 boost_system
和 boost_filesystem
图书馆。
命令行可能如下所示:
g++ -Iboost_1_58_0 -Lboost_1_58_0/lib/ -lboost-filesystem -lboost_system main.cpp -o example
(将-L
参数替换为libboost-filesystem.so
文件所在的路径)
然后,在您能够 运行 可执行文件之前,您必须让加载程序知道到哪里寻找库。您 shell 可以使用以下命令执行此操作:
export DYLD_LIBRARY_PATH=/path/to/boost/bib:$DYLD_LIBRARY_PATH
为了让它自动运行,我建议使用像 cmake
这样的构建系统,而不仅仅是命令行。