<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>http://wiki.foofun.cn//index.php?action=history&amp;feed=atom&amp;title=DJGPP</id>
	<title>DJGPP - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.foofun.cn//index.php?action=history&amp;feed=atom&amp;title=DJGPP"/>
	<link rel="alternate" type="text/html" href="http://wiki.foofun.cn//index.php?title=DJGPP&amp;action=history"/>
	<updated>2026-04-03T19:36:14Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>http://wiki.foofun.cn//index.php?title=DJGPP&amp;diff=1089&amp;oldid=prev</id>
		<title>Zhang3：创建页面，内容为“DJGPP工具包是几个基本GNU实用程序到MS-DOS的端口，使用DJ Delorie创建的32位DPMI系统扩展器。 它包括GCC、binutils和Emacs的版本。 它还包括几个DOS和Windows特定的实用程序。  虽然DJGPP在过去被广泛用于操作系统开发，但它与MS-DOS的紧密联系以及与Windows XP的兼容性问题已导致大多数Windows用户转向Cygwin或MinGW。 DJGPP现在肯定被认为已经过时了。  == ELF文件 =…”</title>
		<link rel="alternate" type="text/html" href="http://wiki.foofun.cn//index.php?title=DJGPP&amp;diff=1089&amp;oldid=prev"/>
		<updated>2022-03-30T23:11:22Z</updated>

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