s3c2440 gcc交叉编译工具链制作

发布时间:2024-08-01  

前言:

因为准备学习lwip,之前在stm32上移植跟着教程走得差不多了,但是用的keil。所以想在一个新平台移植一下巩固巩固,正好有2440的板子,也学一下gcc-make这样的开发流程,配套的编译器很老,编译配套的linux2.6.22.6内核还是没问题的,但是当我用裸机模板创建一个包含lwip的代码的工程时,编译就会出现以下错误:
collect2: ld terminated with signal 11 [Segmentation fault], core dumped /home/streleizia/gcc-3.4.5-glibc-2.3.6/bin/../lib/gcc/arm-linux/3.4.5/../../../../arm-linux/bin/ld: Warning: gc-sections option ignored /home/streleizia/gcc-3.4.5-glibc-2.3.6/bin/../lib/gcc/arm-linux/3.4.5/../../../../arm-linux/bin/ld: BFD 2.15 assertion fail /work/tools/create_crosstools/crosstool-0.43/build/arm-linux/gcc-3.4.5-glibc-2.3.6/binutils-2.15/bfd/elf32-arm.h:3905 Makefile:176: recipe for target 'build/lwip.elf' failed
搜索了很多都没有找到解决方案,于是我又尝试自己按照教程重新制作配套的工具链,但是很不幸,以前的源码已经不能在我的ubuntu18.04lts上正常编译了,随后我又尝试了arm-none-eabi-gcc 以及 linaro 的gnueabihf(很明显s3c2440并没有fpu完全不合适,但当时乱投医了),最后都因为各种问题失败了,最后的最后决定用crosstool-ng自己为s3c2440制作一个交叉编译器

环境介绍:

VMware16 ubuntuserver18.04 crosstool-ng-1.24.0(尽量用这个版本,在我的机器上gcc7.5编译gcc6.3有bug 用ctng1.24就换成gcc6.5了,可以解决这个问题) gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)


安装ctng

下载解压cd到目录 ./configure --prefix=安装目的位置 make && make install export 安装目的位置 到path 或者修改~/.bashrc 再在自己想要的地方建一个目录用于放置最后输出的交叉编译工具
cd 到这个目录,后面menuconfig和build命令都要在这个目录下执行.


配置目标

按照官网的说法,就是:

  • ./configure --prefix=/some/place
    make
    make install
    export PATH="${PATH}:/some/place/bin"
    cd /your/development/directory
    ct-ng help
    ct-ng menuconfig
    ct-ng build

在ct-ng安装目录下 share/sample/ 里有一些config模板,拷贝到交叉编译器的输出目录下,重命名为.config然后执行ct-ng menuconfig这一部分也可以参考ctng的官网教程,没有几页很快就能看完了

在menu主页切换到Target options选项,如果已经是arm了那前面步骤就没有问题,在这页选项里,对于2440 **Architecture level**要填armv4t Emit assembly for CPU要填arm9tdmi,填完Emit assembly for CPU后architecture选项会消失,这是正常现象(其实直接填Emit assembly for CPU选项就好了,ctng会自动决定另外俩个选项的内容,这也是现代软件带来的好处).Floating point:选择soft 然后我去掉了Use the MMU毕竟只是为了编译裸机代码(后面有需要再重新编译一遍就是了)

在menu主页切换到Paths and misc options选项在这里可以配置目标输出目录,下载包存放目录等等,根据自己喜好配置就行了下面有个Number of parallel jobs选项,就是编译时的线程数,根据自己电脑配置填就行了,比如我的笔记本是8核16线程,我就填了8

在menu主页切换到C compiler选项,在Version of gcc选项可以选择交叉编译器的gcc版本,我选择的是6.5

在menu主页切换到Debug facilities 勾选gdb 回车进入gdb配置,版本我选了7.12.1再勾选上Build a static cross gdb

保存退出


编译目标

执行ct-ng buildctng将会联网下载编译所需软件包,如果网络问题有些包下载不下来,就手动去下载好并放在Paths and misc options选项配置的src目录下就行了,重新build,ct-ng检测到就会跳过下载.

如果一切正常就能在输出目录下得到编译好的交叉工具了,添加到path就可以快乐编译了.在我的环境下编译原来的工程,很顺利地得到了bin文件,烧录到nand上,成功进入主函数点亮led哈哈哈哈,终于可以开始编写网卡驱动了,一切的幸苦都是值得的.

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    编译器的安装路径。保存退出。 执行如下命令: sudo ./configure --prefix=/opt/FriendlyARM/mini2440/madplay/target-arm sudo......
    [JZ2440] 安装 arm-linux-gcc 交叉编译器;一、相关资料获取   我个人在学习 mini2440 开发板时是跟着韦东山老师的视频学习的,视频......
    qt-embedded-linux-opensource-src-4.5.3移植到s3c6410;首先要有配置好的环境,本文使用的编译环境如下: 主机系统:Ubuntu 9.10主机编译器gcc......
    -linux-gcc-3. 4 . 1.tar .bz2, 步骤省略,如下图所示。 2.把交叉编译器路径添加到系统的路径中:在  bashrc的最后一行加上如下一行: PATH=$PATH:/work......
    工具链将被安装到“/opt/freescale”目录下。交叉编译器的具体目录是 “/opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux......
    如何在Linux下为STM32 MCU构建代码;步骤1:安装必需的软件 首先,安装必需的软件。 为ARM安装gcc编译器gcc编译器包含用于编译,链接和构建MCU的构建代码的工具。安装......
    Ubuntu 12.04嵌入式交叉编译环境arm-linux-gcc搭建过程图解;安装前的絮叨 首先简单介绍一下,所谓的搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出嵌入式Linux......
    一下gcc-make这样的开发流程,配套的编译器很老,编译配套的linux2.6.22.6内核还是没问题的,但是当我用裸机模板创建一个包含lwip的代码的工程时,编译就会出现以下错误:collect2......
    的文章进行安装)      主机编译器:  gcc 4.6.1    硬件平台:tiny6410     1、准备环境     必备工具包:bison、flex、texinfo、automake、libtool、cvs......
     install gcc-aarch64-linux-gnu sudo apt install g++-aarch64-linux-gnu 1234 方法2: 从ARM官网下载交叉编译工具,解压后,配置......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>