我正在使用sysroot方法使用GCC 4.6.3构建ARM交叉工具链。如果我按照LFS指令并将gmp,mpfr和mpc源文件夹复制到GCC源文件夹,则构建将失败,因为即使路径正确,mpc也无法找到mpfr。
当手动编译gmp,mpfr和mpc作为静态链接时,GCC构建将完成而没有任何错误。
现在我的问题是我是否应该将gmp,mpfr和mpc安装到工具链构建目录中的一个随机位置,当工具链完成时会被删除,所以它们只适用于GCC构建的不同阶段,或者我应该指向$ SYSROOT的前缀使它们成为工具链的永久部分?什么是最正确的事情?
答案 0 :(得分: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
显然,当我建立一个工具链构建(我经常这样做)时,至少我不必重复这部分构建。
答案 1 :(得分:0)
构建交叉编译器是一项繁琐的工作。为什么不使用crosstool-NG来自动化构建交叉编译器所需的所有步骤?