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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

交叉编译及树莓派(或其他平台)交叉编译工具链的安装

發布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 交叉编译及树莓派(或其他平台)交叉编译工具链的安装 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

交叉編譯是什么:
交叉編譯是一個行為,是在一個平臺上生成另一個平臺上的可執行代碼。
比如:我們在windows上面編寫C51的代碼,并編譯成可執行代碼,如xx.hex,是在C51上面運行不是在windows上面運行。

同樣:我們在ubuntu上面編寫樹莓派的代碼,并編譯成可執行代碼,如xx.out,是在樹莓派上面運行不是在linux上面運行。

編譯:是在一個平臺上生成在該平臺上的可執行的代碼。
C51 交叉編譯的發生在kill(集成環境上面)
為什么要交叉編譯:
平臺上不允許或不能夠安裝我們所需要的編譯器,比如C51,而樹莓派可以。
1、目的平臺上的資源貧乏,無法運行我們所需要編譯器
2、既然樹莓派能夠安裝我們所需要的編譯器,是不是不需要交叉編譯?
其實也要
因為目的平臺還沒有建立,連操作系統都沒有,根本談不上運行什么編譯器。操作系統也是代碼,也需要編譯。
平臺運行至少需要兩樣東西:bootloader(后動引導代碼)以及操作系統核心。
宿主機(host):編輯和編譯程序的平臺,一般是基于X86的PC機,通常也被稱為主機。
目標機(target):用戶開發的系統,通常都是非X86平臺。host編譯得到的可執行代碼在target上運行。
交叉編譯需要用到的工具:
交叉編譯器,交叉編譯工具鏈

交叉編譯相關內容詳細介紹:https://baike.baidu.com/item/%E4%BA%A4%E5%8F%89%E7%BC%96%E8%AF%91/10916911?fr=aladdin

交叉編譯工具鏈的安裝:
1、臨時有效
PATH環境變量(將命令加入終端,使命令使用更加方便,不用敲很長的路徑)

1、從共享文件夾拷貝到工作目錄

cp /mnt/hgfs/sharefromwindows/tools-master.zip .

2、解壓

unzip tools-master.zip

3、找到工具路徑

cd tools-master/lscd arm-bcm2708lscd gcc-linaro-arm-linux-gnueabihf-raspbian-x64lscd binls./arm-linux-gnueabihf-gcc -vecho $PATH// 顯示當下的環境變量pwd//顯示當前文件夾下的路徑export PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/CLC/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin (export是配置環境變量的意思) 注意: /usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:是從echo中復制的 /home/CLC/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin是pwd指令生成的所想要省略的文件路徑

4、然后回到工作目錄下

arm-linux-gnueabihf-gcc -v//查看是否完成,出現gcc version 4.8.3 20140303 (prerelease) (crosstool-NG linaro-1.13.1+bzr2650 - Linaro GCC 2014.03)表示完成

2、永久有效
修改工作目錄下的.bashrc (隱藏文件),用來配置命令終端的

vi /home/CLC/.bashrc方法:將配置環境變量的代碼粘貼到文件最后,就是export PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/CLC/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin這樣每次啟動終端就會運行這個指令。source /home/CLC/.bashrc//加載配置文件,馬上生效配置。

交叉編譯工具鏈壓縮包:
鏈接:https://pan.baidu.com/s/1ApdowTcTe4vchY_0qci5qA
提取碼:9vci

這篇博文更加詳細:https://blog.csdn.net/weixin_45309916/article/details/107789879

交叉編譯如何執行:

gcc test.c -o test_1 file test_1 //file 用來查看文件屬性 test_1: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xcfc35e8f92f7737433ebe182ff90ac60a2f058c7, not stripped //executable 表示可執行文件 //只能運行在X86-64位的電腦上arm-linux-gnueabihf-gcc test.c -o test_2 //交叉編譯,將test.c編譯成樹莓派可執行的代碼 file test_2 //查看文件屬性 test_2: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, BuildID[sha1]=0xb6ef18cf7462c1c0d7f4b8e455972204ae718324, not stripped./test_2 //在ubuntu上運行編譯的樹莓派的代碼 bash: ./test_2: cannot execute binary file //報錯:不能解析這個文件scp test_2 pi@192.168.0.118:/home/pi //將這個編譯好的程序復制到樹莓派的/home/pi中 //格式是:scp 程序名 開發板的用戶名@樹莓派IP地址:開發板的絕對路徑

總結

以上是生活随笔為你收集整理的交叉编译及树莓派(或其他平台)交叉编译工具链的安装的全部內容,希望文章能夠幫你解決所遇到的問題。

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