[問題] 產生shared library時,有用-fPIC參數ꤠ…
※ [本文轉錄自 LinuxDev 看板 #1Digk69n ]
作者: tortoise (tortoise) 看板: LinuxDev
標題: [問題] 產生shared library時,有用-fPIC參數和沒用的差別是什麼
時間: Sat Apr 23 18:35:48 2011
通常在產生shared library時,會加-fPIC的參數,
目的是為了產生與位址無關的machine code。
這樣可以達到同一份library讓多份process共用的目的。
如果沒有加-fPIC,其實library還是可以產生,
程式一樣可以動態連結這個library,
一樣可以執行無誤。
那麼,有沒有加-fPIC的差別到底是什麼?
是說如果沒有加的話,
每一個process都會在實體記憶體都載入一份library嗎?
所以就不能達到共用的目的嗎?
如果查看memory map,
看到的是library在process的virtual memory的位置,
要怎樣可以知道library是在實體記憶體的哪個位置?
要如何知道library是不是真的只載入一份呢?
$ cat /proc/2351/maps
...
0092c000-0092d000 r-xp 00000000 08:06 1330092 /test/pic/foo.so
0092d000-0092e000 r--p 00000000 08:06 1330092 /test/pic/foo.so
0092e000-0092f000 rw-p 00001000 08:06 1330092 /test/pic/foo.so
...
$ cat /proc/2356/maps
...
00d42000-00d43000 r-xp 00000000 08:06 1330092 /test/pic/foo.so
00d43000-00d44000 r--p 00000000 08:06 1330092 /test/pic/foo.so
00d44000-00d45000 rw-p 00001000 08:06 1330092 /test/pic/foo.so
...
謝謝回答。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 112.104.128.131
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 112.104.128.131
推
04/23 20:00, , 1F
04/23 20:00, 1F
→
04/23 21:06, , 2F
04/23 21:06, 2F
→
04/24 15:13, , 3F
04/24 15:13, 3F