【问题标题】:gcc architecture questiongcc架构问题
【发布时间】:2010-05-17 16:24:41
【问题描述】:

我正在编译我的程序,架构设置为

-mtune=i386

不过,我也将静态链接到几个库(libpng、zlib、jpeglib、vorbisfile、libogg)。我已经使用 configure 和 make 自己构建了这些库,所以我猜这些库是在将架构设置为我的系统架构(即 i686)的情况下构建的。但我不想那样!我也希望我的程序在 i386 上运行,所以我需要确保我静态链接的所有这些库也是为 i386 构建的。

所以我的问题是:有没有一种方便的方法可以为 i386 构建 libpng/zlib/jpeglib/vorbisfile/libogg 等,还是我必须手动修改它们的所有 makefile 并确保 -mtune 设置为 i386?

感谢您的帮助!

安迪

【问题讨论】:

    标签: linux gcc makefile configure


    【解决方案1】:

    --mtune 仅调整指令输出(排序、调度等),但不保证输出仅为 i386,这就是 --mcpu--march 或 TARGET 的用途(i386-...

    【讨论】:

      【解决方案2】:

      我认为

      CFLAGS="-march=i386 -O3" make ...

      如果他们使用自动工具生成 Makefile 可能会起作用。如果 RPM 具有所需版本的 .a 和标头,您也可以从 RPM 中提取文件。或者去找一个 SRPM 并修改规范/脚本以构建拱门:

      RPM_ARCH="i386"
      

      但是正确地重建库确实不是那么麻烦,以确保您不会错过任何东西。这不像是在编译整个发行版。

      【讨论】:

      • 我反对! :-) 这很麻烦,因为配置脚本生成了一个 50 KB 的 makefile 野兽,其中包含大量对“i686”的引用。执行 ./configure --target=i386 时,这些引用也不会消失.
      猜你喜欢
      • 2010-10-26
      • 1970-01-01
      • 2011-09-10
      • 2013-06-02
      • 1970-01-01
      • 2021-08-12
      • 1970-01-01
      • 2011-02-14
      • 2012-11-25
      相关资源
      最近更新 更多