linux的系统移植——交叉编译器
1.為什么要有交叉編譯器?
\qquad一般電腦是X86架構,而單片機一般不是,比如單片機是ARM架構,那么gcc編譯生成的程序只能在X86的架構上運行,而不能在ARM架構上運行,所以需要交叉編譯器編譯生成能在ARM架構上運行的程序。
\qquad查看一個可執行程序,究竟屬于哪個架構,可以使用file命令。比如有.c文件hello.c。
\qquad運行結果:
hello: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=bf1698069c3282a51cf380a29c30a8a9062e270e, for GNU/Linux 3.2.0, not stripped2.安裝交叉工具鏈
\qquad安裝過程很簡單,就是解壓縮的過程。
\qquad第一步:解壓到linux標準目錄,一般解壓到/usr/local/arm/下面。
\qquad第二步:添加環境變量:編輯/etc/environment ,然后添加把交叉工具鏈的bin目錄的絕對路徑,注意一定要在原PATH中添加,不要另外起一行,然后source;如果要是使用時,采用絕對路徑,可以不用第二步添加環境變量。
3.使用
\qquad 3.1使用的簡單方式,需要添加環境變量。當時當有多個編譯器時,可能會出現問題
arm-linux-gnueabi-gcc hello.c -o hello\qquad 3.2 使用絕對路徑方法,使用比較復雜,但是準確
/usr/local/arm/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc hello.c -o hello4.添加32位lib
\qquad交叉編譯器是在32位系統上制作的,所以需要用到32位的lib;如果我們的linux系統是64位的,可以有時候會出現無法找到交叉編譯器命令的問題,這個問題有可能是使用簡單交叉編譯器命令而沒有添加環境變量,也有可能是沒有添加32位的lib。下面介紹如何添加32位lib。
\qquadUbuntu12.04以前的版本:sudo apt-get install ia32-libs
\qquadubuntu12.04以后的版本:sudo apt-get install libc6:i386 sudo apt-get install lib32z1
5.查看交叉編譯器版本和使用
\qquad查看版本:arm-linux-gnueabi-gcc -v
\qquad目錄下有一個hello.c文件,我們使用交叉編譯器編譯,然后使用file命令查看,程序運行的架構。
\qquad運行結果:hello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux2.6.32,BuildID[sha1]=20ab9e34b81a80b48ed4a048a4db4bb2d09378e2, with debug_info, not stripped
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的linux的系统移植——交叉编译器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hadoop相关技术
- 下一篇: linux文件IO——目录操作和文件属性