gpt4 book ai didi

shared-libraries - 如何使用自动工具在64位平台上创建32位共享库

转载 作者:行者123 更新时间:2023-12-03 14:08:13 24 4
gpt4 key购买 nike

我正在使用自动工具来构建我的系统,该系统主要由一个库组成。在64位Red Hat平台上,我需要能够产生一个能够在32位Red Hat平台上工作的库。

当我在编译行中添加-m32时,一切正常,可以生成一个静态(.a)库,但是当我尝试创建共享库时,就会出现如下错误:

/usr/bin/ld: warning: i386:x86-64 architecture of input file `/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crti.o' is incompatible with i386 output
/usr/bin/ld: warning: i386:x86-64 architecture of input file `/usr/lib/gcc/x86_64-redhat-linux/4.1.2/crtbeginS.o' is incompatible with i386 output
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/crtbeginS.o: In function `__do_global_dtors_aux':
crtstuff.c:(.text+0x29): undefined reference to `__DTOR_END__'
collect2: ld returned 1 exit status'


我可以看到问题是它包括/ usr / lib64中的64位目标文件,而不是/ usr / lib中的正确32位文件(它们在那里),但是我不知道如何要解决这个问题。

最佳答案

首先,确保对32位编译具有编译器/ libc支持。在某些发行版中,例如Ubuntu,您需要做的是安装软件包gcc-multilib和/或g++-multilib

sudo apt-get install gcc-multilib g++-multilib


然后,在调用configure时,指定一个32位主机并传递32位编译标志:

./configure --host=i686-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"


如果未安装multilib,则在传递 configure: error: C compiler cannot create executables标志时会出现类似 -m32的错误。

关于shared-libraries - 如何使用自动工具在64位平台上创建32位共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5383325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com