查看“DJGPP”的源代码
←
DJGPP
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
DJGPP工具包是几个基本GNU实用程序到MS-DOS的端口,使用DJ Delorie创建的32位DPMI系统扩展器。 它包括GCC、binutils和Emacs的版本。 它还包括几个DOS和Windows特定的实用程序。 虽然DJGPP在过去被广泛用于操作系统开发,但它与MS-DOS的紧密联系以及与Windows XP的兼容性问题已导致大多数Windows用户转向[[Cygwin]]或[[MinGW]]。 DJGPP现在肯定被认为已经过时了。 == ELF文件 == 使用DJGPP生成ELF文件相当简单。 你需要的是一个安装好的DJGPP,你将需要sed,bison,flex,bash等。 您还需要从Windows95/98等中的dosbox执行此操作,以便您可以使用长文件名。 首先,下载最新的binutils。 (我用了 <tt>binutils-2.9.1.tar.gz</tt>)。 您需要原始(plain)binutils,而不是Linux的binutils,也不是dos的binutils等,而是来自任何GNU存档站点的原始binutils。 下载完binutils后,如果内存不足64mb,请编辑dos box的属性,并手动将65535输入为EMS内存、XMS内存和DPMI内存提供的box中(使用box中的选择器无法输入65535,因此必须手动输入)。 使用DJTARX将binutils解压到根目录(更容易)。 <pre> C: CD \ DJTARX \download\binutils-2.9.1.tar.gz </pre> 解压后,您将不得不对DJGPP安装进行一些非常小的修改 (没什么大不了的!) 进入DJGPP\bin目录并复制<tt>flex.exe</tt> <tt>lex.exe</tt>, <tt>bash.exe</tt>到<tt>sh.exe</tt>并在根目录中创建一个名为<tt>\bin</tt>的新目录,然后将<tt>sh.exe</tt>复制到<tt>\bin\sh.exe</tt> <pre> C: CD \ COPY flex.exe lex.exe COPY bash.exe sh.exe MD \bin COPY \djgpp\bin\bash.exe \bin\sh.exe </pre> <tt>\bin</tt>目录必须与您解压的binutils位于同一驱动器上,该驱动器可以与安装DJGPP的驱动器不同。 现在进入binutils目录 (<tt>cd binutils-2.9.1</tt>) 并编辑 “configure” 脚本。 在脚本顶部附近有三行文字: <pre> remove hard_link symbolic_link </pre> 更改这些行,使其显示为 <pre> remove=rm hard_link=cp symbolic_link=cp </pre> 保存修改后的配置脚本。 通过键入bash来执行bash shell,提示应该更改为“<tt>bash$</tt>”。 现在您必须设置bash以使用djgpp,输入以下命令。 <pre> export CC="c:/djgpp/bin/gcc.exe" export LD="c:/djgpp/bin/ld.exe" export BISON="c:/djgpp/bin/bison.exe" export YACC="c:/djgpp/bin/bison.exe -y" </pre> 现在,您已经准备好构建新的 [[ELF]] 工具集了。 首先,您必须使用一些选项运行configure。 你可以选择你想要构建到你的新的binutil集合中的目标,我构建了所有的目标,以防我以后需要elf以外的其他东西(一些用于BSD的a.out格式,等等)。 <pre> ./configure --enable-targets=all --with-gnu-as --with-gnu-ld --with-stabs </pre> 经过一个非常长的过程,如果一切顺利,您将不会发现任何错误,并将返回 “<tt>bash $ </tt>” 提示,准备构建您的新实用程序。 现在再做些修补。。。配置进度还没有100%,您必须编辑每个目录中的“libtool”文件:bfd/libtool、as/libtool、gprof/libtool、ld/libtool和opcodes/libtool。 因此,退出bash(“Exit”)并使用编辑器打开这些文件,然后重新保存它们(不做任何修改,只需保存)。 这似乎修复了在libtool中有点破坏的crlf/lf/cr unix/dos机制。 重新输入bash并键入<tt>make</tt>,它将构建新的UTIL。 如果您已经启用了所有目标,则生成的<tt>.exe</tt>文件每个大约6到7MB,所以去掉调试信息(<tt>strie --strie-all *.exe</tt>),然后对它们使用DJP压缩器,每个文件应该大约600到900KB。 或者,如果您不想构建所有目标,则可以在没有 “<tt>--enable-targets=all</tt>” 选项的情况下运行配置,并替换为 “--targets=i386-unknown-elf”。 GCC本身不输出[[ELF]]/[COFF]/[a.out]]文件,<tt>GCC</tt>输出汇编器,该汇编器被传递给<tt>AS</tt>,后者将其组装为默认的任何输出格式。 ==另见== === 文章 === *[[GCC]] *[[Cygwin]] *[[MinGW]] ===外部链接=== *http://www.delorie.com/djgpp/ - DJGPP website [[Category:Compilers]]
返回至“
DJGPP
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
变体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息