[問題] 把共享庫(SO)載入到指定的記憶體地址

作者: gigigigi (gigigigi)   2016-02-25 23:24:50
http://blog.csdn.net/absurd/article/details/860140
我練習上面網站中範例
文中提到ldd 編譯出來執行檔可以看到在自己寫的ld script 設定的載入地址
libtest.so => ./libtest.so (0x00c00000)
libtest1.so => ./libtest1.so (0x00d00000)
我出來結果是
libtest.so (0xf6b6d000)
libtest1.so (0xf5e6b000)
因為他網站環境看起來是32bit , 所以makefile 我加上-m32
下面是我程式碼
http://doora.qiniudn.com/gn5MA.bz2
請問一下為什麼我顯示出來不是我想載入的記憶體位址?
謝謝
作者: yvb   2016-02-26 15:11:00
請細看範例內文. ld.s 寫不全, 就會不正確.該內文有說, 默認的ld script非常冗長, 他只是引用開頭一段.你的 ld.s 和 ld1.s 只是硬抄不完整的片段, 當然不如預期.
作者: gigigigi (gigigigi)   2016-02-26 19:59:00
完整的 ld --verbose > ld.so 在修改我也試過, 可是這/usr/bin/ld:ld.s:1: syntax error他說的內文不全是最上面例子, 我寫的程式碼應該是他ld --verbose > ld.so 擷取出來的部份了...我用這部份能編譯過, 可是結果這不對
作者: final01 (牛頓運動定律)   2016-02-26 21:36:00
所以你指不指定link script載入位置都一樣??
作者: yvb   2016-02-27 03:06:00
ld --verbose 的輸出不全是 ld script, 還包含了別的訊息.夾在兩個充滿等號的列之間的內容, 才是 ld script.

Links booklink

Contact Us: admin [ a t ] ucptt.com