2011-07-10 20 views
9

İkili dosyamda rpath belirtmeye çalışıyorum. Benim makefile bu-Makefile'de RPATH nasıl belirtilir?

CC=gcc 
CFLAGS=-Wall 
LDFLAGS= -rpath='../libs/' 
main: main.c 
    gcc -o main main.c 

clean: 
    rm -f main main.o 

benziyor Ama rpath komutunu readelf -a ./main | grep rpath kullanarak sorguladığınızda ben LDFLAGS= "-rpath=../libs/" olarak rpath belirterek denedim ama bu bile işe görünmüyor şey olsun.

Birisi bir makefile içinde rpath'i nasıl belirtmeliyim?

GCC ve ld sürümleri değişkenleri ayarlamak, muhtemelen kullanmalıdır

gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2 
GNU ld (GNU Binutils for Ubuntu) 2.21.0.20110327 

cevap

33

vardır-. Aptalca değil, özellikle de bu değişkenler sizin için sihirli bir şekilde ayarlanmazsa! :)

main: main.c 
    $(CC) $(CFLAGS) $(LDFLAGS) -o main main.c 

başka sorun da

LDFLAGS="-Wl,-rpath,../libs/" 

bağlayıcı için seçenekler geçmek için her zamanki gcc anahtarı -Wl, olduğunu ve ihtiyaç duyulan olmalıdır LDFLAGS olduğunu gcc kendisi yüzünden çıplak -rpath linker seçeneğini anlamayabilir. gcc'un çeşitli sürümlerinin bazı sürümleri -rpath'u kabul ederken, onu hiçbir zaman gcc adam sayfalarında veya bilgi sayfalarında belgeledim. Daha iyi taşınabilirlik için, -Wl,-rpath tercih edilmelidir.

+0

Makefile'yi güncelledikten sonra, aşağıdaki hata-gcc'yi alırım: tanınmayan seçenek '-rpath = ../libs /' – user837208

+0

Bir çekicilik gibi çalıştım! çok teşekkürler. – user837208

+3

Küçücük bir nokta ama, herkes merak ettiyse, sadece bu yolun eklenmesi 'LDFLAGS = - Wl, -rpath,/mnt/us/extensions/thing/usr/lib/"' – twobob

İlgili konular