使用 automake 配置脚本在 64 位 Linux 上构建 32 位?
我使用的是 64 位系统,但想要一组 32 位二进制文件。我必须将哪些选项传递给配置脚本才能生成 32 位/x86 makefile?
I'm using a 64bit system but want a set of 32bit binaries. What options must I pass to a configure script to generate a 32bit/x86 makefile?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
将以下参数传递给配置脚本允许我在 64 位 Linux 上构建 32 位库
Passing the following argument to configure script allowed me to build the 32bit library on 64bit Linux
杰克的回答是不完整的。
您需要编译器/libc 支持 32 位编译。在某些发行版(例如 Ubuntu)中,您需要做的是安装软件包
gcc-multilib
和/或g++-multilib
:然后您可以按照您所说的那样调用 configure,指定 32 -bit 主机并传递 32 位编译标志:
如果您没有安装 multilib,则在传递
-m32< 时,您将收到类似
configure: error: C compiler cannot createexecutables
的错误/代码> 标志。Jack's answer is incomplete.
You need compiler/libc support for 32-bit compilation. In some distros like Ubuntu, what you need to do is install packages
gcc-multilib
and/org++-multilib
:Then you can call configure as you said, specifyiong a 32-bit host and passing 32-bit compilation flags:
If you do not have multilib installed, you will get an error like
configure: error: C compiler cannot create executables
when passing the-m32
flag.通过设置自定义编译器,我获得了更好的成功。这样,所有配置测试,甚至是使用自定义 CFLAGS 的测试,都可以正常工作:
当然,您仍然需要应用程序使用的所有库的 32 位版本,因此任何有关缺少库的错误都指的是 32 位版本。
I had better success by setting a custom compiler instead. This way all the configure tests, even the ones using custom CFLAGS, worked correctly:
You still need 32-bit versions of all the libraries the application uses of course, so any errors about missing libraries are referring to the 32-bit ones.
假设 gcc/g++:
Assuming gcc/g++:
上述方法的另一种方法是(如果有的话)使用专用的 x86 编译器。配置行将如下所示(我以模式“-x86”命名 x86-tools):
An alternative way to the things described above would be (if you have) to use a dedicated x86 compiler. The configure line would then be like this (I named the x86-tools after the pattern "<toolname>-x86"):