20

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

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

clean:
    rm -f main main.o 

但是,当我使用命令查询 rpath 时,我readelf -a ./main | grep rpath什么也没得到,我尝试将 rpath 指定为,LDFLAGS= "-rpath=../libs/"但即使这样似乎也不起作用。

有人可以发布一个关于我应该如何在生成文件中指定 rpath 的示例吗?

GCC 和 ld 版本是-

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

1 回答 1

48

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

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

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

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

将选项传递给链接器的常用gcc-Wl,开关是,它是必需的,因为gcc本身可能不理解裸-rpath链接器选项。虽然各种版本的gcc accept的一些构建-rpath,但我从未在gcc手册页或信息页中看到它记录。为了更好的便携性,-Wl,-rpath应该是首选。

于 2011-07-10T01:10:45.427 回答