如何在makefile中指定RPATH?

时间:2011-07-10 01:00:34

标签: makefile gnu-make ld rpath ldflags

我正在尝试在二进制文件中指定rpath。 我的makefile看起来像这个 -

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

1 个答案:

答案 0 :(得分:39)

如果设置变量,则应该使用它们。这是愚蠢的,尤其是当make不会为你神奇地设置这些变量时! :)

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

另一个问题是LDFLAGS,它应该是

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

用于将选项传递给链接器的常用 gcc 开关是-Wl,,这是必需的,因为 gcc 本身可能无法理解裸-rpath链接器选项。虽然 gcc 的各种版本的某些版本接受-rpath,但我从未在 gcc 手册页或信息页中看到它。为了更好的可移植性,-Wl,-rpath应该是首选。