rpath 全称是run-time search path,规定了Linux下可执行文件在寻找.so
文件时的第一优先位置。比如我们想要指定可执行文件运行优先在当前目录下寻找.so 文件,则使用gcc/g++编译时加上以下选项:
-Wl,--disable-new-dtags,-rpath,./
其中-Wl参数用来将GCC的命令行参数传递给ld命令。
--disable-new-dtags表示使用的是rpath,去掉后编译器默认使用runpath。
如果是在Makefile中则指定如下:
CFLAGS = XXX
LDFLAGS = -Wl,--disable-new-dtags,-rpath,./
OBJS = $(patsubst %.cpp, %.o, $(SRCS))
$(TARGET):$(OBJS)
$(CXX) $^ -o $(TARGETDIR)$(TARGET) $(LIBDIR) $(DLLLIBS) $(LDFLAGS)
$(OBJS):%.o:%.cpp
$(CXX) $(CFLAGS) $(DEFS) $(INCDIR) $< -c -o $@