已安装 libtool 但未找到 libtoolize

Posted

技术标签:

【中文标题】已安装 libtool 但未找到 libtoolize【英文标题】:installed libtool but libtoolize not found 【发布时间】:2013-03-05 02:56:16 【问题描述】:

我正在尝试在我的 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 工作?

【问题讨论】:

【参考方案1】:

您通常需要使用glibtoolglibtoolize,因为libtool 已经在OS X 上作为用于创建Mach-O 动态库的二进制工具存在。所以,这就是 MacPorts 安装它的方式,使用程序名称转换,尽管端口本身仍然命名为“libtool”。

一些autogen.sh 脚本(或它们的等效脚本)将支持LIBTOOL / LIBTOOLIZE 环境变量。我在自己的autogen.sh 脚​​本中有一行:

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

您可能想要也可能不想要--copy 标志。


注意:如果您使用 MacPorts 安装了自动工具,则正确编写的 configure.acMakefile.am 文件应该只需要 autoreconf -fvi。正如预期的那样,它应该调用glibtoolize等。否则,一些包会分发autogen.sh 或类似的脚本。

【讨论】:

autogen.sh 通常位于哪里? @Erik - 通常在***目录中,并通过在***Makefile.am 中添加EXTRA_DIST = autogen.sh 包含在分发中。有时它的名称类似于bootstrap.sh。通常,开发人员对 autoreconf 提供的默认值感到满意。 简单地将libtoolize 替换为glibtoolize 为我工作【参考方案2】:

希望我的回答不要太天真。我是 OSX 的菜鸟。

brew install libtool 为我解决了类似的问题。

【讨论】:

公式(对于那些可能不想使用 Homebrew 但不介意一些指针的人)是here 如果您安装了其他工具,例如 imagemagick,您可能会发现 brew 警告:In order to prevent conflicts with Apple's own libtool we have prepended a "g" so, you have instead: glibtool and glibtoolize跨度> 使用 brew 安装 libtool 时出现问题:您可能会收到类似“/usr/local/bin/glibtoolize: line 406: /usr/local/Library/ENV/4.3/sed: No这样的文件或目录”。对我有用的解决方案是“brew unlink libtool”(这可能不是必需的),然后是“brew uninstall libtool && brew install libtool”(ebothmann 在github.com/Homebrew/legacy-homebrew/issues/43874 的评论)。【参考方案3】:

当您使用 brew 安装 libtool 时,将几个线程 libtoolize 安装为 glibtoolize。这可以通过以下方式实现;安装它,然后为 libtoolize 创建一个软链接:

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

【讨论】:

更好用ln -s $(which glibtoolize) /usr/local/bin/libtoolize【参考方案4】:

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

【讨论】:

以上是关于已安装 libtool 但未找到 libtoolize的主要内容,如果未能解决你的问题,请参考以下文章

已安装 libusb - 但未找到 pyUSB 后端

Gensim 4.1.2 已安装但未找到

Maven 发现已完成,但未找到任何扩展

已安装Rcpp Rtools但未找到错误消息g ++

已加载 PDO 和 pdo_mysql 但未找到类

安装 memcached - 类存在但未找到