admin管理员组文章数量:1566993
2024年6月6日发(作者:)
建立交叉编译环境
交叉编译的任务主要是在一个平台上生成可以在另一个平台上执行的程序代码。不同的
CPU需要有不同的编译器,交叉编译如同翻译一样,它可以把相同的程序代码翻译成不同
的CPU对应语言。
交叉编译器完整的安装涉及到多个软件安装,最重要的有binutils、gcc、glibc三个。其中,
binutils主要用于生成一些辅助工具;gcc则用来生成交叉编译器,主要生成arm-linux-gcc
交叉编译工具;glibc主要是提供用户程序所使用的一些基本的函数库。
自行搭建交叉编译环境通常比较复杂,而且很容易出错。可以使用厂家提供的交叉编译器,
只需将交叉编译器解压到根目录下即可(厂家已经做好这步)。
步骤:
设置系统环境变量:
在linux shell终端输入如下命令
export PATH=$PATH:/usr/local/arm/arm-2009q3/bin/
这样,内核或其他应用程序均可以用arm-none-linux-gnueabi-来指定使用该交叉编译器。
自行编写一个程序测试:
示例helloworld.c:
#include
int main(void)
{
printf("hello worldn");
return 0;
}
然后在命令行执行如下语句开始编译:
$ arm-none-linux-gnueabi-gcc helloworld.c -o helloarm
用file命令查看下生成的helloworld程序的格式:
$ file helloarm
如果输出以下信息,说明编译成功。
helloworld: ELF 32-bit LSB executeable, ARM, version 1, dynamically linked (uses shared libs),
not stripped
注:
如果使用如下的命令来编译该文件。
[root@localhost root]# gcc –o hello helloworld.c
[root@localhost root]# file hello
helloworld: ELF 32-bit LSB executeable, Intel 80386, version 1, dynamically
linked (uses shared libs), not stripped
可发现是80386格式,可以在虚拟机中直接./hello运行
而用arm-none-linux-gnueabi-gcc编译的helloarm程序,是无法在虚拟机里用./helloarm执行
的,但可以在ARM开发板中运行。
版权声明:本文标题:嵌入式linux中建立交叉编译环境 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1717640736a593729.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论