→ Lipraxde: fPIC 是讓 compiler 編譯成 position-independent code 10/13 02:32
→ Lipraxde: 的選項,用這個選項編譯的程式碼在執行的時需要做 rel 10/13 02:32
→ Lipraxde: ocation,為了在不同的位置 (VM) 上執行。 10/13 02:32
→ Lipraxde: Shared library 是不是會共用 PM 應該是 OS 決定的事, 10/13 02:32
→ Lipraxde: PIC 對程式執行主要還是看 VM。 10/13 02:32
→ ucrxzero: 可是我記得不加才要relocation ? 10/13 09:16
→ ucrxzero: 感謝 10/13 09:16
→ ucrxzero: 因為不加是絕對位址會有問題 10/13 09:20
→ Lipraxde: 啊對,我記錯了。因為是 PIC 的關係可以把 PM 映射到不 10/13 09:39
→ Lipraxde: 同的 VM,兩者之間應該是這樣的關係。 10/13 09:39
→ ucrxzero: fPIC的可以同步修改PM 10/13 10:03
→ ucrxzero: 而另外一個為private的copy on write這樣理解對嗎 10/13 10:03
→ ucrxzero: 看到計組上的對於共享庫段的解釋是不是套用到dPIC上? 10/13 10:04
→ ucrxzero: *fPIC 10/13 10:04
→ Lipraxde: PIC 可以不經修改就能在不同位置上執行,因為使用的是 10/13 10:50
→ Lipraxde: 相對位置而不是絕對位置。至於計組嘛...很久沒看了,也 10/13 10:50
→ Lipraxde: 不太記得相關的描述 QQ 10/13 10:50
→ Killercat: 「程式設計師的自我修養」我記得前幾章就在講這個...XD 10/13 11:42
推 KaryuuIssen: 執行檔不要編譯成PIC PIC會繞道存取(got/plt等等) 10/13 12:24
→ KaryuuIssen: 另外PIC旨在程式段共享 資料段還是各自有各自的 10/13 12:25
→ Lipraxde: 想避免 got/plt 應該是盡量用 static link 吧? 10/13 13:23
→ ucrxzero: 繞道存取我查查看 感謝 10/13 15:33
推 KaryuuIssen: L大 你回答的是另一個問題: .so跟.a的抉擇 這點讓 10/13 16:41
→ KaryuuIssen: 原PO自己考慮XD 總之fPIC除了編譯Shared library外 10/13 16:42
→ KaryuuIssen: 都不需要加 就算原po選了.so而沒加fPIC 編出來的 10/13 16:42
→ KaryuuIssen: 執行檔存取Shared library的部份依然會是PIC 10/13 16:42
→ Lipraxde: 恩恩,我誤會您前面的意思了 10/13 18:32
→ ucrxzero: 了解了感謝 10/13 21:07
推 kingofsdtw: 感謝,長知識了 10/15 02:07