2016-04-11 15 views
2

Şu anda bazı eski paketlerde çalışıyorum ve son çalıştırılabilir dosyayı derlemek için Makefile s -fPIC bayrağını kullanıyorum."-fPIC" bayrağıyla çalıştırılabilir derleme (paylaşılan kitaplık yok)

Anlayışım, bunun paylaşılan bir kitaplık oluştururken ve bir yürütülebilir dosya oluştururken kullanmanın bir anlam ifade etmeyeceği yönündedir.

Doğru mu, yoksa bir şey mi kaçırdığımı merak ediyorum, çünkü internette arama yaptığımda, yalnızca paylaşılan kütüphaneler hakkında konuşup yürütülebilir dosyalardan bahsetmiyorum. ASRL daha iyi güvenlik sayesinde yol açabilir pozisyon bağımsız yürütülebilir oluşturmak için kullanılabilecek

+0

Olası nedenlerden dolayı Wikipedia'yı kontrol edin: https://en.wikipedia.org/wiki/Position-independent_code – hek2mgl

cevap

2

pozisyonu bağımsız kod paylaşımlı kütüphane bağlamın kullanışlı dışında olabilir. Yaygın bir durum Address space layout randomization olup, bu kod, son çalıştırmayı kod enjeksiyon saldırılarına karşı daha güvenli hale getirir.

Fedora gibi çeşitli dağıtımlarda, paketlerin çoğu PIE olarak oluşturulmuştur.

+0

Teşekkürler! Bu çok ilginç, her ne kadar ben bir uygulama olan makefile gerçekten bu hassas değil (küçük test uygulaması), bu yüzden sanırım bu bayrağı yanlışlıkla eklediler :) (örneğin kopyala yapıştır) – XNor

+0

Teorik olarak, Bu bayrak, aksi halde pozisyona bağlı kod için varsayılan olan ancak bir nedenden dolayı bağlantı kuramayan bazı mimarilerde yararlı olabilir. –

1

sayesinde. Ancak, bunun yerine -fpie ve -pie kullanmalıdır:

cc -c -fpie foo.c -o foo.o 
cc -pie foo.o -o foo 
+0

Teşekkürler! Paketin bu özelliğe gerçekten ihtiyacı olmadığını düşünmesine rağmen, bu bayrağa da bir bakacağım. – XNor

İlgili konular