linux下的交叉编译工具使用


本文档是关于自己在学习工作中记录。分享与大家,如有纰漏,希望能有高手指出,共同进步。

1.设置环境变量

提供工具链下载地址,根据自己的需求去下载不同的工具链。
ARM工具链下载地址:
GUN Toolchain
工具链下载完成之后解压,一般是解压到~目录
提供两个解压命令:

tar xzvf arm-linux-xxxx.tar.gz
tar xjvf arm-linux-xxxx.tar.bz2

解压完成之后设置环境变量,可以在解压的目录/bin/目录下去看看,是不是有许多可使用的工具。
接下来就是设置环境变量,此处讲的是在bashrc文件中永久的修改编译器的环境变量。当你修改之后,想再次更换,重新修改bashrc即可。
用vi或则文本编辑器编辑bashrc:

vim  ~/.bashrc
gedit ~/.bashrc 

在文件的末尾添加你的交叉工具链的bin路径。例如:
export PATH=$PATH:/home/book/gcc-arm-none-eabi-9-2019-q4-major/bin
具体实际的目录需要自行修改,保存之后,一定要关闭当前终端,重新打开一个终端窗口,输入

source ~/.bashrc

命令使其生效,这条命令是加载这些设置的环境变量。
当设置好之后,可以通过来检验一下。输入对应的bin文件夹下面的工具,比如:arm-linux-xxxx-gcc -v,来查看自己的设置工具链版本号,是否是与自己设置的一致。

2.工具链的使用

常用选项描述
-E预处理,开发过程中想快速确定某个宏可以使用“-E -dM”
-c把预处理、编译、汇编都做了,但是不链接
-o指定输出文件
-I指定头文件目录
-l指定链接哪一个库文件
-L指定链接时库文件目录

注意:arm的工具链一般为arm-xxxx-xxx-gcc(或其他工具链)后面同一用gcc代替。

1.编译连接一步到位:

gcc -o testApp  main.c 

2.动态库的制作、使用:
制作编译:

gcc -c -o main.o main.c
gcc -c -o sub.o sub.c
gcc -shared -o libsub.so sub.o sub2.o sub3.o(可以使用多个.o 生成动态库)
gcc -o test main.o -lsub -L /libsub.so /所在目录/

注:-lsub表示链接的库 -L表示库所在的目录
使用:
① 先把 libusb.so 放到 PC 或板子上的/lib 目录,然后就可以运行 test 程序。
② 如果不想把 libusb.so 放到/lib,也可以放在某个目录比如/a,然后如下执行:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/a
./test

先指定库的路径,再运行测试程序。

3.静态库的制作、使用
此处直接用通配符 * 来替代,编译当前目录下的所有c文件

gcc  -c  *.c
ar   -r  libxx.a  *.o
gcc -o test *.o *.a 

因为是使用的静态库,所以不需要再将制作的库拷贝到对应的/lib目录。

3.编译工具的一些选项

-fPIC
其中关于 -fPIC 编译选项参考下面这篇文章:
-fPIC 作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code),则产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置,都可以正确的执行。这正是共享库所要求的,共享库被加载时,在内存的位置不是固定的。
gcc -fPIC 编译选项

-Wall 使用它能够使GCC产生尽可能多的警告信息

-Werror,它要求GCC将所有的警告当成错误进行处理

参考教程:《嵌入式 Linux 应用开发完全手册 》(韦东山)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值