解決交叉編譯到開發板不可用的問題

2021-08-09 20:28:34 字數 1355 閱讀 3215

最近換了乙個電腦專門裝ubuntu後,和往常一樣仍是裝好arm-linux-gnueabi-gcc,arm-linux-gnueabi-g++和eclips e後,寫好程式,交叉編譯之後,在板上卻顯示

-sh: ./a.out: no such file or directory
然後檢視檔案屬性

file a.out
顯示如下:

a.out: elf 32-bit lsb executable, arm, eabi5 version 1 (sysv), dynamically linked (uses shared libs), for gnu/linux 3.2.0, buildid[sha1]=cfd57ddadc94410b1922a606b6c0e4fc7d6addee, not stripped
和之前同樣的交叉編譯過,但能在開發板上執行的檔案比較了一下:

file sinfo
顯示如下:

sinfo: elf 32-bit lsb executable, arm, eabi5 version 1 (sysv), dynamically linked (uses shared libs), for gnu/linux 2.6.32, buildid[sha1]=4769e11eda509ac1e6b52100af3f364229e7b534, not stripped
再看了自己的gnu/linux版本

uname -a

linux colibri-imx6 4.1.41-rt50-dirty #3 smp preempt rt sun aug 27 17:20:09 cst 2017 armv7l gnu/linux

這兩個gnu/linux和我的都不同,由於gnu/linux版本的區別,這樣很可能是因為動態編譯的不同,導致開發板上缺少某個庫,就無法執行該檔案,故而顯示no such file or directory

在編譯的時候,選擇- static來進行靜態連線,這樣,所有需要的庫全會編譯進檔案裡,雖然檔案會變得很大,但是可以不依賴板上的庫執行

只用在eclipse裡,在編譯的時候在gcc-link裡面選擇- static即可

elf 32-bit lsb executable, arm, eabi5 version 1 (sysv), statically linked, for gnu/linux 3.2.0, buildid[sha1]=8478b453a14004a4bc0338f990461b3416c05f63, not stripped
這樣最後編譯出來即可執行

玩轉開發板之交叉編譯器安裝

玩轉開發板之交叉編譯器安裝 在一種計算機環境中執行的編譯程式,能編譯出在另外一種環境下執行的 我們就稱這種編譯器支援交叉編譯。這個編譯過程就叫交叉編譯。簡單地說,就是在乙個平台上生成另乙個平台上的可執行 這裡需要注意的是所謂平台,實際上包含兩個概念 體系結構 architecture 作業系統 op...

如何儲存資料到開發板,斷電不丟失

實際產品開發過程中,我們肯定需要儲存一些資料,並且掉電不丟失。例如很多人在使用我之前寫的一篇wifi配網功能後,都會遇到乙個問題 我配置了wifi賬戶密碼,但是下次我又得重新配網,能不能把wifi賬戶密碼儲存起來?好,接下來我們來實現這個功能 儲存資料到開發板,斷電不丟失。有兩種方式 1 使用kv系...

交叉編譯GDB到ARM板

原文 sudo apt get install texinfo sudo apt get install libncurses5 dev sudo apt get install m4 sudo apt get install flex sudo apt get install bison 為了支援...