makefile - 如何在 makefile 中指定 RPATH?

标签 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

最佳答案

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

关于makefile - 如何在 makefile 中指定 RPATH?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6638500/

相关文章:

linux -/usr/bin/ld : cannot find -lXext Dependencies issue

c++ - 使用 makefile 识别和减少耦合

command-line - 将 grep 的退出代码存储在 makefile 变量中

makefile - Makefile 中出现错误后如何清除?

makefile - 在包含组件 Makefile 之前如何运行命令?

makefile - 在 GNU Make 3.81 中保留先决条件的尾部斜杠

linker - 由于 PIC,无法从汇编中的 x86-64 对象链接共享库

c - 如何使用自定义版本的 glibc 和静态链接构建 C 程序?

linux - i386 输入文件架构与 i386 不兼容 :x86-64

c - Makefile 链接到一个库