[英]boost/filesystem.hpp not linking in osx boost installed via homebrew
[英]How to use boost when installed via homebrew?
這可能是一個非常基本的問題,但這是我第一次遇到這樣的問題。 我正在使用 M1 macOS Big Sur。 我正在嘗試為我的程序運行 boost 庫。 我已經使用arch -arm64 brew install boost
。
當我嘗試編譯以下程序時:
#include <boost/multiprecision/cpp_int.hpp>
using namespace boost::multiprecision;
using namespace std;
int128_t boost_product(long long A, long long B)
{
int128_t ans = (int128_t)A * B;
return ans;
}
int main()
{
long long first = 98745636214564698;
long long second = 7459874565236544789;
cout << "Product of " << first << " * " << second
<< " = \n"
<< boost_product(first, second);
return 0;
}
和
$ g++ --version
Apple clang version 12.0.5 (clang-1205.0.22.11)
Target: arm64-apple-darwin20.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
我收到以下錯誤:
boost.cpp:1:10: fatal error: 'boost/multiprecision/cpp_int.hpp' file not found
#include <boost/multiprecision/cpp_int.hpp>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
這是我在 go 進入/opt/homebrew/lib:
cmake libboost_log-mt.dylib libboost_serialization.a libgettextsrc-0.21.dylib
gcc libboost_log.a libboost_serialization.dylib libgettextsrc.dylib
gettext libboost_log.dylib libboost_stacktrace_addr2line-mt.a libgmp.10.dylib
libasprintf.0.dylib libboost_log_setup-mt.a libboost_stacktrace_addr2line-mt.dylib libgmp.a
libasprintf.a libboost_log_setup-mt.dylib libboost_stacktrace_addr2line.a libgmp.dylib
libasprintf.dylib libboost_log_setup.a libboost_stacktrace_addr2line.dylib libgmpxx.4.dylib
libboost_atomic-mt.a libboost_log_setup.dylib libboost_stacktrace_basic-mt.a libgmpxx.a
libboost_atomic-mt.dylib libboost_math_c99-mt.a libboost_stacktrace_basic-mt.dylib libgmpxx.dylib
...
當我 cd 進入 cmake 時,我看到有一堆Boost_...
前綴文件。
看起來我在我的電腦上有了提升,但是我如何在我的程序中使用它並用 g++ 編譯它?
我發現自制軟件正在向/opt/homebrew/Cellar/boost/1.79.0_1/include/boost
添加文件。 確定位置后,我只需使用帶有標志的代碼進行編譯
g++ -I/opt/homebrew/Cellar/boost/1.79.0_1/include/boost...
並確保我的包含語句引用了適當的.hpp 文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.