qq76211822 2023-11-29 21:12 采纳率: 0%
浏览 66
已结题

如何编译arm板子的gcc

如何编译一个可以在arm板子上跑的gcc,arm板如rv1126,需要完整流程的。
比如如何编译glibc、如何编译binutils、内核版本是否需要和arm板一致,gcc如何编译,什么版本。最好有详细的内容,勿要引用未经测试的文章,求

根据我先前的研究,交叉编译glibc:

../glibc-2.34/configure \
--prefix=/opt/packet/arm-linux-gnueabihf \
--build=$MACHTYPE \
--host=arm-linux-gnueabihf \
--target=arm-linux-gnueabihf \
--with-arch=armv7 \
--with-fpu=vfp \
--with-float=hard \
--with-headers=/opt/packet/arm-linux-gnueabihf/include \
--disable-multilib \
--disable-werror \
libc_cv_forced_unwind=yes

make install-bootstrap-headers=yes install-headers 
 
make -j8 csu/subdir_lib
 
install csu/crt1.o csu/crti.o csu/crtn.o /opt/packet/arm-linux-gnueabihf/lib
 
arm-linux-gnueabihf-gcc -nostdlib -nostartfiles -shared -x c /dev/null -o /opt/packet/arm-linux-gnueabihf/lib/libc.so
 
touch /opt/packet/arm-linux-gnueabihf/include/gnu/stubs.h

然后执行make -j8 && make install,移植到arm板后,添加export PATH=$PATH:g++路径,export LD_LIBRARY_PATH=libc路径:$LD_LIBRARY_PATH后,支持arm-linux-gnueabihf-g++ -v,报这样的错误:
rm: relocation error: /userdata/media/gcc/packet/arm-linux-gnueabihf/lib/libc.so.6: symbol __nptl_set_robust_list_avail version GLIBC_PRIVATE not defined in file ld-linux-armhf.so.3 with link time reference。 如何解决?再次恳请解决方法,勿要引用未经验证的文章

  • 写回答

22条回答 默认 最新

  • bug菌¹ 优质创作者: Java、算法与数据结构技术领域 2023-11-29 22:15
    关注

    该回答引用ChatGPT,望对题主有所帮助/启发;若有帮助,还望采纳。


    编译适用于ARM板子的gcc需要一系列步骤。下面是一个完整流程的大致示例:

    步骤1: 下载源码
    首先,你需要下载gcc的源码。访问gcc的官方网站(https://gcc.gnu.org/)或从gcc的项目存储库中获取最新的稳定版本。

    步骤2: 安装交叉编译工具链
    在编译gcc之前,你需要安装一个适用于ARM架构的交叉编译工具链。这个工具链包括了编译器、链接器和必要的头文件和库文件。你可以在ARM的官方网站或第三方提供商处获取工具链。

    步骤3: 配置编译选项
    进入gcc源码所在的目录,执行configure命令来配置编译选项。你需要指定目标架构、交叉编译工具链的路径和其他一些选项。以下是一个示例的configure命令:

    ./configure --target=arm-linux-gnueabihf --prefix=<INSTALL_DIR> --with-glibc=<GLIBC_PATH> --with-glibcxx=<GLIBCXX_PATH>
    

    其中,--target选项指定了目标架构,--prefix选项用于指定gcc的安装路径,--with-glibc--with-glibcxx选项用于指定glibc和glibc++库的路径。

    步骤4: 编译并安装gcc
    完成配置后,执行make命令来编译gcc。这个过程可能需要一些时间。最后,执行make install命令来安装gcc到指定的目录。

    步骤5: 验证安装
    完成安装后,你可以验证gcc是否可以在ARM板子上运行。连接你的ARM板子到开发机上,使用交叉编译工具链编译一个简单的C++程序,并将程序拷贝到板子上运行。如果程序可以顺利运行,说明gcc已经成功编译并可在ARM板子上使用。

    请注意,上述流程仅提供了一个大致示例,具体步骤可能会因系统配置和版本差异而有所不同。在实际操作中,可能会遇到一些问题和依赖项的安装需求。建议查阅相关文档或在线资源以获取详细的指导。

    评论

报告相同问题?

问题事件

  • 系统已结题 12月7日
  • 赞助了问题酬金50元 12月4日
  • 修改了问题 12月4日
  • 修改了问题 11月30日
  • 展开全部