2011-07-10 46 views
9

我想在我的二進制文件中指定rpath。 我的makefile文件看起來像這個 -如何在makefile中指定RPATH?

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

clean: 
    rm -f main main.o 

但是,當我查詢使用命令readelf -a ./main | grep rpath rpath的我什麼也沒得到 我已經試過指定rpath的爲LDFLAGS= "-rpath=../libs/"但即使這似乎並沒有工作。

有人可以發表一個關於如何在makefile中指定rpath的例子嗎?

GCC和LD版本是 -

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

回答

33

如果您設置的變量,你應該使用它們。這很愚蠢,尤其是當製作不會爲你神奇地設置這些變量時! :)

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

的另一個問題是LDFLAGS,它應該是

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

通常GCC開關傳遞選項接頭爲-Wl,,它是必要的,因爲GCC本身可能不瞭解裸露的-rpath鏈接器選項。雖然一些版本的gcc接受-rpath,我從來沒有見過它記錄在gcc手冊頁或信息頁面。爲了更好的便攜性,-Wl,-rpath應該是首選。

+0

更新makefile後,我得到下面的錯誤 - gcc:無法識別的選項'-rpath = ../libs /' – user837208

+0

工作就像一個魅力!謝謝一堆。 – user837208

+3

這是一個小問題,但是,如果有人想知道,只需要添加完整的路徑在'LDFLAGS =「 - wl,-rpath,/ mnt/us/extensions/thing/usr/lib/「' – twobob