使用 automake 配置脚本在 64 位 Linux 上构建 32 位?

发布于 2024-09-09 20:07:41 字数 76 浏览 6 评论 0原文

我使用的是 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

睡美人的小仙女 2024-09-16 20:07:41

将以下参数传递给配置脚本允许我在 64 位 Linux 上构建 32 位库

./configure --build=i686-pc-linux-gnu CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32

Passing the following argument to configure script allowed me to build the 32bit library on 64bit Linux

./configure --build=i686-pc-linux-gnu CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32
灯角 2024-09-16 20:07:41

杰克的回答是不完整的。

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

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

然后您可以按照您所说的那样调用 configure,指定 32 -bit 主机并传递 32 位编译标志:

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

如果您没有安装 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/or g++-multilib:

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

Then you can call configure as you said, specifyiong a 32-bit host and passing 32-bit compilation flags:

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

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.

碍人泪离人颜 2024-09-16 20:07:41

通过设置自定义编译器,我获得了更好的成功。这样,所有配置测试,甚至是使用自定义 CFLAGS 的测试,都可以正常工作:

./configure CC="gcc -m32" CXX="g++ -m32"

当然,您仍然需要应用程序使用的所有库的 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:

./configure CC="gcc -m32" CXX="g++ -m32"

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.

自由如风 2024-09-16 20:07:41

假设 gcc/g++:

CPPFLAGS=-m32 ./configure ...

Assuming gcc/g++:

CPPFLAGS=-m32 ./configure ...
围归者 2024-09-16 20:07:41

上述方法的另一种方法是(如果有的话)使用专用的 x86 编译器。配置行将如下所示(我以模式“-x86”命名 x86-tools):

CC="/path/to/c/compiler/gcc-x86" CXX="path/to/cpp/compiler/g++-x86" LD="path/to/linker/ld-x86" ./configure

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"):

CC="/path/to/c/compiler/gcc-x86" CXX="path/to/cpp/compiler/g++-x86" LD="path/to/linker/ld-x86" ./configure
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文