在Autoconf M4脚本中确定目标体系结构

时间:2015-06-29 19:03:43

标签: mysql autoconf m4 ldflags cflags

我目前正在使用一个系统,该系统需要构建i686和x86_64库,在同一系统上构建和安装它们 - 这是一个遗留项目,它混合了一些新的ABI不可知代码,通常运行在64 bit,因为它可以使用额外的内存,以及一些在64版本时打破的旧代码。

对于99%的链接库,这没有问题;在autoconf,rpm-build和pkg_config之间,它找到了没有问题的正确库。不幸的是,有一个主要的例外 - MySQL。他们没有运送pkg_config脚本,而是拥有自己的自定义mysql_config脚本,并且它不尊重目标ABI - 它只报告最后一个安装的值。

因此,虽然我们将最后一个代码移植到64位上正常运行,但我正在尝试通过编辑Autoconf MySQL配置脚本(官方GNU,ax_lib_mysql.m4)来解决此问题。报告CFLAGS和LDFLAGS取决于目标平台。这就是问题的症结所在 - 在Autoconf M4中有一个很好的方法可以检测你是在构建一个32位还是64位的目标?确切的ABI并不重要 - 它主要是知道我是否需要链接/ usr / lib或/ usr / lib64。

很抱歉写了一篇关于一句话问题的小说,但我在网上发现了一些人们问如何做到这一点的地方,并且从来没有得到答案,因为每个人都忙着告诉他们不应该这样做因为它会使构建过程更加脆弱,所以我试图设置一下阶段。我知道这是一个可怕的黑客(我非常欢迎其他方法!),但我需要一些方法来解决这个问题,以便在过渡期间保持系统建设。

1 个答案:

答案 0 :(得分:0)

我认为你想要的是使用$ host_cpu $或$ build_cpu $如果在配置脚本中添加 AC_CANONICAL_HOST ,将设置设置。

请参阅autoconf info文档中的Getting the Canonical System Type