【问题标题】:ARM toolchain buildARM 工具链构建
【发布时间】:2012-03-27 16:31:48
【问题描述】:

我正在使用 sysroot 方法使用 GCC 4.6.3 构建一个 ARM 交叉工具链。如果我按照 LFS 的说明将 gmp、mpfr 和 mpc 源文件夹复制到 GCC 源文件夹,则构建将失败,因为即使路径正确,mpc 也无法找到 mpfr。

将 gmp、mpfr 和 mpc 手动编译为静态链接时,GCC 构建将完成且不会出现任何错误。

现在我的问题是我是否应该将 gmp、mpfr 和 mpc 安装到工具链构建目录中的随机位置,该目录在工具链完成时会被删除,因此它们仅可用于 GCC 构建的不同阶段,还是我应该指出$SYSROOT 的前缀,所以它们成为工具链的永久部分?最正确的做法是什么?

【问题讨论】:

    标签: linux gcc compiler-construction


    【解决方案1】:

    构建交叉编译器是一项乏味的任务。为什么不使用crosstool-NG 来自动化构建交叉编译器所需的所有步骤?

    【讨论】:

      【解决方案2】:

      我对交叉编译器基础架构采取了不同的方法。我有一个目录:$HOME/local,其中包含所有预期的子目录:bin/, lib/, include/, etc.$HOME/local/bin 在我的$PATH 中是(第一个),在$LD_LIBRARY_PATH 中是$HOME/local/lib(或在达尔文上是$DYLD_LIBRARY_PATH)。

      然后我在--prefix=$HOME/local 中构建并安装 gmp、mpfr、mpc,其中:

      > ./configure --prefix=$HOME/local --enable-cxx [--disable-fft]
      > ./configure --prefix=$HOME/local --with-gmp=$HOME/local
      > ./configure --prefix=$HOME/local --with-mpfr=$HOME/local --with-gmp=$HOME/local
      

      我可以为这些包使用快速、平台相关的标志,这些标志通常不适用于带有交叉 --target 三元组的 gcc:

      > env CFLAGS="-pipe -Wall -O2 -march=core2" CXXFLAGS="..." ./configure ...
      

      优势在于,无论我在何处构建交叉编译器基础架构,gmp、mpfr、mpc 库、包含等都可以访问 - 并且相同的库可用于多个交叉编译器。即,我有 4.6.x AVR、独立 x86_64-pc-elf、ARM EABI。每个使用gcc 配置选项:

      > --with-mpc=$HOME/local --with-mpfr=$HOME/local --with-gmp=$HOME/local
      

      显然,当我 fsck 构建工具链构建时(我经常这样做),至少我不必重复构建的这一部分。

      【讨论】:

        猜你喜欢
        • 2014-06-27
        • 2014-05-09
        • 2012-02-16
        • 2019-07-15
        • 2013-09-06
        • 2012-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多