【问题标题】:Cross compiling libSDL交叉编译 libSDL
【发布时间】:2014-01-09 14:17:49
【问题描述】:

我正在尝试为定制的基于 debian 的 Linux 系统交叉编译 libSDL 1.2 版。我正在使用的工具链已经正确配置,因此我只需在我想要的代码上运行 gcc/g++ 并且生成的输出与目标机器兼容。

当我在 libSDL 源目录中运行./configure --help 时,我发现我基本上可以设置一些环境变量来指向我的交叉编译器。

但是,我也看到以下选项:

System types:
  --build=BUILD     configure for building on BUILD [guessed]
  --host=HOST       cross-compile to build programs to run on HOST [BUILD]

我查看了 configure.inbuild-scripts/config.subbuild-scripts/config.guess 文件,但无法真正弄清楚它是如何工作的。

这些选项是必需的吗?如果没有,使用它们是个好主意吗?

【问题讨论】:

    标签: linux configure compilation


    【解决方案1】:

    使用 autotools,--build 是您构建的基础,--host 是您希望它运行的基础(还有 --target,但只有当您正在编译的东西本身就是一个编译器时,这才重要)。 Autotools 通常会自行计算出--build,因此如果不需要,请不要指定它(但请查看/usr/lib/gcc 以了解您的编译器可能认为--build 应该是什么)

    因此,例如,如果您在 x86_64 上为 i686 构建,请执行

    ./configure --host=i686-linux-gnu 
    

    (并在 CFLAGS 等中使用 -m32 选项,但听起来你已经准备好了。)

    如果你在 i686 上为 x86_64 构建,那么做

    ./configure --host=x86_64-linux-gnu
    

    (您可以为各种疯狂的主机构建:rs6000-ibm-aix、sparc-sun-solaris、mips-idt-ecoff 等...,假设您安装了适当的 gcc 交叉编译器... )

    GNU 的页面在这里:

    http://www.gnu.org/software/automake/manual/html_node/Cross_002dCompilation.html

    【讨论】:

      猜你喜欢
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多