gpt4 book ai didi

autotools - Autoconf 在 OS X 上使用错误的 AR

转载 作者:行者123 更新时间:2023-12-04 02:31:22 26 4
gpt4 key购买 nike

我在 OS X 上测试。我们有一个 configure.acMakefile.am . Autotools 选错了ARARFLAGS为平台。它发生在(和没有)AM_PROG_ARMakefile.am :

$ egrep 'AR =|ARFLAGS =' Makefile
AMTAR = $${TAR-tar}
AR = ar
ac_ct_AR = ar

Autoconf 应该使用 Apple 的 libtool (不要混淆 Autotools 的 libtool )和 libtool的旗帜。苹果 libtool正确处理胖库和交叉编译。应该是 something like :
AR = /usr/bin/libtool
ARFLAGS = -static -o

苹果 Porting UNIX/Linux Applications to OS X不讨论这个话题,我在 Autoconf 文档中找不到它。 Autoconf 文档也缺少 AC_PROG_AR (或类似的)。见 5.2.1 Particular Program Checks在 Autoconf 手册中。

我们如何告诉 Autoconf 使用 Apple 的平台构建工具,而不是 Linux 构建工具?
$ autoconf --version
autoconf (GNU Autoconf) 2.69

$ automake --version
automake (GNU automake) 1.15.1

最佳答案

Autotools is selecting the wrong AR and ARFLAGS for the platform. It happens with (and without) AM_PROG_AR in Makefile.am: [...] Autoconf should be using Apple's libtool



我了解您想要 configure选择和使用 OS X libtool用于创建文件,这样做会给您带来一些好处。 POSIX ar甚至可能不适合您的特定工作,但我拒绝 /usr/bin/ar 的断言。是平台的错误工具。 Apple 在 OS X 中提供了该工具,并且它可以像宣传的那样工作,即使宣传的行为比您想要或需要的更受限制。

It should be something like:

AR = /usr/bin/libtool
ARFLAGS = -static -o


也许。虽然 Mac libtool可以执行与 ar 相同的功能,它不是直接替代品。就是这样 configure当您在其命令行上指定这些变量时提示(但仅当您也有 AM_PROG_AR 时)。特别是,如果您检查 configure您可能会发现它测试了 AR 指定的工具的行为。使用如下命令:
$AR cru libconftest.a conftest.$ac_objext >&5

它还将为 Microsoft 的 lib 提供的界面提供回退。效用。这两个都与 AM_PROG_AR 相关联。宏。

请注意,测试对主要选项使用硬编码标志,而不是任何 $ARFLAGS可能已经指定。是专门测试程序的命令行界面,Mac libtool不提供一个被认可的。

你有几个选择:
  • 让构建系统继续使用AM_PROG_AR , 并为 Mac 提供包装脚本 libtool模仿传统的 POSIX 命令行界面 ar .为 Mac 配置时,将包装脚本指定为 configure作为变量 AR 的值.
    ./configure AR=my-mac-libtool-wrapper
  • 如果构建系统不使用 AM_PROG_AR然后默认 ARARFLAGS变量对 configure 没有任何意义, 但您可以直接将它们指定到 make :
    make AR=/usr/bin/libtool ARFLAGS="-static -o"
  • 或者,如果构建系统不使用 AM_PROG_AR然后您可以添加自己的代码来制作 configure处理ARARFLAGS变量。最低获得configure在不执行任何实际测试的情况下识别它们并将它们传递给 Makefile 可能是:
    AC_ARG_VAR([AR], [Specifies the archiver to use])
    AC_ARG_VAR([ARFLAGS], [Specifies the archiver flags to use])
  • 关于autotools - Autoconf 在 OS X 上使用错误的 AR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47074736/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com