實習日記(5 8)交叉編譯

2021-10-05 20:57:23 字數 2190 閱讀 4207

fscanf跟fgets的區別

fscanf 位於標頭檔案中,函式原型為 int fscanf(file * stream, const char * format, [argument…]); 其功能為根據資料格式(format)從輸入流(stream)中讀入資料(儲存到argument);與fgets的差別在於:fscanf遇到空格和換行時結束,注意空格時也結束,fgets遇到空格不結束

這裡有一篇講使用cjson的部落格,過程還挺詳細的:

我在使用的過程中碰見一些小問題,正在解決:

先是報這個錯誤:

hello.c:(

.text+0x1a): undefined reference to `cjson_parse'

後來發現需要在編譯的時候加入 -lcjson

gcc hello.c -lcjson -o hello
加入後又報另外的錯誤

cannot find -lcjson
這裡有一篇講解決辦法的部落格:

這個先放一放

先搞一下交叉編譯

交叉編譯

-l -i(大寫i) -l

gcc -o hello hello.c -i /home/hello/include -l /home/hello/lib -lworld

引數說明:

-i /home/hello/include表示將/home/hello/include目錄作為第乙個尋找標頭檔案的目錄,尋找的順序是:/home/hello/include–>/usr/include–>/usr/local/include

-l /home/hello/lib表示將/home/hello/lib目錄作為第乙個尋找庫檔案的目錄,尋找的順序是:/home/hello/lib–>/lib–>/usr/lib–>/usr/local/lib

-lworld表示在上面的lib的路徑中尋找libworld.so動態庫檔案

我先實現乙個最基本的demo,把這個交叉編譯的流程走一下。通過arm-linux-gcc 編譯乙個 可執行檔案,然後移植到裝置上跑起來。

開搞解釋一下交叉編譯:

交叉編譯就是為了解決我們在嵌入式裝置上不方便直接程式設計的一種技術手段,這裡我主要是用到了 在linux上編譯生成arm上的可執行檔案,再通過xmanager移植到arm上。

這裡有一篇詳細的部落格,介紹交叉編譯:

然後參照這個部落格進行環境配置就好了:

(落地成功)

我在這稍微梳理一下,上截圖

sudo tar -zxvf arm-linux-gcc-4.3.2...

.tgz -c /usr/local/arm/

在etc / environment 的 path 中新增

:usr/local/arm/4.5.1/bin/
新增**下圖所示:

到此就應該可以用了,測試一下:

arm-linux-gcc -v
測試結果如圖:

落地後期:我發現落地失敗了,這個列印的版本號是4.6.2,我現階段在整合cjson的時候,使用arm-linux-gcc編譯失敗,原因目前認為是32位跟64位不匹配,待解決。

在移植到裝置上後又碰到麻煩了,提示沒有許可權執行

待解決(落地)

解決辦法:

在xftp中的可執行檔案下右鍵選擇圖示選項:

勾選許可權:

可執行:

實習日記001(0718)

今天是實習第一天,早上填了一下 把我的歷史瞬間定格在2011年7月18日。來入職的有應屆生,也有社招,實習生我倒是唯一乙個。我要寫的材料很少,但看著他們填著填著,乙個上午就過去了,加上領辦公用品,就從9點多到了12點,於是先去吃飯。第一次實習,倒沒預料到第一天是這麼簡單。吃飯排了好長的隊,一頓飯吃去...

實習日記005(0722)

今天是周五,兼是月末,氣氛不再平靜,大家都忙著考勤 報銷 匯報。我曾經給自己找工作定下了這幾個目標 公司規模和發展 內部環境和氣氛 制度和規範 工作壓力和報酬。第乙份工作肯定不能衝著工資去,要看是不是有利於自己發展。總結一下這個公司,規模也不小,發展也算比較成熟了,這點,就知道聽boss們談話,對利...

實習日記006(0725)

今天只有些跑跑腿,打打雜的活,於是逛下論壇,看點東西。論壇裡總有人為一些話題爭論不休,今天看了關於程式設計入門的文章。有人推薦python,就有人提倡c,有人贊vim,就有人頂ide,一面對自己的心頭之愛條分縷析,一面說別人的文章是誤人子弟,看著也挺熱鬧的。也難怪我在技術論壇裡總是走迷失了,看看別人...