已安装 libtool 但未找到 libtoolize
Posted
技术标签:
【中文标题】已安装 libtool 但未找到 libtoolize【英文标题】:installed libtool but libtoolize not found 【发布时间】:2013-03-05 02:56:16 【问题描述】:我正在尝试在我的 Mac 上从源代码构建 libxml2
。
所以我使用macports 安装了autoconf
、libtool
和automake
autoconf
和 automake
似乎工作正常。
我尝试先运行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】:您通常需要使用glibtool
和glibtoolize
,因为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.ac
和 Makefile.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的主要内容,如果未能解决你的问题,请参考以下文章