【问题标题】:Autotools: create a 32-bit and 64-bit library with a single makefile?Autotools:使用单个 makefile 创建 32 位和 64 位库?
【发布时间】:2013-05-22 17:48:09
【问题描述】:

我正在尝试将项目转换为自动工具。我的项目由一个程序和一个库组成。该库没有与程序链接。相反,该库将与 other 程序链接以与我的程序进行通信。我的程序是 64 位的,但我需要一个 32 位和一个 64 位的库来确保它可以被任何程序使用。我不知道该怎么做——好像 autotools 只支持整个包的一种主机架构。

我尝试设置 -m32 标志以获取 32 位库,但这不起作用,因为链接器尝试与 /usr/lib 而不是 /usr/lib32 链接。即使我将 /usr/lib32 添加到链接器标志,我仍然会收到如下错误:

/usr/bin/ld: i386:x86-64 architecture of input file `/usr/lib/gcc/x86_64-unknown-linux-gnu/4.8.0/../../../../lib/crti.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/lib/gcc/x86_64-unknown-linux-gnu/4.8.0/crtbeginS.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/lib/gcc/x86_64-unknown-linux-gnu/4.8.0/crtendS.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/lib/gcc/x86_64-unknown-linux-gnu/4.8.0/../../../../lib/crtn.o' is incompatible with i386 output

所以我想这不是正确的做法。我当然可以为库创建一个单独的包,但我想避免这种情况。是否可以将所有东西都放在一个包中?

解决方案不必是跨平台的,这个程序是 linux-only。

【问题讨论】:

    标签: linux autotools


    【解决方案1】:

    据我所知,大多数支持 64 位的 Linux 发行版都有每个 lib 包的 2 个版本:32 位和 64 位。由于 autotools 仅支持一种主机架构,因此最容易进行两次构建。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-30
      • 2017-06-01
      • 2012-01-26
      • 2019-01-09
      • 1970-01-01
      • 1970-01-01
      • 2012-08-19
      • 1970-01-01
      相关资源
      最近更新 更多