国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

為什么要交叉編譯?

這篇具有很好參考價值的文章主要介紹了為什么要交叉編譯?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、什么是交叉編譯、為什么要交叉編譯

1、什么是交叉編譯?

交叉編譯:是在一個平臺上生成另一個平臺上的可執(zhí)行代碼。比如我們在 x86 平臺上,編寫程序并編譯成能運行在 ARM 平臺的程序,編譯得到的程序在 x86 平臺上是不能運行的,必須放到?ARM?平臺上才能運行。

我們在Windows上面編寫C51代碼,并編譯成可執(zhí)行代碼,如xx.hex,是在c51上面運行,不是在windows上面運行

編譯:是在一個平臺上生成在該平臺上的可執(zhí)行代碼,

2、為什么要交叉編譯?

2.1、交叉編譯的目標系統(tǒng)一般都是內(nèi)存較小、顯示設備簡陋甚至沒有,沒有能力在其上進行本地編譯,無法運行我們所需要編譯器,比如C51,C51 交叉編譯的發(fā)生在keil(集成環(huán)境上面)

2.2、有能力進行源代碼編譯的平臺CPU架構或操作系統(tǒng)與目標平臺不同;

平臺運行需要兩樣至少東西:bootloader(啟動引導代碼)以及操作系統(tǒng)核心

交叉編譯器用到的工具:交叉編譯器

?要進行交叉編譯,我們需要在主機平臺上安裝對應的交叉編譯工具鏈(cross compilation tool chain),然后用這個交叉編譯工具鏈編譯我們的源代碼,最終生成可在目標平臺上運行的代碼。

如:在Linux PC上,利用arm-linux-gcc編譯器,可編譯出針對Linux ARM平臺的可執(zhí)行代碼。

二、交叉編譯工具鏈的安裝

  • ?樹莓派交叉編譯工具鏈安裝

下載地址:

https://github.com/raspberrypi/

  • OrangePi_Zero2交叉編譯工具鏈安裝

參考OrangePi_Zero2用戶手冊Orange Pi Zero2-Orange Pi官網(wǎng)-香橙派(Orange Pi)開發(fā)板,開源硬件,開源軟件,開源芯片,電腦鍵盤

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

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

解壓

unzip tools-master.zip

進入文件夾bin目錄

cd /home/zyf/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

獲取路徑? ? pwd

配置環(huán)境變量

1、環(huán)境變量臨時有效

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/zyf/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

2、環(huán)境變量永久有效

修改工作目錄下的.bashrc 隱藏文件,配置命令終端的

vi /home/zyf/.bashrc?

在文件最后一行加入

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/zyf/lessonPI/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

加載配置文件,馬上生效配置

source /home/zyf/.bashrc

三、交叉編譯

檢查下交叉編譯工具對不對:

arm-linux-gnueabihf-gcc -v

4.8.3

編譯:

arm-linux-gnueabihf-gcc ?xxx.c -o xxx

eg:

服務端:gcc ftpserver.c -I ./ -o serverInX86? ? ? ? ?

客戶端:arm-linux-gnueabihf-gcc ftpclient1.c -I ./ -o clientInpi

把編譯生成的可執(zhí)行文件下載到開發(fā)板:

scp clientInPi pi@192.168.101.33:/home/pi

指令 文件名 開發(fā)板用戶名@開發(fā)板地址:開發(fā)板的絕對路徑

注意服務端和客戶端需要在同一網(wǎng)段

若出現(xiàn)public key問題,用以下

scp -o StrictHostKeyChecking=no ftpclientARM pi@192.168.101.33:/home/pi

四、帶wiringPi庫的交叉編譯如何進行

1、正常我們先要交叉編譯wiringpi庫,編譯出的庫適合樹莓派,這時候交叉編譯可執(zhí)行程序的試試,鏈接庫的格式也是正確的。

2、通過-I –L來指定

因為鏈接的庫的格式不對,是宿主機的平臺,會出現(xiàn)錯誤

解決:把樹莓派上的wiringpi庫拿上來用

3、軟鏈接的引入?

軟鏈接:

1、軟連接文件有類似于Windows的快捷方式

2、在符號鏈接中,文件實際上是一個文本文件,其中包含的有另一文件的位置信息。

3、只在你選定的位置上生成一個文件的鏡像,不占用磁盤空間

4、如何生成軟鏈接?

ln -s libwiringPi.so.2.52 libwiringPi.so

指令 參數(shù)?? 要被鏈接的文件?????? 軟鏈接名

5、硬鏈接

硬鏈接:

ln ?libwiringPi.so.2.52 libwiringPi.so

它會在你選定的位置上生成一個和源文件大小相同的文件

? 6、編譯生成

解壓wiringpi庫的tar.gz文件

命令:tar -zxvf xxx.tar.gz -C /xxx/

查看命令:man tar

編譯生成

arm-linux-gnueabihf-gcc relay1.c -I /home/zyf/share/WiringPi/wiringPi -L. –lwiringPi

(這里編譯不成功,提示需要用到glibc庫,

解決方案:1、把樹莓派和ubantu對應的glibc,升級到一致2、直接在樹莓派編譯,簡單高效)文章來源地址http://www.zghlxwxcb.cn/news/detail-437602.html

到了這里,關于為什么要交叉編譯?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • JVM執(zhí)行引擎——為什么Java是半編譯半解釋語言

    ????????起初設計者的初衷是將字節(jié)碼文件翻譯為機器語言的指令來執(zhí)行即可,就誕生了解釋器。但是采用一行行來解釋的 效率比較低 ,JIT編譯器會將編譯后的機器碼做一個緩存的操作,放在方法區(qū)的JIT代碼緩存中,是否需要啟用JIT編譯器直接將字節(jié)碼編譯為機器碼,則

    2024年02月15日
    瀏覽(21)
  • C++中,C::C::C::C::foo() 為什么編譯成功?

    C++中,C::C::C::C::foo() 為什么編譯成功?

    有人問: 為什么 最后那行: 能編譯成功?這是什么規(guī)則? 嗯…… Entity::Entity::Entity::Entity::Entity::Entity::foo() 竟然編譯成功?這一切的背后,是人性的扭曲,還是道德的淪喪? 敬請關注今晚八點 CPPTV 12 頻道,讓我們跟隨鏡頭走進厚厚的C++標準文檔…… 這個案例,至少牽涉到

    2024年02月12日
    瀏覽(31)
  • scanf和strcpy這類關鍵字和函數(shù)為什么不安全,使用VS編譯會報錯

    scanf和strcpy這類關鍵字和函數(shù)為什么不安全,使用VS編譯會報錯

    首先先說解決方法: 在程序最頂端加入這個代碼段 這主要是微軟的 C 運行時庫實現(xiàn)將這些函數(shù)標記為不安全,主要原因是這些函數(shù)缺乏對輸入長度的邊界檢查,容易導致緩沖區(qū)溢出漏洞。 會產(chǎn)生這樣的報錯: 即: C4996?? ?\\\'strcpy\\\': This function or variable may be unsafe. Consider usin

    2024年02月13日
    瀏覽(60)
  • C語言辨析——int a=5;為什么++a=1能編譯通過而a++=1不行呢?

    1. 問題 有人問:int a=5; 為什么++a=1能編譯通過a++=1編譯錯誤呢? 解釋:不管是++a=1還是a++=1在C編譯環(huán)境下都無法編譯通過,但在C++中,++a=1可以編譯通過,而a++=1無法編譯通過,這也是C和C++的一個不同。因此,這是一個關于 C++的問題 。 2. 分析 不管是C還是C++,語句a++=1;的

    2024年01月16日
    瀏覽(22)
  • 【C語言】scanf和strcpy這類關鍵字和函數(shù)為什么不安全,使用VS編譯會報錯

    【C語言】scanf和strcpy這類關鍵字和函數(shù)為什么不安全,使用VS編譯會報錯

    首先先說解決方法: 在程序最頂端加入這個代碼段 這主要是微軟的 C 運行時庫實現(xiàn)將這些函數(shù)標記為不安全,主要原因是這些函數(shù)缺乏對輸入長度的邊界檢查,容易導致緩沖區(qū)溢出漏洞。 會產(chǎn)生這樣的報錯: 即: C4996?? ?\\\'strcpy\\\': This function or variable may be unsafe. Consider usin

    2024年02月14日
    瀏覽(21)
  • 【Linux操作系統(tǒng)】編譯過程中遇到的問題-為什么加-c?執(zhí)行文件提示無法執(zhí)行二進制文件?main函數(shù)參數(shù)argc和*argv[]的作用和理解?

    【Linux操作系統(tǒng)】編譯過程中遇到的問題-為什么加-c?執(zhí)行文件提示無法執(zhí)行二進制文件?main函數(shù)參數(shù)argc和*argv[]的作用和理解?

    在使用GCC編譯器進行程序開發(fā)時,我們經(jīng)常會遇到一些編譯過程中的問題, 比如為什么要加上\\\"-c\\\"選項,以及為什么生成的可執(zhí)行文件無法執(zhí)行等問題。 本篇博客將詳細介紹這些問題,并給出相應的代碼和解釋,幫助讀者更好地理解GCC編譯過程中的\\\"-c\\\"選項和main函數(shù)的參數(shù)a

    2024年02月12日
    瀏覽(31)
  • 【2023,學點兒新Java-14】攜程面試題:如何看待Java是一門半編譯半解釋型的語言?| 咨詢互聯(lián)網(wǎng)行業(yè) 資深前輩的一些問題 | 附:為什么說ChatGPT的核心算法是...?| GPT-3.5

    前情回顧: 【2023,學點兒新Java-13】階段練習之Java面試企業(yè)真題(阿里巴巴拼多多 等) | 常用的Java命令行操作都有哪些 | 如何解決Java的內(nèi)存泄漏和內(nèi)存溢出問題? 【2023,學點兒新Java-12】小結:階段性復習 | Java學習書籍推薦(小白該讀哪類Java書籍?有一定基礎后,再去讀

    2024年02月09日
    瀏覽(29)
  • Netty為什么高效,為什么這么受歡迎?

    Netty為什么高效,為什么這么受歡迎?

    上篇文章通過 Java NIO 的處理流程與 Netty 的總體流程比較,并結合 Netty 的源碼,可以更加清晰地理解Netty。本文將結合源碼詳細解析Netty的高效和強大功能的設計原理,學習 Netty 是如何實現(xiàn)其卓越的性能和功能特性,也希望可以在日后工作中利用到 Netty 的設計思想。 我們先看

    2024年02月12日
    瀏覽(40)
  • Redis—Redis介紹(是什么/為什么快/為什么做MySQL緩存等)

    Redis—Redis介紹(是什么/為什么快/為什么做MySQL緩存等)

    一、Redis是什么 Redis 是一種 基于內(nèi)存的數(shù)據(jù)庫 ,對數(shù)據(jù)的讀寫操作都是在內(nèi)存中完成,因此讀寫速度非??欤S糜?緩存,消息隊列、分布式鎖等場景 。 ????????Redis 提供了多種數(shù)據(jù)類型來支持不同的業(yè)務場景,比如 String(字符串)、Hash(哈希)、 List (列表)、Set(集合)、

    2024年02月10日
    瀏覽(29)
  • AIMD 為什么收斂(tcp reno/cubic 為什么好)

    AIMD 為什么收斂(tcp reno/cubic 為什么好)

    TCP 擁塞控制目標是緩解并解除網(wǎng)絡擁塞,讓所有流量公平共享帶寬,合在一起就是公平收斂。 AIMD(幾乎所有與擁塞控制相關的協(xié)議或算法都有 AIMD 的影子,包括 RoCE,BBRv2) 為什么收斂?我一般會給出下面的老圖: 雖然只展示了兩條流的收斂,但 n 條流收斂的展示無非就是將

    2024年02月06日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包