我正在使用嵌入式powerpc(e500v2)平臺。我正在交叉編譯用gcc 4.6.3和eglibc 2.13編譯。有一個swig庫被編譯並加載到目標上。當其在python加載我在回溯收到此錯誤:R_PPC_REL24重新安置超出範圍
ImportError: /opt/load/lib/libISSDcn.so: R_PPC_REL24 relocation at 0x0ddc99c0 for symbol `longjmp' out of range
我以前有這個庫的鬥爭,我從Python 2.5的遷移對我們的目標2.7。當我最初試圖編譯這個庫時,在編譯時我得到了重定位錯誤或操作數超出範圍錯誤,這取決於我使用的標誌。我切換到gcc 4.6.3,現在它建立,但我得到這個錯誤時,它的加載。
我想了解錯誤,但到目前爲止,我在黑暗中的確切含義以及如何解決它。由於某種原因我找不到符號,但我不明白爲什麼,或者如何解決它。
好的,謝謝我在其他地方看過的。我被告知這個圖書館是用fPIC編譯的,但它當然可能不是。如果圖書館是或不是PIC,有沒有辦法告訴事實呢? –
或者我可以問的另一個問題是,如果我做了readelf -r我應該期望在共享對象中看到R_PPC_REL24嗎?我看到很多人。或者這個列表是否包含非外部符號? –
PIC庫不應該將動態重定位應用於除PIC和GOT區域之外的任何其他應用,並且所有這些重定位應該能夠覆蓋整個地址空間。 –