3.2. crosstool-ng本身的配置的使用的基本逻辑

从之前介绍的第 3.1.3 节 “用ct-ng list-samples查看当前已包含哪些默认的示例配置”,我们可以看出

对于常见的架构,比如arm,mips,powerpc等等,都有了很多的,已经帮我验证过,可以正常编译的示例配置了

所以,我们接下来,主要就是:

搞懂自己借用哪个配置,然后调用默认配置,然后再确认一下配置,根据自己的情况去改一改,就差不多,就配置好了。

下面介绍,如何去配置crosstool-ng的主要的两种情况:

下面就来详细阐述其含义:

3.2.1. 使用已有的crosstool-ng的示例配置

很多时候,我们用crosstool-ng去编译我们要的交叉编译器的时候,所针对的CPU,目标运行环境,想要用的C库等等,

很可能,和之前上面看到的某个配置,是一样的。

此时,我们所要做的事情,其实就是直接拿来用即可。

比如,我们想要针对cortex-a8这款CPU,去编译一个交叉编译器,那么你就会发现,其实默认已有此配置了:

arm-cortex_a8-linux-gnueabi

在使用之前,也是可以先去看看,该配置的主要参数是哪些:


CLi@PC-CLI-1 ~/develop/crosstool-ng/crosstool-ng-1.18.0_build
$ ct-ng show-arm-cortex_a8-linux-gnueabi
[G..]   arm-cortex_a8-linux-gnueabi
    OS             : linux-3.7.3
    Companion libs : gmp-4.3.2 mpfr-2.4.2 ppl-0.10.2 cloog-ppl-0.15.9 libelf-0.8.13
    binutils       : binutils-2.20.1a
    C compiler     : gcc-4.4.6 (C,C++)
    C library      : glibc-2.9 (threads: nptl)
    Tools          : dmalloc-5.5.2 duma-2_5_15 gdb-6.8a ltrace-0.5.3 strace-4.5.19

        

然后,你就可以直接去调用此配置了:

ct-ng arm-cortex_a8-linux-gnueabi

实际输出,是类似于这样的:


CLi@PC-CLI-1 ~/develop/crosstool-ng/crosstool-ng-1.18.0_build
$ ct-ng arm-cortex_a8-linux-gnueabi
  LN    config
  MKDIR config.gen
  IN    config.gen/arch.in
  IN    config.gen/kernel.in
  IN    config.gen/cc.in
  IN    config.gen/binutils.in
  IN    config.gen/libc.in
  IN    config.gen/debug.in
  CONF  config/config.in
#
# configuration saved
#
 
***********************************************************
 
Initially reported by: Yann E. MORIN
URL: http://ymorin.is-a-geek.org/
 
***********************************************************
 
Now configured for "arm-cortex_a8-linux-gnueabi"

        

一些实际折腾的过程,可参考:

【记录】重试使用最新版本1.18.0的crosstool-ng去配置和编译xscale的交叉编译器

接下来,你就可以去进入配置:

ct-ng menuconfig

去确认一下,是否是完全符合你的要求。

如果有什么个别的配置不满意,再去修改为你自己想要的即可。

3.2.2. 根据需要去修改你的crosstool-ng的配置

很多时候,已经的哪些示例配置,未必完全符合你的需要,这时候,你就只能是:

找个和你的情况最接近的一个示例配置,然后再去基于此配置,去修改成你所要的。

比如,我之前折腾,为TQ2440的S3C2440的CPU,其是arm920t的核

去配置crosstool-ng的时候,就发现,默认的配置中,没有完全合适的。

然后就一点点去调查,而最后搞清楚了,在已有的,arm相关的配置中,davinci,是相对来说,比较接近此处的arm920t的了。

所以,就去调用davinci的默认配置:

ct-ng arm-davinci-linux-gnueabi

然后再按照自己的需求,进入:

ct-ng menuconfig

后,去根据自己的需要,再去确认配置,和修改配置,为自己所需要的。

详细过程参见:

【记录】Cygwin下为arm920t配置crosstool-ng