ARM 工具链构建

问题描述 投票:0回答:2

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

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

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

linux gcc cross-compiling
2个回答
0
投票

我对交叉编译器基础设施采取了不同的方法。我有一个目录:

$HOME/local
,包含所有预期的子目录:
bin/, lib/, include/, etc.
$HOME/local/bin
(第一个)在我的
$PATH
中,
$HOME/local/lib
$LD_LIBRARY_PATH
中(或达尔文上的
$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

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


0
投票

构建交叉编译器是一项繁琐的任务。为什么不使用 crosstool-NG 自动执行构建交叉编译器所需的所有步骤?

© www.soinside.com 2019 - 2024. All rights reserved.