1

背景

我最近遇到了fuppes UPnP 媒体服务器,它看起来很棒。我将它安装在我的家庭服务器上并开始使用它将视频流式传输到我的 Xbox。它工作得非常好,我很满意。然后我升级了我的服务器分发和 fuppes 停止工作;我现在知道这是因为各种库已经贬值,特别是debian 已经开始从他们的大多数包中删除 .la libtool 文件

问题/问题

所以我的问题是,既然我没有那些用于 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 文件的情况下如何编译?

注意这一切都在 Ubuntu Karmic Koala 上

4

2 回答 2

1

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

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

于 2009-11-03T23:20:28.223 回答
1

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

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

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

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

To your particular error message with sed, I don't know why fuppes uses sed to find /usr/lib/libogg.la, but this may hopefully be fixed by an appropriate change upstream from libtool (like in autoconf or automake). I suspect that there's a switch somewhere in 'configure' that helps with this issue (like --with-ogg or something). Run 'configure --help' and look for some hints there.

于 2009-12-04T15:29:34.087 回答