2014-04-18 86 views
3

我正在嘗試爲運行uClinux的ARM處理器的嵌入式系統編譯「hello world」C應用程序。我使用這個toolchainuclinux - 與libc.so.0庫的鏈接

當我用-static編譯標誌編譯C應用程序時,應用程序工作正常。 當我刪除-static標誌 - 我得到了一個錯誤:can't load library 'libc.so.6'

libc.so.6的不存在於目標上, 到目標設備上的/ lib文件夾的符號鏈接libc.so.0點libuClibc -0.9.33.2.so

如何「告訴」編譯器與libc.so.0鏈接?

+0

您是否發現過我遇到同樣問題的解決方案? – Merom

+0

@Merom:我使用crosstool-NG編譯工具鏈,它是工作文件。 – Dima

+0

我做了同樣的兄弟,但我失敗了! – Merom

回答

2

似乎您正在使用的工具鏈是爲glibc構建的。但目標板安裝了uClibc。
這兩個庫是不兼容的。
在運行時它們不兼容,在編譯時它們不兼容。
你不能「告訴編譯器使用不同的&不兼容的庫。
你需要獲得專門建造的,而不是glibc的/ eglibc爲uClibc的工具鏈。

曾經有一些可靠的網站gnuarm.com工具鏈,但該網站沒有了。

你可以嘗試,並建立使用crosstool-NG自己的工具鏈,這是不是建立單獨的工具鏈軟件包容易得多。嘗試arm-unknown-linux-uclibcgnueabi配置和定製,以您的需求。

-1

你如果刪除-I,應在代碼中添加代碼「load XXX.lib」。 您可以在Google中找到靜態鏈接和動態鏈接之間的區別。