链接到使用另一个没有 rpath 的共享库的共享库

发布于 2024-11-07 10:24:56 字数 480 浏览 3 评论 0原文

假设我有一个这样创建的库 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 技术交流群。

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

发布评论

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

评论(1

清浅ˋ旧时光 2024-11-14 10:24:56

二进制文件中的 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

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