FB的DOS版本通常在安装了DJGPP和DOS版本的FB的32位Windows系统上编译。
准备
获取FB源代码
要编译新版本的FB,您首先需要
获取FB源代码.以下假设您有一个名为
fbcdos的目录,其中包含最新的FB源代码。命名它
fbcdos很方便,因为它避免了冲突,以防您也有一个
fbc目录用于构建Windows版本的FB。
安装DJGPP
要安装DJGPP,我们需要下载几个可以在
DJGPP主页找到的软件包。FB需要
beta/v2/目录中的djdev204.zip,以及
beta/v2gnu/目录中的其他几个。如果有任何东西丢失,您还可以查看
current/v2gnu/目录。需要以下软件包:
- binutils (bnu*b.zip)
- bash (bsh*.zip)
- djdev (djdev*.zip) - pick up djdev204.zip or later from the beta/ directory
- fileutils (fil*.zip)
- gcc (gcc*b.zip)
- g++ (gpp*b.zip)
- make (mak*b.zip)
- shellutils (shl*b.zip)
- textutils (txt*b.zip)
通过将所有内容提取到
C:\DJGPP并添加名为“DJGPP”的环境变量,设置为
C:\DJGPP\djgpp.env,设置DJGPP。
它可以是有用的(特别是与MinGW并行工作)使用批处理脚本在其PATH环境变量中使用DJGPP工具启动终端,而不是修改系统的全局PATH环境变量:
set DJGPP=C:\DJGPP\djgpp.env
set PATH=C:\DJGPP\bin;%PATH%
cd C:\
cmd
最后,您应该能够在其PATH中使用
C:\DJGPP\bin打开命??令提示符,以便运行
gcc命令运行DJGPP的gcc(而不是MinGW的gcc)。
独立构建(自包含FB)
获取现有的FB设置进行自举
我们需要一个工作的FB-dos安装来引导新的FB编译器。如果您尚未安装FB-dos,请从
FB的下载网站下载最新的FreeBASIC-X.XX.X-dos版本。它应该在
C:\FreeBASIC-X.XX.X-dos之外提取。
构建新的FB设置
如果要创建
传统独立FB-dos设置,如
FreeBASIC-X.XX.X-dos发行版中的那样,您需要通过设置ENABLE_STANDALONE变量来告知FB的makefile。假设FB源位于
C:\fbcdos,请创建一个包含以下内容的
C:\fbcdos\config.mk文件:
ENABLE_STANDALONE = 1
然后,在其PATH中打开一个带有
C:\DJGPP\bin的命令提示符,使用FB源代码进入目录,运行“make”,将
FBC=...变量设置为指向现有的fbc.exe用于引导,并让它编译:
> cd C:\fbcdos
> make FBC=C:/FreeBASIC-X.XX.X-dos/fbc.exe
这应该在
lib\dos\中生成了
fbc.exe编译器和库。要完成这个新的FB设置,您需要将binutils(as.exe,ar.exe,ld.exe)添加到
bin\dos\中,并在一些DJGPP库中复制到
lib\dos\.
- 将这些文件复制到C:\fbcdos\bin\dos:
- C:\DJGPP\bin\{ar,as,ld}.exe
- 将这些文件复制到C:\fbcdos\lib\dos:
- C:\DJGPP\lib\{crt0,gcrt0}.o
- C:\DJGPP\lib\lib{emu,m}.a
- C:\DJGPP\lib\gcc\djgpp\[version]\libgcc.a
如果需要,您可以复制更多的库,例如
C:\DJGPP\lib\gcc\djgpp\[version]\libsupcxx.aC ++支持库,或者来自
C:\DJGPP\lib\目录的其他库。
关于
libc.a的注意事项:FB需要修改版本的DJGPP的libc.a,因为DJGPP的libc.a包含一个错误(有关详细信息,请参阅fbc源代码中的
contrib/djgpp/readme.txt)。FB makefile应该照顾它,并在
lib\dos\libc.a生成libc.a的修改版本。这不应该被DJGPP的原始libc.a覆盖。
现在,新的FB设置应该可以使用了。您可以从源代码树中使用它,或将其复制到别的地方。以下是相关的文件和目录:
- fbc.exe
- bin/dos/
- inc/
- lib/dos/
如果将来重建它(例如,在从Git更新FB源代码之后),您可以通过运行“make”,而不指定外部
FBC来重建本身。然后,它将使用默认的
FBC=fbc,这在这种情况下对应于同一目录中的fbc.exe。
> cd C:\fbcdos
> make
正常构建(如Linux)
获取现有的FB设置进行自举
我们需要一个工作的fbc安装来引导新的FB编译器。如果您尚未安装fbc,请从
FB的下载网站下载最新的fbcXXXXb软件包,并将其解压缩到DJGPP目录(
C:\DJGPP),如DJGPP软件包。这将为您的DJGPP安装添加一个工作的fbc。
构建新的FB设置
为了创建像
fbcXXXXb发行版中的正常(非独立)构建,只需编译FB而不指定
ENABLE_STANDALONE.在PATH中使用
C:\DJGPP\bin打开命令提示符,使用FB源代码进入目录,运行“make”并进行编译。
> cd C:\fbcdos
> make
这应该已经生成了
bin/fbc.exe编译器和库
lib\freebas\dos\.
或者,您可以通过运行“make install”将此设置复制到
C:\DJGPP树中:
> make install prefix=C:/DJGPP
将前缀变量存储在
config.mk中是非常有用的,因此您将来可以运行
make install,而无需手动重新设置:
# config.mk:
prefix = C:/DJGPP
以这种方式将fbc安装到DJGPP树中意味着它的作用就像是DJGPP的一部分。但是,也可以从源代码树中使用fbc,而不必在其他地方安装它。它将调用
gcc -print-file-name=...以找到DJGPP binutils和库。