Linux工具链

2020-10-23  本文已影响0人  汪大星

Linux工具链通常来源于GNU project或Clang/LLVM project。其中LLVM使用BSD license,而GNU使用GPL license。

一个标准的GNU工具链包括三个部分:

GNU工具链的前缀通常由四部分组成:

C库的种类:

使用crosstool-NG(https://github.com/crosstool-ng/crosstool-ng)可以编译出交叉编译工具链

git clone https://github.com/crosstool-ng/crosstool-ng/crosstool-ng.git
cd crosstool-ng
git checkout crosstool-ng-1.24.0
./bootstrap
./configure --enable-local
make
make install
./ct-ng show-arm-unknown-linux-gnueabi
./ct-ng arm-unknown-linux-gnueabi
./ct-ng build

C库的组成

C库的使用
除了libc,其它都需要在使用时用-l指明,如使用libm

arm-unknown-linux-gnueabi-gcc myapp.c -o myapp -lm

使用readelf可以验证myapp使用了libm

 arm-unknown-linux-gnueabi-readelf -a myapp

在平常的程序编译过程中,除了Linux工具链,我们还需要一份Linux内核头文件,因为其中包含的一些定义和常量是访问内核时所必须的。我们需要它来编译C库,也需要它来编译一些和设备打交道的程序和库。

上一篇 下一篇

猜你喜欢

热点阅读