cross compile 後的執行檔,無法與 library 做連結

我們生活周遭存在太多太多的 embedded system ,過去 embedded system 有專屬的 OS,現在 linux 也可以應用在嵌入式環境,不過本版將廣泛討論所有嵌入式系統不只 linux 喔,歡迎有這方面經驗或有興趣的朋友一同進來討論。

版主: chester

cross compile 後的執行檔,無法與 library 做連結

文章bafu » 週五 7月 07, 2006 4:14 pm

大家好,現在我試著 porting 基本的 hello world program上去 IXP425 執行
出現這樣的錯誤訊息:cannot execute binary file
使用的 tool chain 版本為 arm-linux-tools-20030927
編譯器為 arm-linux-gcc

我自己的猜測是,程式無法順利連結到 shared object
也就是 snapgear 中所提供的 C 語言函式庫(在我的 snapgear 中為 libuClibc-0.9.26.so)
我認為程式會與 libc.so.0 連結
而 libc.so.0 實際上為連結至 libuClibc-0.9.26.so 的 link

請問在 cross compile 的時候,該做怎麼樣的設定,
好讓執行檔能順利找到板子上的 shared object 呢?
我在編譯時只使用很單純的 arm-linux-gcc test.c

另外,我做了一些測試:
使用 arm-linux-gcc 產生執行檔(a.out)之後,

1. 使用 ldd command:ldd a.out
結果:not a dynamic executable

2. 使用 file command:file a.out
結果:a.out: ELF 32-bit LSB executable, ARM,
version 1 (ARM), for GNU/Linux 2.0.0,
dynamically linked (uses shared libs),
for GNU/Linux 2.0.0, not stripped

3. 執行 arm-linux-strings a.out
結果:
/lib/ld-linux.so.2
libc.so.6
printf
abort
_IO_stdin_used
__libc_start_main
__fini_array_end
__fini_array_start
__init_array_end
__init_array_start
_Jv_RegisterClasses
GLIBC_2.0
hello world!


從第二個測試,發現執行檔確實是 dynamically linked。
然而第一個測試卻沒有顯示任何動態連結的 library。
此外,第三個測試的前兩行輸出,尤其是第二行,
在 snapgear 的 /lib 中,只有 libc.so.0。
因此我認為是在編譯時設定不當。
請問在編譯時該怎麼設定呢?


P.S.:tool chain 中有許多版本的編譯器,
例如 arm-linux-gcc
arm-linux-3.3.2-gcc
arm-linux-gcc-3.3.2
arm-linux-gcc-3.4.4
請問它們之間有什麼差異嗎?
我使用 arm-linux-gcc 以及 arm-linux-gcc-3.4.4 可以成功編譯程式
bafu
 

Re: cross compile 後的執行檔,無法與 library 做連結

文章訪客 » 週五 7月 07, 2006 4:18 pm

另外,在板子上作了一個 libc.so.6 的 symbolic link,
指向 libc.so.0,但程式仍無法執行。
訪客
 

文章lonwn.lee » 週四 6月 28, 2007 12:55 pm

首先你要確認你的toolchain上使用的library是否和你開發平台上的library相同,如果不同的話看你要同步你的toolchain或者是你的開發平台.
lonwn.lee
可愛的小學生
可愛的小學生
 
文章: 3
註冊時間: 週四 6月 28, 2007 11:47 am

文章leeg » 週四 6月 28, 2007 10:12 pm

> a.out: ELF 32-bit LSB executable, ARM,
代表你忘了加上"-mbig-endian", 預設值是little-endian

如果你懷疑是shared library的問題
你可以加上"-static"來產生不使用shared library的程式來測試是否跟shared library有關
leeg
可愛的小學生
可愛的小學生
 
文章: 6
註冊時間: 週日 6月 24, 2007 12:15 am


回到 embedded system

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客