首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用rpath进行复现链接

使用rpath进行复现链接
EN

Stack Overflow用户
提问于 2014-02-07 07:45:20
回答 1查看 428关注 0票数 2

我想创建一个链接动态库(shared2)的可执行文件( exec ),该动态库链接另一个共享库( shared1 ),这样我就不必在exec的生成文件中指定shared1。具体地说,shared2将-rpath指定为shared1,但是当我编译exec时,将相对于exec而不是shared2来评估rpath。这需要我在exec内部指定shared1的-rpath (这是我想要避免的)。

下面的玩具示例说明了我的观点:

目录树是:

代码语言:javascript
复制
Exec
    main.cpp
    makefile
shared2
    shared2
        shared2.cpp
        shared2.h
        makefile
shared1
    shared1.cpp
    shared1.h
    makefile

Exec/makefile

代码语言:javascript
复制
app: main.o
    g++ main.o -o app -L../shared2/shared2 -Wl,-rpath,../shared2/shared2 -lshared2 #-Wl,-rpath,../shared1

main.o: main.cpp
    g++ -g -c -o main.o main.cpp -I../shared2/shared2

clean:
    rm -f app main.o

shared2/shared2/makefile

代码语言:javascript
复制
libshared2.so: shared2.o
    g++ -shared shared2.o -o libshared2.so -L../../shared1 -Wl,-rpath,../../shared1 -lshared1 

shared2.o: shared2.cpp
    g++ -fPIC -g -c -o shared2.o shared2.cpp -I../../shared1

clean:
    rm -f libshared2.so shared2.o

shared1/makefile

代码语言:javascript
复制
libshared1.so: shared1.o
    g++ -shared shared1.o -o libshared1.so

shared1.o: shared1.cpp
    g++ -fPIC -g -c -o shared1.o shared1.cpp

clean:
    rm -f libshared1.so shared1.o

我让main.cpp使用shared2.cpp中的内容,让shared2.cpp中的内容使用shared1.cpp中的内容。

当我转到编译Exec/makefile时,shared2/shared2/makefile中指定的rpath相对于Exec/makefile的位置进行了评估,因此编译失败。请注意,我在第一个makefile中引用的部分是它成功所必需的,但我想避免这种情况。

有解决办法吗?

非常感谢:)

EN

回答 1

Stack Overflow用户

发布于 2014-02-07 14:28:12

假设您关心Linux或Solaris,请更改以下内容:

代码语言:javascript
复制
libshared2.so: shared2.o
    g++ -shared shared2.o -o libshared2.so -L../../shared1 \
        -Wl,-rpath,../../shared1 -lshared1

要这样做:

代码语言:javascript
复制
libshared2.so: shared2.o
    g++ -shared shared2.o -o libshared2.so -L../../shared1 \
       -Wl,-rpath,'$$ORIGIN/../../shared1' -lshared1

注意:$$ORIGIN两边的单引号是必需的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21616513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档