2

我正在尝试在 Mac Big Sur Mac OS 10.11 上为 ARM64 构建 avrocpp。安装 boost 并下载 avro-cpp 后,当我从 avro 目录运行 build.sh 进行构建时,在编译 avro 的 DataFile.cpp 时出现以下错误(以及更多错误):

**Undefined symbols for architecture arm64:
  "boost::iostreams::zlib_error::check(int)", referenced from:
      long boost::iostreams::symmetric_filter<boost::iostreams::detail::zlib_compressor_impl<std::__1::allocator<char> >, std::__1::allocator<char> >::write<boost::iostreams::detail::linked_streambuf<char, std::__1::char_traits<char> > >(boost::iostreams::detail::linked_streambuf<char, std::__1::char_traits<char> >&, char const*, long) in DataFile.o**

所有错误都在 boost::iostream -> zlib 压缩器或解压缩器中

到目前为止,由于 Homebrew 不支持 Mac Big sur 进行 boost (boost: fix arm64 build https://github.com/Homebrew/homebrew-core/pull/59257 ),并且在构建 boost zlib 和 avrocpp 时出现错误,我正在尝试构建源代码但收到错误,这是我迄今为止尝试过的

  1. 使用 architecture=arm 构建的 boost 1.74 并且还验证了创建的库是 arm64 (lipo -archs)

  2. 在 avro 目录中,修改 build.sh 修改的 'xcode-test' 并添加架构。这是修改后的命令

    xcode-test) mkdir -p build.xcode (cd build.xcode
    && cmake -G Xcode ..
    && xcodebuild -verbose ARCHS="arm64" ONLY_ACTIVE_ARCH=YES -configuration Release ) ;;

  3. 还要更新 CMakeLists.txt 以指向我的 boost 目录。添加的行:

    项目(Avro-cpp)设置(Boost_NO_SYSTEM_PATHS TRUE)如果(Boost_NO_SYSTEM_PATHS)设置(BOOST_ROOT“/Users/a/Downloads/boost_1_74_0”)设置(Boost_DIR“/Users/a/Downloads/boost_1_74_0”)设置(BOOST_INCLUDE_DIRS“${BOOST_ROOT }/boost") 设置(BOOST_LIBRARY_DIRS "${BOOST_ROOT}/stage_mac32_64/lib") 设置(Boost_LIBRARY_DIR_RELEASE "${BOOST_ROOT}/stage_mac32_64/lib") endif (Boost_NO_SYSTEM_PATHS)

  4. 运行命令:./build.sh xcode-test 在 boost::iostream ->zlib 中返回相同的错误

  5. 下载了 zlib 源,我尝试通过指定 zlib 源来构建 boost::iostream,同样的错误。命令:

./b2 --toolset=clang --with-iostreams --layout=versioned --build-type=complete threading=multi runtime-link=static architecture=arm address-model=64 --stagedir=stage_mac32_64 stage --debug -configuration -s ZLIB_SOURCE="/Users/a/Downloads/zlib-1.2.11"

如果有人尝试在 Mac big sur 上为 arm64 构建 avrocpp 请帮助。

4

0 回答 0