安装了libtool但找不到libtoolize

45

我正在尝试在我的Mac上从源代码构建libxml2

因此,我已经使用MacPorts安装了autoconflibtoolautomake

autoconfautomake似乎如预期的工作正常。

我先尝试运行autogen.sh

不幸的是,libtoolize --version给出的结果是:

-bash: libtoolize: command not found

我试着再次跑步()

sudo port install libtool

--->  Cleaning libtool
--->  Scanning binaries for linking errors: 100.0%
--->  No broken files found.

我尝试

locate libtool

看起来已经成功安装了。

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/share/man/man1/libtool.1
/Applications/Xcode.app/Contents/Developer/usr/bin/libtool
/Applications/Xcode.app/Contents/Developer/usr/share/man/man1/libtool.1
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/cross/mipsel-linux-binutils/files/110-uclibc-libtool-conf.patch
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/devel/libtool
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/devel/libtool/Portfile
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/devel/libtool/files
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/devel/libtool/files/ltmain.m4sh-allow-clang-stdlib.diff
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/devel/libtool-devel
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/devel/libtool-devel/Portfile
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/devel/openslp/files/libtool-tags.patch
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/devel/t1lib/files/patch-libtool-tag.diff
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/print/pdflib/files/patch-libtool.diff
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/security/steghide/files/libtool-tag.diff
/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/www/apache2/files/libtool-tag.diff
/usr/bin/libtool
/usr/lib/php/build/libtool.m4
/usr/share/apr-1/build-1/libtool
/usr/share/man/man1/libtool.1

我该如何让libtoolize正常工作?

4个回答

42

在 macOS 中,创建 Mach-O 动态库的二进制工具 libtool 已经存在,因此你通常需要使用 glibtoolglibtoolize,这也是 MacPorts 安装它们的方式,通过程序名称转换,尽管端口本身仍然命名为 'libtool'。

一些 autogen.sh 脚本(或等效脚本)将遵循 LIBTOOL / LIBTOOLIZE 环境变量。我自己的 autogen.sh 脚本中有一行:

case `uname` in Darwin*) glibtoolize --copy ;;
  *) libtoolize --copy ;; esac

你可能想要或者不想要 --copy 标志。


注意:如果你使用 MacPorts 安装了 autotools,一个正确编写的configure.acMakefile.am文件只需要autoreconf -fvi。它会按预期调用glibtoolize等工具,否则有些软件包将会分发一个autogen.sh或类似的脚本。


通常 autogen.sh 位于哪里? - Erik
@Erik - 通常位于顶级目录中,并通过在顶级Makefile.am中添加EXTRA_DIST = autogen.sh来包含在分发中。有时它的名称类似于bootstrap.sh。通常情况下,开发人员对autoreconf提供的默认值感到满意。 - Brett Hale
3
只需简单地将 libtoolize 替换为 glibtoolize 即可解决我的问题。 - domoarigato

25

希望我的回答不会太幼稚,我对OSX并不熟悉。

Brew 安装 libtool 对我解决了类似的问题。


1
这个(对于那些可能不想使用Homebrew但不介意一些指针的人)的公式在这里 - ian
4
如果您安装了其他工具,例如imagemagick,您可能会发现brew警告: 为了防止与Apple自己的libtool冲突,我们已经添加了一个"g",所以您需要使用以下工具代替:glibtoolglibtoolize - pzrq
1
使用brew安装libtool时可能会出现问题:您可能会收到类似于“/usr/local/bin/glibtoolize: line 406: /usr/local/Library/ENV/4.3/sed: No such file or directory”的错误。对我有效的解决方案是'brew unlink libtool'(这可能不是必需的),然后'brew uninstall libtool && brew install libtool'(参见ebothmann在https://github.com/Homebrew/legacy-homebrew/issues/43874中的评论)。 - Elise van Looij

19

为了汇集几个线索,当你使用 brew 安装 libtool 时, libtoolize 被安装为 glibtoolize 。可以通过以下方式实现:先安装它,然后为 libtoolize 创建一个软链接:

brew install libtool
ln -s /usr/local/bin/glibtoolize /usr/local/bin/libtoolize

3
最好使用 ln -s $(which glibtoolize) /usr/local/bin/libtoolize - Polluks

0

除了Brew,另一个选择是使用macports。例如:

$ port info libtool
libtool @2.4.6_5 (devel, sysutils)
Variants:             universal

Description:          GNU libtool is a generic library support script. Libtool hides the complexity of using shared libraries behind a consistent, portable interface.
Homepage:             https://www.gnu.org/software/libtool

Build Dependencies:   xattr
Platforms:            darwin, freebsd
License:              libtool
Maintainers:          Email: larryv@macports.org, GitHub: larryv

然后就像 Brew 一样,你执行:

$ sudo port install libtool
Password:
--->  Fetching archive for libtool
--->  Attempting to fetch libtool-2.4.6_5.darwin_15.x86_64.tbz2 from https://packages.macports.org/libtool
--->  Attempting to fetch libtool-2.4.6_5.darwin_15.x86_64.tbz2.rmd160 from https://packages.macports.org/libtool
--->  Installing libtool @2.4.6_5
--->  Activating libtool @2.4.6_5
--->  Cleaning libtool
--->  Updating database of binaries
--->  Updating database of C++ stdlib usage
--->  Scanning binaries for linking errors
--->  No broken files found.                             
--->  No broken ports found.

然后您可以检查它位于哪里……顺便说一句,您可以将glibtoolize软链接到libtoolize。对于我的需求,两者都可以。

$ which glibtoolize
/opt/local/bin/glibtoolize

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接