Ubuntu 10.04 下编译交叉编译环境,编译RTEMS,测试HelloWorld程序
工作调整,需要使用到RTEMS这个实时操作系统
步骤在http://download.csdn.net/source/2584092 这个文档里写的还是比较清楚的。我这里就是列出一些问题的是如何解决的
关于binutils,gdb,gcc,newlib,gmp,mpfr的版本选择问题,我的建议是选择最新的。
一.编译binutils时遇到的问题及解决方法
(1)出错 /usr/rtems/binutils-build-new/bfd/doc 目录的Makefile提示找不到makeinfo
处理:1.看系统中是否真的没有这个命令,如果没有apt-get 安装
2.如果是有这个命令还报这个问题,则是/usr/rtems/binutils-build-new/bfd/doc/Makefile的问题
搜索makeinfo,将前边的...missing全部去掉,再到/usr/rtems/binutils-build-new/bfd下边执行make,再正常执行make即可
(2)出错 ../download/binutils-2.18/binutils/cxxfilt.c 66和71行 error: format not a string literal and no format arguments
处理:对应的Makefile删除掉-Werror ,避免编译器将warning转换为error
(3)出错 /usr/rtems/binutils-build-new/libiberty/Makefile 提示找不到makeinfo
处理:同(1)相同,注意是到 /usr/rtems/binutils-build-new/libiberty 这个目录执行 make info ,再正常执行make info
二.编译gdb时遇到的问题及解决方法
(1)出错 ../download/gdb-6.7.1/gdb/cli/cli-cmds.c:323 error: ignoring return value of ‘getcwd’
处理: 同 一(2)
三.编译gcc时遇到的问题及解决方法
(1)需要下载gmp-4.3.2和mpfr-2.4.2并编译,需要注意,编译选项只有一个 --prefix=/usr
(2)建立newlib的连接,是软连接 如ln -sf ../newlib-1.16.0/newlib/ newlib
(3)执行完configure,说部分目录可以适应这些配置,不用管,直接make
四.编译rtems内核时遇到的问题及解决方法
(1)出错 ../download/rtems-4.9.0/c/src/../../cpukit/libcsupport/src/readlink.c:21: 错误:与‘readlink’类型冲突
../download/rtems-4.9.0/c/src/../../cpukit/libcsupport/src/sync.c 错误:与‘sync’类型冲突
处理:改名readlink 改为readdlink sync改为syncc
(2)出错 错误:sys/rtprio.h
处理:烦请亲手touch一个
(3)出错 错误:‘getopt_data’未声明(在此函数内第一次使用)
处理:在/etc/rtems/(目标系统)/i386-rtems/include/getopt.h 增加
typedef sturct getopt_data
{
int optind;
char *optarg;
}
(4)出错 /usr/rtems/rtems-build-new/i386-rtems/c/pc686/lib/libbsp/i386/pc386/tools里边的ld段错误
处理:cd /usr/rtems/rtems-build-new/i386-rtems/c/pc686/lib/libbsp/i386/pc386/tools 执行make即可,继续正常make
(5)出错 undefined reference to `getopt_r'
处理: 修改rtems源码,用getopt 代替getopt_r 放弃第四个参数
(6)出错 undefined reference to `readlink'
处理: 改成我们修改的readdlink
五. 编译的hello.exe如何用Grub引导的问题
处理:如果是grub 按照文档没有问题
如果是grub2 则是与下边写的类似 在/boot/grub/grub.cfg里边添加
menuentry 'hello'{
set root='(hd0,6)'
multiboot /hello.exe
}
这样在重启机器,选择这个启动项启动,就是hello程序了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?