>
Girdi konusu olarak da bir süre önce Gökmen Görgen ile konuştuğumuz bir konu olan fPIC olmasını tercih ettim. Neden olduğunu ise not olarak koyacağım. Konuyu daha çok dağıtmadan bi giriş yapayım konuya,
Nereden geldi bu fPIC?
fPIC ile karşılaşmam ilk olarak 64bit için paketleri hazır hale getirirken karşılaştım. Derleme sırasında aldığım hata ise;
“relocation R_X86_64_32 against `a local symbol’ can not be used
when making a shared object; recompile with -fPIC .libs/assert.o: could not
read symbols: Bad value”
Oradaki 32’yi görünce kıllanıyor tabi insan. Güzelce derle şunu diyesi geliyor insanın, yoksa hata GCC de mi diye düşünebiliyor insan 😉 Peki ufak bir araştırmadan sonra sorunu gördük ki paylaşımlı kütüphaneler için oluşturulan nesnelerin düzgün şekilde linklenebilmesi için -fPIC parametresi ile derlenmesi gerekiyormuş. Tabi ki sorunun çözülmüş oldu.
Kendisi bi gcc bayrağıdır. “Position-Independent Code”un kısaltılmasıdır. Türkçe’ye çevirdiğimizde konum bağımsız kod oluyor herhalde 🙂 PIC, çıkan ikilik dosyanın belirli bir taban adresine yüklenmesini beklemez, bellekteki herhangi bir yerde mutlu olmayı bilir anlamına geliyor 😉
Kendisi i686 mimarisinde kullanıldığında bir fark oluşturmadığı söyleniyor. Bilemiyorum nedir, ne değildir. Ancak x86_64 mimarisi için daha yavaş çalıştığına dair rivayetler dolaşıyor. Alpha, SPARC64 ve iirc HP-PA mimarileri içinde gerekli olduğundan bahsi geçiyor.
Daha ayrıntılı bakmak isteyenler için :
http://www.technovelty.org/code/c/amd64-pic.html
http://en.wikipedia.org/wiki/Position-independent_code
http://www.gentoo.org/proj/en/base/amd64/howtos/index.xml?part=1&chap=3
http://www.redhat.com/archives/fedora-maintainers/2005-August/msg00094.html
Not: Herhangi bir yerde hata görürseniz bildirmekten çekinmeyin. Herkes herşeyi bilemez sonuçta 😉
0 Comments.