如何在 makefile 中指定 RPATH?
我正在尝试在我的二进制文件中指定 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 | 查询 rpath 时grep 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
I'm trying to specify rpath in my binary.
My makefile looks like this-
CC=gcc
CFLAGS=-Wall
LDFLAGS= -rpath='../libs/'
main: main.c
gcc -o main main.c
clean:
rm -f main main.o
But when I query rpath using command readelf -a ./main | grep rpath
I get nothing
I've tried specifying rpath as LDFLAGS= "-rpath=../libs/"
but even that doesn't seem to work.
Can someone please post an example on how should I specify rpath in a makefile?
GCC and ld versions are-
gcc (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2
GNU ld (GNU Binutils for Ubuntu) 2.21.0.20110327
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您设置了变量,您可能应该使用它们。不这样做是愚蠢的,尤其是当 make 不会神奇地为您设置这些变量时! :)
另一个问题是
LDFLAGS
,它应该是用于将选项传递给链接器的常用 gcc 开关是
-Wl,
,它是必需的,因为gcc 本身可能无法理解裸露的-rpath
链接器选项。虽然 gcc 的各种版本的某些版本接受-rpath
,但我从未在 gcc 手册页或信息页中看到它的记录。为了更好的可移植性,应首选-Wl,-rpath
。If you set the variables, you should probably use them. It's silly not to, especially when make won't magically set those variables for you! :)
Another problem is
LDFLAGS
, it should beThe usual gcc switch for passing options to linker is
-Wl,
, and it is needed because gcc itself may not understand the bare-rpath
linker option. While some builds of various versions of gcc accept-rpath
, I have never seen it documented in gcc man pages or info pages. For better portability,-Wl,-rpath
should be preferred.