300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > linux 交叉编译器作用 Linux下交叉编译器学习

linux 交叉编译器作用 Linux下交叉编译器学习

时间:2021-10-04 04:35:35

相关推荐

linux 交叉编译器作用 Linux下交叉编译器学习

最近需要碰到到Linux下的设备使用,需要使用交叉编译器,故在此记录下碰到的问题,以作经验。

交叉编译器

梗概

交叉编译器听起来很玄乎,实则是类似于gcc的编译器,而且大多数情况下,其使用的命令也和gcc一致,语法一致,即你可以在gcc上编译的文件,在交叉编译器上也可以编译,这是用于编译运行在特定的设备上的程序的编译器,只不过不是在PC上。

安装

你得到的交叉编译器通常是一个压缩包,如果没有后缀名就在后面加上(.tar/.tar.gz),就可以打开压缩包,其编译的程序通常问arm-xxx-linux-gcc,在目录下的bin文件下,理应解压出来就可以在该目录下直接编译,但是在linux下你需要将该目录加入系统变量,否则其不视之为一个命令。

增加系统参数

方法一

我第一次测试的时候使用了简易而不持续的方法,只可以在这个终端下有效。1export PATH=/usr/local/webserver/mysql/bin:$PATH //将当前目录增加到PATH路径中1echo $PATH //打印PATH路径

如果看到如下界面就说明当前路径已经加入到PATH路径中。

/usr/local/webserver/mysql/bin:/usr/local/webserver/mysql/bin/:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

方法二1vim /etc/profile

在最后,添加:1export PATH="/usr/local/webserver/mysql/bin:$PATH"

保存,退出,然后运行:1source /etc/profile

不报错则成功。

Gcc多文件编译1gcc getop.c calcDemo.c -o output.out

静态库生成(.a文件)

编译c文件爱你,生成目标文件

使用gcc/arm-xxx-linux文件编译c文件,得到.o文件1gcc -c file1.c file2.c

这样就得到了file1.o file2.o文件

归档目标文件,生成静态库1ar crv libmylib.a file1.o file2.o

我们就得到了libmylib.a,这就是我们需要的静态库。

上述命令中 crv 是 ar的命令选项:c 如果需要生成新的库文件,不要警告

r 代替库中现有的文件或者插入新的文件

v 输出详细信息

通过 ar t libmylib.a 可以查看 libmylib.a 中包含的目标文件。

可以通过 ar –help 查看更多帮助。

注意:我们要生成的库的文件名必须形如 libxxx.a ,这样我们在链接这个库时,就可以用 -lxxx。

反过来讲,当我们告诉编译器 -lxxx时,编译器就会在指定的目录中搜索 libxxx.a 或是 libxxx.so

使用静态库文件1gcc test.c -L. -lmylib

将会生成a.out,通过 ./a.out 可以运行该程序。说明我们的静态库能正常工作。

上面的命令中 -L. 告诉 gcc 搜索链接库时包含当前路径, -lmylib 告诉 gcc 生成可执行程序时要链接 libmylib.a。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。