首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Autoconf在OS X上使用错误的AR

Autoconf在OS X上使用错误的AR
EN

Stack Overflow用户
提问于 2017-11-02 11:58:00
回答 1查看 2.1K关注 0票数 6

我正在OS上进行测试。我们有一个configure.acMakefile.am。Autotools为平台选择了错误的ARARFLAGS。它发生在(和不存在) AM_PROG_AR中的Makefile.am中。

代码语言:javascript
复制
$ egrep 'AR =|ARFLAGS =' Makefile
AMTAR = $${TAR-tar}
AR = ar
ac_ct_AR = ar

Autoconf应该使用苹果的libtool (不要混淆自动工具的libtool)和libtool的标志。苹果的libtool正确地处理胖库和交叉编译。它应该是就像这样

代码语言:javascript
复制
AR = /usr/bin/libtool
ARFLAGS = -static -o

苹果的将UNIX/Linux应用程序移植到OS上没有讨论这个话题,我也找不到它搜索Autoconf文档。Autoconf文档也缺乏AC_PROG_AR (或类似的)。参见Autoconf手册中的5.2.1特别方案检查

我们如何告诉Autoconf使用苹果的平台构建工具,而不是Linux构建工具?

代码语言:javascript
复制
$ autoconf --version
autoconf (GNU Autoconf) 2.69

$ automake --version
automake (GNU automake) 1.15.1
EN

回答 1

Stack Overflow用户

发布于 2017-11-07 17:33:59

Autotools为平台选择了错误的ARARFLAGS。这种情况发生在(和不使用) 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指定的工具的行为:

代码语言:javascript
复制
$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,那么默认情况下,ARARFLAGS变量对configure没有任何意义,但是您可以直接将它们指定给make: 使AR=/usr/bin/libtool ARFLAGS="-static -o“
  • 或者,如果构建系统不使用AM_PROG_AR,那么您可以添加自己的代码,使configure处理ARARFLAGS变量。让configure识别它们并在不执行任何实际测试的情况下将它们传递给Makefile的最低限度可能是: AC_ARG_VAR(AR,指定要使用的归档程序) AC_ARG_VAR(ARFLAGS,指定要使用的归档标志)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47074736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档