libtool 添加额外的“U” 到 .so 文件名
我有一个用 autotools 构建的项目,分为两个文件夹; 第一个,lib,创建一些库,第二个,tools,链接它们。
构建失败,因为 libtool 在重新链接时按如下方式重命名库:
mylib.1.0.0 -> mylib.1.0.0U
重命名发生后,无论如何,以前的名称不会恢复,也不会创建新的 mylib.1.0.0,因此符号链接如下mylib 仍然指向没有额外 U 的名称,并且链接失败。
有什么办法可以避免这种情况吗? 或者甚至可能根本避免重新链接? 我正在使用 libtool 版本 1.5.6。
I have a project built with autotools, divided into two folders; the first one, lib, creates some libraries, and the second one, tools, links against them.
The build fails because libtool renames the libraries as follows while relinking:
mylib.1.0.0 -> mylib.1.0.0U
After the renaming occurs, anyway, the previous name is not restored, nor is a new mylib.1.0.0 created, so the symbolic links like mylib still point to the name without the extra U and the linking fails.
Is there any way to avoid this? or maybe even to avoid the relinking at all? I'm using libtool version 1.5.6.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
显然我明白了...
使用以下结构可以轻松重现该问题:
然后您必须在 lib/Makefile.am 中指定这一点:
此时将生成 liba.so.1.0.0U 文件。 相反,指定(请注意,库的顺序已更改)
构建工作正常。
我同意以正确的顺序指定事物在任何情况下都是最好的做法; 我仍然不清楚这是否是一个 libtool 错误......
Apparently I got it...
The problem is easily reproducible with the following structure:
Then you must specify this in lib/Makefile.am:
At that point a liba.so.1.0.0U file will be produced. Specifying instead (note that the order of the libraries is changed)
the build works fine.
I agree that specifying things in the correct order is in any case the best thing to do; what is still unclear to me is if this is a libtool bug or not...