链接到使用另一个没有 rpath 的共享库的共享库
假设我有一个这样创建的库 lib1.so:
gcc 1.cpp -o lib1.so -shared
我还有另一个以这种方式创建的库 lib2.so:
gcc 2.cpp -o lib2.so -shared -L. -l1
但是链接 lib2.so
gcc main.cpp -o main -L. -l2
会发出警告:
warning: lib1.so, needed by lib2.so, not found (try using -rpath or -rpath-link)
但据我所知,不鼓励使用 rpath,因为这样该库就不能被移动到另一个位置。
如何在不指定“lib1.so”和 rpath 的情况下将“main”链接到“lib2.so”?
Let's say I have a library lib1.so created like that:
gcc 1.cpp -o lib1.so -shared
And I have another library lib2.so created in this way:
gcc 2.cpp -o lib2.so -shared -L. -l1
But linking against lib2.so
gcc main.cpp -o main -L. -l2
gives a warning:
warning: lib1.so, needed by lib2.so, not found (try using -rpath or -rpath-link)
But AFAIK the use of rpath is discouraged because then the library can not be moved to another location.
How do I link "main" against "lib2.so" without specifying "lib1.so" and rpath?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
二进制文件中的 RPATH 标头优先,因此即使库没有 RPATH 标头,如果您已将其复制到
-rpath
中提到的目录,仍然会找到它The RPATH header in the binary takes precedence so even if the library has no RPATH header, it will still be found IF you have copied it to the directory mentioned in
-rpath