Installing the Free Pascal Compiler/zh CN
│ English (en) │ 中文(中国大陆) (zh_CN) │
这里有一个如何安装和构建FreePascal编译器的广泛讨论,网址:http://www.stack.nl/~marcov/buildfaq.pdf - 对于一些用户来说,它可能有点太过于详细了,但是它是非常全面的。
概述
这里有很多方法来在你的系统上安装FPC。当前发布版本,trunk版本,有时beta版本和RC版本也可以从FPC网站https://sourceforge.net/projects/freepascal/files/ (tar, exe, rpm, dmg 文件)直接获得。另外,从Lazarus的下载网站中也提供了FPC的版本(包括rpm和deb文件),Lazarus网址http://sourceforge.net/projects/lazarus/files/。 Linux用户差不多都能从Linux发行版的存储库中找到FPC,但是可能会发现FPC是过时的版本。
从源文件构建FPC也是可能的,通常每个发布版本都可以使用先前的发布版本构建。在系统安装应用程序空间中(通常需root几或administrator访问权限)或在你自己的用户控件中安装FPC都是能做到的。这些取决于您的特定的操作系统环境。
Linux
FPC二进制文件软件包
尽管最新的FPC3.2.0已经发布,但是只有少数发行版的存储库中存在新的FPC编译器。你可以做一个FPC -
- 如果你使用rpm软件包,你可以在https://sourceforge.net/projects/freepascal/files/Linux/3.2.0/中找到FPC320,或者在https://www.freepascal.org/download.html中的更大范围内查找,你可以使用一个命令来安装,像 -
yum localinstall fpc-3.2.0-1.x86_64.rpm
// 或者
rpm -Uvh fpc-3.2.0-1.x86_64.rpm
- 如果你使用deb软件包,尝试一个可用的软件包,但是它并不是与Lazarus(https://sourceforge.net/projects/lazarus/files/) 绑定在一起。使用gdebi安装,也或者这个命令(注意在文件名称前面的./ ,如果你不使用一个精确的路径到文件名称,apt将搜索它自己的官方存储库,而不是你想要的)-
apt install ./fpc-laz_3.2.0-1_amd64.deb
FPC的Tar包
另一个选项是从一个tar包安装,一种简单并且可能更有用的模型。这些tar包可广泛地用于类Unix系统中。你需要为你的操作系统和CPU来下载恰当的二进制文件tar包,并且你也可能需要所有操作系统/CPU都通用的源文件 文件。你可以在你自己的空间中安装FPC,而不是作为root用户。
这里有一系列的命令,而不是一个脚本,这些命令将在一个64位Linux系统上安装FPC。这些命令可以编写成脚本,但是需要健全性和错误检查。注意,我喜欢在我的$HOME/bin中安装像这样的大小,如果你喜欢在$HOME中安装东西,甚至会更简单一些,我确信你可以看到其中的不同点。
cd
mkdir -p bin/FPC/Tars
mkdir bin/FPC/SRC
cd bin/FPC/Tars
# 下载源文件和编译器tar包,为不同的CPU(或Mac?)做更改
wget https://sourceforge.net/projects/freepascal/files/Source/3.2.0/fpc-3.2.0.source.tar.gz
wget https://sourceforge.net/projects/freepascal/files/Linux/3.2.0/fpc-3.2.0-x86_64-linux.tar
tar xf fpc-3.2.0-x86_64-linux.tar
cd fpc-3.2.0-x86_64-linux
./install.sh
# 当询问在何处安装时,输入$HOME/bin/FPC/fpc-3.2.0 ,并在此之后接受所有的默认值。
cd ../../SRC
tar xzf ../Tars/fpc-3.2.0.source.tar.gz
# 在.bashrc的结尾处,添加并设置一个编译器在哪里的路径,如果你不使用bash,相应地调整!
echo "PATH=\"\$HOME/bin/FPC/fpc-3.2.0/bin\":\"\$PATH\"" >> ~/.bashrc
source ~/.bashrc
# 不重要的测试
cd
fpc -iV
Note: 上面第二个的wget假设你正在使用的是一个amd64 (AMD或Intel)类型的机器,其它的平台需要一个不同的tar包。例如,针对一个Raspberry Pi,你可以使用:-
wget https://sourceforge.net/projects/freepascal/files/Linux/3.2.0/fpc-3.2.0.arm-linux.tar
FPC源文件
FPC源文件文件存储在一个Subversion (SVN)存储库中,该存储库保持跟踪源文件树的所有更改。在你拥有源文件后,关于如何安装它们是说明,请查看在 BSD/Linux下从源文件安装。
使用SVN从源文件存储库更新
SVN存储库已经为每个人提供了只读可访问权限。这意味你可以直接访问代码,并且你将获得最新的源文件。这是一个方法,它需要较少的宽带,在你完成第一次下载后(在SVN中签出)。
获取源文件
首先,你需要一个已经安装的SVN客户端。使用你的软件包管理器,安装一个工具,像在Windows上的TortoiseSVN ,更多信息查看网页。
使用命令行SVN:更改目录(cd)到你开发区域的父目录,例如,为了首次在你的home目录下的一个fpc子目录下,索回完整的源文件存储库,输入:
cd ~
svn checkout http://svn.freepascal.org/svn/fpc/trunk fpc
为更新上面已下载(已签出的)的源文件:
cd ~
svn update fpc
获取一个单独的分支
如果当前的trunk版本处于一个快速变化的状态,不适合多用。除非你想在编译器本身上工作,你可以停留在一个带有fixes分支的更新版本上。为此,你必需找到一个你想要跟踪的稳定分支,而不是默认的trunk开发版本。
下面的示例向你展示如何跟踪fixes_3_2版本;当然,可根据你想跟踪的的分支来进行替换。 Th这个示例将在你的home目录下的另外一个目录下保留fixes分支 - 在一个目录中放置源文件的两个版本是没有意义的...
cd ~
svn checkout http://svn.freepascal.org/svn/fpc/branches/fixes_3_2 fpc_fixes_3_2
照例更新:
cd ~
svn update fpc_fixes_3_2
文档源文件
文档源文件位于一个名称为fpcdocs的单独的存储库中,因此获取它们的命令是:
cd ~
svn checkout http://svn.freepascal.org/svn/fpcdocs/trunk fpcdocs
如果你想要学习更多关于subversion的知识,阅读这本极好的Subversion书籍,它也可以在网上以不同的格式免费获取。
更多信息,查看Free Pascal网站。
FreeBSD
从port集合安装
FreeBSD的port集合在/usr/ports/lang/fpc中有FPC v3.0.4版本。FPC 分散在38 (!)软件包中。FPC源文件现在已经默认安装了;它以前需要从/usr/ports/distfiles/freepascal中复制和解压缩。
这必需以root的身份来完成。
# cd /usr/ports/lang/fpc && make install && make clean
在安装FPC后,你只需要以一个普通用户的身份来检查它是否工作,运行:
$ fpc test
这应该会产生一个类似于这样的输出:
Free Pascal Compiler version 3.0.4 [2020/06/14] for x86_64 Copyright (c) 1993-2017 by Florian Klaempfl and others Target OS: FreeBSD for x86-64 Compiling test Fatal: Cannot open file "test" Fatal: Compilation aborted Error: /usr/local/bin/ppcx64 returned an error exitcode
从tar包安装
根据你的系统选择恰当的32位/64位的tar包文件。对于x86_64的64位的FreeBSD,从x86_64下 载。对于i386的32位的FreeBSD,从i386下载。
为安装Free Pascal,从一个终端中运行:
$ fetch ftp://ftp.freepascal.org/pub/fpc/dist/3.2.0/x86_64-freebsd/fpc-3.2.0.x86_64-freebsd11.tar
$ tar -xf fpc-$FPC_VERSION.$PLATFORM-freebsd11.tar
$ cd fpc-3.2.0.x86_64-freebsd
$ sh install.sh
根据需要替换Free Pascal版本(3.0.4, 3.2.0或3.3.1) 和架构(X86_64或i386)。
如果你想全局安装Free Pascal Compiler,例如在/usr/local中,作为 root用户身份运行install.sh脚本。
如果你在FreeBSD 12或更新的版本,默认的链接器是lld
。这可能会导致问 题,例如,如果你的代码使用 cthreads单元,像下面的程序一样:
uses cthreads;
begin
writeln('hello');
end.
为这个程序生成的可执行文件在运行时将导致一个分段错误。为修复这个问题,你需要安装GNU的链接器:
root# pkg install binutils
并确保/usr/local/bin/存在于你的PATH环境变量中,并在/tt>/usr/bin/之前
在BSD/Linux上从源文件安装
实际上,你需要:
1. 一个包含所有FPC源文件的文件(https://sourceforge.net/projects/freepascal/files/Source/3.2.0/fpc-3.2.0.source.tar.gz).
2. 一个启动(自举)FPC编译器。一个FPC发布版本总是可以由先前发布的FPC版本所构建,FPC trunk版本也总是可以由当前的FPC发布版本所构建。你可以现在一个自举Free Pascal编译器或者使用你发行版的软件包管理器/软件系统来安装一个编译器。
FPC构建过程:
- 获取编译的文件(启动编译器),FPC源文件文件或源文件svn目录
- 如果使用FPC源文件文件:在工作中提取/解压缩文件
- 构建:进入工作的/fpc/目录中并运行:
# Linux使用
export MAKE=`which make` ; echo $MAKE
# FreeBSD使用(默认csh,或tcsh):
set MAKE=`which gmake` ; echo $MAKE
# FreeBSD使用(bash):
export MAKE=`which gmake` ; echo $MAKE
$MAKE all OPT='-gl' FPC=/path/to/startingcompiler-name-ppcx64
# $MAKE在Linux上是make,在BSD上是gmak
# /path/to/可以被忽略,当ppc386 (32位)或ppcx64 (64位)在path中时
- 安装FPC。在工作的/fpc中,运行
$MAKE install FPC=compiler/ppcx64 PREFIX=$THEPREFIX
#如果不在Intel x86上,使用相关的编译器替换FPC=compiler/ppcx64 (或者针对32位的ppc386)
#THEPREFIX= 通常是/usr/local或只是/usr,但是在NetBSD上,它是/usr/pkg)
- 创建符号链接:
ln -s $THEPREFIX/lib/fpc/3.2.0/ppcx64 $THEPREFIX/bin/ppcx64
- 安装源文件:
$MAKE install sourceinstall PREFIX=$THEPREFIX
- 为默认FPC源文件路径创建一个符号链接:
ln -sf $THEPREFIX/share/src/3.2.0/fpc /usr/share/fpcsrc
- 设置fpc.cfg配置文件:
$THEPREFIX/lib/fpc/3.2.0/samplecfg $THEPREFIX/lib/fpc/3.2.0 $ETCDIR
- 可选测试,来查看是否
ppcx64 -i
(或者你的架构使用的任何编译器)给出输出,否则将给出一个用户需要添加$PREFIX/bin到当前path 的警告。尝试使用ppcx64 -viwn
,来编译一个程序,并查看它是否会给出错误。
Notes:
- 如果你需要fpcmake软件包列表,你需要自己生成或提供,(在port中,或者在一个额外的归档文件中),不管哪种方法,做一次模拟安装到/tmp/pack中,并使用下面的目录来确认文件是否已经安装
find . >ll
- $THEPREFIX和$ETCDIR应该是用户可配置的。否则本地安装是不可能的。
- BSDHIER=1在所有BSD系统上的make命令。
Windows
安装FPC二进制文件
到目前为止,获取一个可以工作的Free Pascal安装的最简单的方法是,从SourceForge存储库下载当前的二进制发布版本 - 发布版本包含当前的Free Pascal编译器和Free Pascal 库。
在Windows上从源文件安装
从源文件安装 -- 查看接下来的章节来了解如何获取源文件 -- 这不是针对新手的,因为你也需要一个最开始的编译器。
FPC源文件
<<<< 查看上述针对Linux的[#FPC_sources|FPC源文件]]的章节,在其中描述了SVN的使用 >>>>
通过SVN获取Free Pascal源文件是最简单的方法;更多信息查看下一章节。你也可以下载一个整个软件包 -- 发布树的每日快照版本查看 https://www.freepascal.org/develop.html 。
通过SVN获取FPC源文件
为了执行上述步骤,你将需要安装一个SVN客户端,例如TortoiseSVN。在不同SVN客户端之间的命令名 称各不相同;下面给出的是针对命令行的Subversion客户端,可以从https://sourceforge.net/projects/win32svn/下载。
首先在你想放置源文件的目录中创建一个目录。任何普通用户都可以这样做。为FPC创建一个目录(例如,C:\Source)然后,在命令提示符中执行下面的命令:
C:\Source> svn checkout https://svn.freepascal.org/svn/fpc/trunk fpc
提示:为下载/更新最新的更改,你可以简单地执行:
C:\> cd Source\FPC
C:\Source\FPC> svn update
查看: https://www.freepascal.org/down/i386/win32.html。下载发行软件包(fpc-3.2.0.i386-win32.exe)并运行它 - 它是一个自解压安装器,因此只需要遵循安装说明来安装它。安装器应该会按情况设置PATH环境变量。
接下来重新启动windows。
在你安装FPC二进制文件后,你可以从中构建FPC源文件。
提示:
- Windows (7+) 要求使用一个提升权限状态的用户命令提示符。从开始菜单中右键单击"命令提示符",并选择"以管理员身份运行"。
- YOUR-PREFIX完全取决于你安装FPC的位置。在撰写本文时,二进制文件被指示使用一 个"C:\FPC" 的默认位置,并且将它们被放置到"C:\FPC\3.2.0"中。在Linux下, make install脚本将被调整为创建一个新是子文件夹,如果自上次构建后FPC发生更改的话。在Windows下的脚本将不会做这些。因此,如果你知道子文 件夹的名称,例如 3.1.1,吗可以具体指定它。但是,因为版本经常更改,建议你只选择和维护一个前缀,而不考虑FPC版本。一个很好的前缀的C:\FPC,但是你必需确 保C:\FPC\bin \i386-win32\已经添加到你的path环境变量中(查看上面如何设置你的path,并将其从二进制文件版本更改为新编译的二进制文件版本)。
操作指南:
- 在命令提示符中导航到本地的FPC源文件。例如,输入"cd c:\Developer\FPC"
- 为构建FPC,输入"make all"
- 为重写已存在的FPC,输入"make install PREFIX=YOUR-PREFIX"
- 为安装源文件,输入"make install sourceinstall PREFIX=YOUR-PREFIX"
使用SVN (Win32)从源文件编译/安装FPC
FPC 3.2.0版本 或 trunk版本
步骤#1: 创建目录和获取源文件
创建下面的目录:
c:\freepascal\ c:\freepascal\binutils\ c:\freepascal\binutils\i386-win32\ c:\freepascal\fpc\ c:\freepascal\fpc\3.2.0\
或对于fpc trunk版本来说:
c:\freepascal\ c:\freepascal\binutils\ c:\freepascal\binutils\i386-win32\ c:\freepascal\fpc\ c:\freepascal\fpc\trunk\
你将需要最新的发布版本编译器来构建一个新的编译器。使用FTP(下面的地址)来获取ppc386(编译器),并解压缩它到c:\freepascal\binutils\
ftp://ftp.freepascal.org/pub/fpc/dist/3.2.0/bootstrap/i386-win32-ppc386.zip
在安装TortoiseSVN后,使用针对每个目录的URL来从SVN中下载源文件,查看:
Dir: c:\freepascal\binutils\i386-win32\ URL: https://svn.freepascal.org/svn/fpcbuild/branches/fixes_3_0/install/binw32
或对于fpc trunk版本来说:
Dir: c:\freepascal\binutils\i386-win32\ URL: https://svn.freepascal.org/svn/fpcbuild/trunk/install/binw32
Dir: c:\freepascal\fpc\3.0.4 URL: https://svn.freepascal.org/svn/fpc/branches/fixes_3_0/
或对于fpc trunk版本来说:
Dir: c:\freepascal\fpc\trunk URL: https://svn.freepascal.org/svn/fpc/trunk/
步骤 #2: 创建一个BAT文件来编译FPC
在下载完所有的东西后,我们需要一个BAT文件来编译FPC源文件。 创建一个新的文件c:\freepascal\makefpc.bat,并复制/粘贴下面的脚本:
@echo on
set myroot=c:\freepascal
set myFPC=%myroot%\fpc\3.2.0
set mybinutils=%myroot%\binutils
set PATH=%PATH%;%mybinutils%\i386-win32;%myFPC%\bin\i386-win32
cd %myFPC%
rd /s /q %myfpc%\examples
svn cleanup . --remove-unversioned --remove-ignored
make distclean all install INSTALL_PREFIX=%myFPC% PP=%mybinutils%\ppc386.exe DATA2INC=%myFPC%\utils\data2inc.exe
cd /d %myFPC%\bin\i386-win32
fpcmkcfg -d basepath=%myFPC% -o .\fpc.cfg
copy fpc.exe %mybinutils%\i386-win32
或对于fpc trunk版本来说:
@echo on
set myroot=c:\freepascal
set myFPC=%myroot%\fpc\trunk
set mybinutils=%myroot%\binutils
set PATH=%PATH%;%mybinutils%\i386-win32;%myFPC%\bin\i386-win32
cd %myFPC%
rd /s /q %myfpc%\examples
svn cleanup . --remove-unversioned --remove-ignored
make distclean all install INSTALL_PREFIX=%myFPC% PP=%mybinutils%\ppc386.exe DATA2INC=%myFPC%\utils\data2inc.exe
cd /d %myFPC%\bin\i386-win32
del fpc.cfg
fpcmkcfg -d basepath=%myFPC% -o .\fpc.cfg
copy fpc.exe %mybinutils%\i386-win32
对于针对x86_64的交叉编译器,在第一个make后添加下面的内容:
make all OS_TARGET=win64 CPU_TARGET=x86_64 INSTALL_PREFIX=%myFPC% PP=%mybinutils%\ppc386.exe DATA2INC=%myFPC%\utils\data2inc.exe
make crossinstall OS_TARGET=win64 CPU_TARGET=x86_64 INSTALL_PREFIX=%myFPC% PP=%mybinutils%\ppc386.exe DATA2INC=%myFPC%\utils\data2inc.exe
步骤 #3: Make和安装FPC
在命令提示符中(cmd.exe),导航到目录c:\freepascal and execute the script we just wrote:
cd /d c:\freepascal
makefpc.bat
完成!
macOS
Warning: 如果你也打算安装Lazarus,请忽略这些操作指南,而参考在macOS上安装Lazarus
。
步骤1:下载Xcode
你需要Apple开发人员工具,它们是Xcode开发环境的一部分。
Xcode 11.3.1 for use on macOS 10.14 Mojave must now be installed by downloading it from Apple Developer Connection (ADC), which requires free registration. Xcode 11.4.x for use on macOS 10.15 Catalina can be installed from the Mac App store. Note that you must first move any old Xcode versions from the Applications folder into the trash or rename the Xcode app (eg Xcode.app to Xcode_1014.app). You can select which version of Xcode to use with the command line utility xcode-select.
较旧的系统:
The developer tools can be installed from the original macOS installation disks or a newer copy downloaded from the Apple Developer Connection (ADC), which requires free registration. Download the Xcode file, it will end up in your Downloads directory as a zip file. Click it. It is unarchived into your Downloads directory. You may be happy with it there but maybe not. Other users will see the path to it but be unable to use it. And it is untidy there. So I moved mine and then told xcode-select where it was moved to (in a terminal) -
mv Downloads/Xcode.app /Developer/.
sudo xcode-select -s /Developer/Xcode.app/Contents/Developer
步骤2: Xcode命令行工具
This is shown here as a separate step because it really is a separate step in addition to Step 1. Don't confuse this with the internal Xcode command line tools that the Xcode GUI will tell you are already installed. FPC cannot use those Xcode internal command line tools, so do the following (it is quick and easy)-
sudo xcode-select --install
sudo xcodebuild -license accept
步骤3:下载FPC
从Free Pascal网站现在Free Pascal Compiler (FPC)和FPC源文件。当你到达下载页面时,请选择一个镜像网站,然后为你的操作系统选择正确的版本
这些二进制安装工具包由FPC开发人员构建和跟踪正式发布。因为这些安装包没有代码签名,也没有经过苹果的认证,因此,你需要在安装软件包上单击并选择"打开",或者在安装软件包上右击并在弹出的菜单中选择"打开",接下来确认你要从未知开发人员安装。
其它的macOS安装选项
fpcupdeluxe
你也可以考虑使用fpcupdeluxe来安装FPC。
fink和MacPorts
或者,你可以使用macOS的一个软件包(像fink或MacPorts来安装FPC。她们附加的好处是容易安装和移除FPC,以及大量的其它的开放源文件的软件软件包。Fink也为很多CPU和操作系统提供很多 Free Pascal交叉编译器。
测试FPC安装
在这个阶段,你可能想尝试一个简单而快速的FPC测试。从命令行中(Mac - 打开一个应用程序 > 实用程序 > 终端),复制这个非常短的程序,并保存它为文件helloworld.pas:
program helloworld;
begin
writeln('hello world !');
end.
现在使用这个命令行编译这个简单的代码:
fpc helloworld.pas <enter>
它应该会快速生成一个可执行文件,你可能会猜到它的名称为"helloworld"。使用这个命令来运行这个可执行文件:
./helloworld <enter>
如果这样工作,很好地完成了!
安装交叉编译器
一个交叉编译器允许你为一个平台创建一个不同于正在使用的编译平台的二进制文件(可执行文件)。例如,在macOS下工作,并为Win32,FreeBSD或Linux创建可执行文件。 关于如何安装交叉编译器的详细情况,查看交叉编译。