日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux的系统移植——交叉编译器

發布時間:2024/7/19 linux 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux的系统移植——交叉编译器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.為什么要有交叉編譯器?

\qquad一般電腦是X86架構,而單片機一般不是,比如單片機是ARM架構,那么gcc編譯生成的程序只能在X86的架構上運行,而不能在ARM架構上運行,所以需要交叉編譯器編譯生成能在ARM架構上運行的程序。
\qquad查看一個可執行程序,究竟屬于哪個架構,可以使用file命令。比如有.c文件hello.c。

gcc hello.c -o hello #生成可執行文件hello file hello

\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 stripped

2.安裝交叉工具鏈

\qquad安裝過程很簡單,就是解壓縮的過程。
\qquad第一步:解壓到linux標準目錄,一般解壓到/usr/local/arm/下面。
\qquad第二步:添加環境變量:編輯/etc/environment ,然后添加把交叉工具鏈的bin目錄的絕對路徑,注意一定要在原PATH中添加,不要另外起一行,然后source;如果要是使用時,采用絕對路徑,可以不用第二步添加環境變量。

sudo vim /etc/environment PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/arm/gcc-linaro-5.3.1-2016.05-x86_64_arm-linux-gnueabi/bin" source /etc/environment

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 hello

4.添加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命令查看,程序運行的架構。

arm-linux-gnueabi-gcc hello.c -o hello #編譯 file hello

\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的系统移植——交叉编译器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。