【问题标题】:how to build gcc cross compiler with --disable-multilib如何使用 --disable-multilib 构建 gcc 交叉编译器
【发布时间】:2015-10-11 04:50:28
【问题描述】:

任何人都可以帮助如何构建支持 x86_64 架构的 multilib 的 gcc 交叉编译器?那就是从源代码构建它以支持 m32 和 m64 库。

有一篇很好的文章展示了如何构建 gcc 交叉编译器: http://preshing.com/20141119/how-to-build-a-gcc-cross-compiler/ ,但它只演示了 --disable-multilib 的情况。

我正在尝试使用 --enable-multilib 选项(对于 m32 和 m64)而不是 --disable-mutlilib 构建 x86_64 gcc 交叉编译器。

我遵循这一点,除了使用 arch=x86_64*-* 和 --enable-multilib 我面临的问题是在第 4 步。标准 C 库头文件和启动文件

$ make install-bootstrap-headers=yes install-headers

出现以下错误:

/opt/cross/lib/gcc/x86_64-linux/4.9.2/../../../../x86_64-linux/bin/ld: cannot find crtbegin.o: No such file or directory
/opt/cross/lib/gcc/x86_64-linux/4.9.2/../../../../x86_64-linux/bin/ld: cannot find -lgcc
/opt/cross/lib/gcc/x86_64-linux/4.9.2/../../../../x86_64-linux/bin/ld: cannot find -lgcc_s
/opt/cross/lib/gcc/x86_64-linux/4.9.2/../../../../x86_64-linux/bin/ld: cannot find -lgcc
/opt/cross/lib/gcc/x86_64-linux/4.9.2/../../../../x86_64-linux/bin/ld: cannot find -lgcc_s
/opt/cross/lib/gcc/x86_64-linux/4.9.2/../../../../x86_64-linux/bin/ld: cannot find crtend.o: No such file or director

有什么想法吗?

我将 multilib 安装为:

james@james-Aspire-E5-472G:/usr$ find -name libgcc*.*
./lib32/libgcc_s.so.1
./lib/ure/lib/libgcc3_uno.so
./lib/x86_64-linux-gnu/libgccpp.so.1.0.3
./lib/x86_64-linux-gnu/libgccpp.so.1
./lib/gcc/x86_64-linux-gnu/4.9/libgcc_s.so
./lib/gcc/x86_64-linux-gnu/4.9/32/libgcc_s.so
./lib/gcc/x86_64-linux-gnu/4.9/32/libgcc_eh.a
./lib/gcc/x86_64-linux-gnu/4.9/32/libgcc.a
./lib/gcc/x86_64-linux-gnu/4.9/libgcc_eh.a
./lib/gcc/x86_64-linux-gnu/4.9/x32/libgcc_s.so
./lib/gcc/x86_64-linux-gnu/4.9/x32/libgcc_eh.a
./lib/gcc/x86_64-linux-gnu/4.9/x32/libgcc.a
./lib/gcc/x86_64-linux-gnu/4.9/libgcc_s_x32.so
./lib/gcc/x86_64-linux-gnu/4.9/libgcc_s_32.so
./lib/gcc/x86_64-linux-gnu/4.9/libgcc.a
./libx32/libgcc_s.so.1
./share/doc/libgcc-4.9-dev

james@james-Aspire-E5-472G:/usr$ find -name crtbegin.o
./lib/gcc/x86_64-linux-gnu/4.9/crtbegin.o
./lib/gcc/x86_64-linux-gnu/4.9/32/crtbegin.o
./lib/gcc/x86_64-linux-gnu/4.9/x32/crtbegin.o

【问题讨论】:

    标签: linux gcc embedded-linux


    【解决方案1】:

    看看 Gentoo 项目中的crossdev,它极大地简化了构建交叉编译器。
    根据我的经验,最挑剔的部分通常是找到可以成功构建的binutilsglibcgcc 版本。

    正如 R M 所建议的,您不需要自己构建它,除非您愿意。

    【讨论】:

      【解决方案2】:

      sudo apt-get install gcc-4.9.2

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-21
        • 1970-01-01
        • 2011-09-03
        相关资源
        最近更新 更多