Debian放弃了对.la文件的支持;我现在该如何建造?

时间:2009-11-03 02:40:43

标签: ubuntu automake libtool

背景

我最近遇到了fuppes UPnP media server,看起来很棒。我将它安装在我的家庭服务器上并开始使用它将视频流式传输到我的XBox。它工作得非常好,我很满意。然后我升级了我的服务器分发和fuppes停止工作;我现在知道这是因为各种图书馆已经贬值,最具体的是debian has started dropping the .la libtool files from the majority of their packages

问题/疑问

所以我的问题是,如果我没有libtool的.la文件,我该如何构建fuppes?更具体地说,这是我的确切错误消息:

/bin/sed: can't read /usr/lib/libogg.la: No such file or directory
libtool: link: `/usr/lib/libogg.la' is not a valid libtool archive

我没有/usr/lib/libogg.la文件了。这证明它来自终端:

# dpkg -L libogg-dev | grep "a$"
/usr/lib/libogg.a
#

我真的需要指出正确的方向。我已经阅读了libtool-automake文档,但我仍然缺少那些告诉我如何编译的信息,因为我现在还没有libogg.la了。简而言之,如何在没有.la文件的情况下进行编译?

N.B。这一切都在Ubuntu Karmic Koala

2 个答案:

答案 0 :(得分:1)

您不应该需要.la文件。您没有粘贴命令输出的重要部分 - 尝试链接到libogg.la文件的步骤。我的猜测是libtool,我的猜测是升级后你在源目录或vcs checkout中运行make,而不重新运行autogen.sh或根据需要进行配置。

简而言之,你没有提供足够的信息来帮助你(你是如何得到fuppes的?你是如何构建它的?你是如何在升级后尝试构建它的?)。很可能您忘记重新生成构建文件,或者某些其他链接器步骤正在拉入.la文件并需要重新生成(例如,pkg-config文件)。

答案 1 :(得分:1)

我相信Debian一直在删除.la文件,因为当你为32位和64位构建时它会导致问题。如果libtool找到一个.la文件,它有一个讨厌的习惯,就是在链接命令中放入库的完整路径,这有时是错误的库(32位而不是64位,反之亦然)。在Solaris上,我遇到了libtool想要链接/usr/lib/libintl.so而不是/usr/lib/64/libintl.so的问题,因为它找到了/usr/lib/libintl.la

你应该能够在没有.la文件的情况下通过在mumble_LIBADD行上指定-logg来链接(用你正在构建的包的名称替换'mumble')在相应的Makefile.am中。如果由于某种原因链接器找不到库,您可以通过添加如下内容来指定它的路径:

mumble_LDFLAGS = -R / usr / lib -L ​​/ usr / lib

但是在这个例子中,我不得不相信/ usr / lib是库的默认搜索路径。

对于你使用sed的特定错误消息,我不知道为什么fuppes使用sed来查找/usr/lib/libogg.la,但是这可能有希望通过libtool上游的适当更改来修复(比如在autoconf或automake中) )。我怀疑'configure'中的某个地方有一个开关可以解决这个问题(比如--with-ogg或者什么)。运行'configure --help'并在那里寻找一些提示。

相关问题