[问题] 把共享库(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