我正在尝试将项目转换为自动工具。我的项目由一个程序和一个库组成。该库未与该程序链接。相反,该库将与其他程序链接以与我的程序进行通信。我的程序是 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。