代码之家  ›  专栏  ›  技术社区  ›  Jack Nock

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

  •  50
  • Jack Nock  · 技术社区  · 15 年前

    我使用的是64位系统,但需要一组32位二进制文件。要生成32位/x86生成文件,我必须向配置脚本传递哪些选项?

    5 回复  |  直到 11 年前
        1
  •  74
  •   fuzzyTew    5 年前

    通过将以下参数传递给configure脚本,我可以在64位Linux上构建32位库

    ./configure --build=i686-pc-linux-gnu CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32
    
        2
  •  51
  •   volpato    12 年前

    杰克的回答不完整。

    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 旗帜。

        3
  •  8
  •   Malvineous    11 年前

    我最好设置一个自定义编译器来代替。这样,所有的配置测试,甚至是使用自定义cflag的测试,都能正常工作:

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

    当然,您仍然需要应用程序使用的所有库的32位版本,因此任何关于缺少库的错误都是指32位的库。

        4
  •  4
  •   R Samuel Klatchko    15 年前

    假设gcc/g++:

    CPPFLAGS=-m32 ./configure ...
    
        5
  •  1
  •   Haringat    10 年前

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