什么是Bazel Dynamic Library搜索路径?
我使用ldd
命令通过Bazel打印出二进制构建,结果如下。
libexternal_Scom_Ugoogle_Uprotobuf_Slibprotobuf.so => /apollo/bazel-bin/cyber/../_solib_k8/libexternal_Scom_Ugoogle_Uprotobuf_Slibprotobuf.so (0x00007f5900b1c000)
libexternal_Scom_Ugoogle_Uprotobuf_Slibprotobuf_Ulite.so => /apollo/bazel-bin/cyber/../_solib_k8/libexternal_Scom_Ugoogle_Uprotobuf_Slibprotobuf_Ulite.so (0x00007f59009f7000)
libexternal_Szlib_Slibzlib.so => /apollo/bazel-bin/cyber/../_solib_k8/libexternal_Szlib_Slibzlib.so (0x00007f59009d8000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f59007d0000)
libPocoFoundation.so.71 => /opt/apollo/sysroot/lib/libPocoFoundation.so.71 (0x00007f59003a5000)
libatomic.so.1 => /usr/lib/x86_64-linux-gnu/libatomic.so.1 (0x00007f590019d000)
我的问题是我找到了ld_library_path
没有路径,
/apollo/bazel-bin/cyber/../_solib_k8/
因此如何添加此路径以找到动态库?
I used the ldd
command to print out the binary build through bazel and the result is as follows.
libexternal_Scom_Ugoogle_Uprotobuf_Slibprotobuf.so => /apollo/bazel-bin/cyber/../_solib_k8/libexternal_Scom_Ugoogle_Uprotobuf_Slibprotobuf.so (0x00007f5900b1c000)
libexternal_Scom_Ugoogle_Uprotobuf_Slibprotobuf_Ulite.so => /apollo/bazel-bin/cyber/../_solib_k8/libexternal_Scom_Ugoogle_Uprotobuf_Slibprotobuf_Ulite.so (0x00007f59009f7000)
libexternal_Szlib_Slibzlib.so => /apollo/bazel-bin/cyber/../_solib_k8/libexternal_Szlib_Slibzlib.so (0x00007f59009d8000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f59007d0000)
libPocoFoundation.so.71 => /opt/apollo/sysroot/lib/libPocoFoundation.so.71 (0x00007f59003a5000)
libatomic.so.1 => /usr/lib/x86_64-linux-gnu/libatomic.so.1 (0x00007f590019d000)
My question is I found LD_LIBRARY_PATH
path not have
/apollo/bazel-bin/cyber/../_solib_k8/
So how is this path added to find the dynamic library?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我终于发现Bazel不会更改
ld_library_path
,但是如果要添加使用,它也可以工作。Bazel写下了通往二进制文件的路径,该路径通过调用
gcc -rpath
来实现此功能,以便在链接时从rpath搜索动态库。 https://en.wikipedia.org/wiki/rpathI finally found out that bazel doesn't change
LD_LIBRARY_PATH
, but if you want to add use it, it works too.bazel writes the path to binary, which implements this function by calling
gcc -rpath
, so that the dynamic library will be searched from rpath when linking. https://en.wikipedia.org/wiki/Rpath