我正在使用Linux 2.6.35的ARM系統上運行預鏈接。我正在使用Glibc 2.12.2。我想預先鏈接我的庫和應用程序可執行文件。但是,我似乎無法鏈接任何直接依賴glibc的東西。當預鏈接試圖與/lib
,它錯誤用完:預鏈接錯誤:佈局錯誤:數據段大小太小
Could not write /lib/libc-2.12.2.so: Layout error: section size too small for data
有我的方式來解決這個問題或者是說服預鏈接預鏈接除了什麼駐留在/lib
一切嗎?我知道/etc/prelink.conf
中的黑名單功能,但之後prelink會出錯,因爲它無法找到位於該目錄中的依賴項。
編輯:
這裏是我的prelink.conf
~ # cat /etc/prelink.conf -h /usr/local/Qt-4.7.4/lib -h /usr/lib -h /lib -h /usr/local/dbus/lib -h /usr/local/sqlite/lib -h /usr/local/ncurses/lib -h /usr/local/expat/lib -h /usr/local/ssl/lib
我是通過飛思卡爾的i.MX51的平臺上。它是一個ARM Cortex-8。因爲我已經使用開發工具包附帶的GCC/G ++版本編譯了所有內容,所以我假定ELF二進制文件是32位的。
編輯:
我改變了-h標誌,以-l的和移動的系統庫到列表的前面。我仍然得到同樣的錯誤。
我在設備上運行預鏈接,而不是在我的交叉構建機器上運行。
LD_LIBRARY_PATH包含/ lib和/ usr/lib目錄
試圖運行預鏈接爲: 預鏈接-a 預鏈接-amR
,得到了相同的結果是雙向的。
我正在運行gcc 4.4.6交叉編譯器。 我正在運行ld 1.12.1 ld。
雖然從源代碼構建軟件是話題在這裏,你就更有可能找到[所以專家],特別是當你建立自己的程序時。所以我正在標記這個問題的遷移(不要轉貼)。 – Gilles 2012-03-27 21:39:07
好的,沒問題。由於這個問題實際上並不涉及編寫任何代碼,我認爲SO MOD將會在這裏重新定位它。我想我在那裏有更好的機會,但想按規則發揮。謝謝您的幫助。 – 2012-03-27 23:45:56