3

我正在尝试安装一个 ruby​​gem,它继续尝试读取一个不可用的库。

grep: /usr/lib64/libgdbm.la: No such file or directory /bin/sed: can't read /usr/lib64/libgdbm.la: No such file or directory libtool: link: /usr/lib64/libgdbm.la' is not a valid libtool archive

为了解决这个问题,我安装了自己的 libgdbm 并在 makefile LDFLAGs 中提供了 libgdbm 的路径,但无济于事。

任何帮助深表感谢。

4

2 回答 2

1

这个 ruby​​gem 似乎做了一些肮脏的事情,因为任何干净的库搜索(-L或 pkg-config)都会导致类似“找不到库/包 gdbm”的消息。尤其是 la 文件上的 grep-and-sed 过程看起来真的很脏。确保圣诞老人知道这颗宝石的作者今年没有收到任何礼物。

gem 可能具有硬编码的 libtool 存档的路径。首先,尝试grep for /usr/lib64/libgdbm.lain Makefilethe gem。更改硬编码路径,并确保安装脚本对任何系统目录都没有写权限,因为它似乎与seds 一起运行。

于 2011-12-17T11:24:58.853 回答
1

Libtool 需要对您的编译器套件和操作系统有深入的了解,以便能够创建共享库并正确链接它们。当您安装 libtool 发行版时,系统特定的 libtool 脚本会安装到您的二进制目录中。但是,当您使用自己的包分发 libtool 时,您并不总是知道用于编译您的包的编译器套件和操作系统。

为此,必须先配置 libtool,然后才能使用它。任何使用过 GNU 配置脚本的人都应该熟悉这个想法。configure 运行许多系统功能测试,然后生成 Makefiles(可能还有 config.h 头文件),之后您可以运行 make 并构建包。

Libtool 将自己的测试添加到您的配置脚本中,以便为安装程序的主机生成 libtool 脚本。为此,您可以在 configure.ac 中使用 LT_INIT 宏。

所以简而言之,如果你的包有配置文件,在运行 Make 之前运行它

make distclean //clean up all the previous generated files
autoconf //or autoreconf to generate configure script from configure.ac and configure.in
automake //to generate new Makefile.in from Makefile.ac
./configure //to generate new Makefile and libtool
于 2014-01-25T02:10:09.353 回答