我正在OS上进行测试。我们有一个configure.ac和Makefile.am。Autotools为平台选择了错误的AR和ARFLAGS。它发生在(和不存在) AM_PROG_AR中的Makefile.am中。
$ egrep 'AR =|ARFLAGS =' Makefile
AMTAR = $${TAR-tar}
AR = ar
ac_ct_AR = arAutoconf应该使用苹果的libtool (不要混淆自动工具的libtool)和libtool的标志。苹果的libtool正确地处理胖库和交叉编译。它应该是就像这样。
AR = /usr/bin/libtool
ARFLAGS = -static -o苹果的将UNIX/Linux应用程序移植到OS上没有讨论这个话题,我也找不到它搜索Autoconf文档。Autoconf文档也缺乏AC_PROG_AR (或类似的)。参见Autoconf手册中的5.2.1特别方案检查。
我们如何告诉Autoconf使用苹果的平台构建工具,而不是Linux构建工具?
$ autoconf --version
autoconf (GNU Autoconf) 2.69
$ automake --version
automake (GNU automake) 1.15.1发布于 2017-11-07 17:33:59
Autotools为平台选择了错误的
AR和ARFLAGS。这种情况发生在(和不使用)AM_PROG_AR中的Makefile.am:.Autoconf应该使用苹果的libtool
我知道您希望configure选择并使用OS libtool来创建归档文件,这样做将为您提供一些优势。POSIX ar甚至可能是一个不适合您特定工作的工具,但我不认为/usr/bin/ar是平台的错误工具。Apple在OS中提供了这个工具,它的工作方式和宣传的一样,即使广告中的行为比你想要或需要的更严格。
应该是这样的: AR =/usr/bin/= -static -o
也许吧。尽管Mac libtool可以执行与ar相同的功能,但它并不是一种替代。这就是configure在其命令行中指定这些变量时所抱怨的(但也只有在您拥有AM_PROG_AR时才会抱怨)。特别是,如果您检查configure脚本,您可能会发现它使用如下命令测试AR指定的工具的行为:
$AR cru libconftest.a conftest.$ac_objext >&5对于微软的lib实用工具提供的接口,它也会有退路。这两者都与AM_PROG_AR宏相关联。
注意,测试使用硬编码标志作为主要选项,而不是任何可能已经指定的$ARFLAGS。它专门测试程序的命令行接口,而Mac libtool没有提供被识别的接口。
你有几种选择:
AM_PROG_AR,并为Mac libtool提供一个包装脚本,该脚本模仿POSIX ar的传统命令行接口。在为Mac配置时,将包装脚本指定为configure作为变量AR的值。
./配置AR=my-mac-libtool包装器AM_PROG_AR,那么默认情况下,AR和ARFLAGS变量对configure没有任何意义,但是您可以直接将它们指定给make:
使AR=/usr/bin/libtool ARFLAGS="-static -o“AM_PROG_AR,那么您可以添加自己的代码,使configure处理AR和ARFLAGS变量。让configure识别它们并在不执行任何实际测试的情况下将它们传递给Makefile的最低限度可能是:
AC_ARG_VAR(AR,指定要使用的归档程序) AC_ARG_VAR(ARFLAGS,指定要使用的归档标志)https://stackoverflow.com/questions/47074736
复制相似问题