如何在 makefile 中指定 RPATH?

发布于 2024-11-19 09:51:28 字数 531 浏览 3 评论 0原文

我正在尝试在我的二进制文件中指定 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空城缀染半城烟沙 2024-11-26 09:51:28

如果您设置了变量,您可能应该使用它们。不这样做是愚蠢的,尤其是当 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

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! :)

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

Another problem is LDFLAGS, it should be

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

The 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文