注意:
因验证这个方法,做了2次,所以截图有fpcupdeluxe4和fpcupdeluxe499,操作时按你的实际设置就可以。
一、前期准备工作:
1、下载fpc源码:
https://gitlab.com/freepascal.org/fpc/source
2、下载lazarus源码:
https://gitlab.com/freepascal.org/lazarus/lazarus
下载后按以下截图建相关目录(我这是:/home/lbz/fpcupdeluxe4):

3、下载ppcloongarch64/fpcmake及fpcsrc的loongarch64码:
链接: https://pan.baidu.com/s/14DeCj06V89Wo8dePyqOy9A?pwd=hqhr 提取码: hqhr
1、解压后放fpcbootstrap目录

2、解压fpcsrc.zip替换fpcsrc相应的文件
二、编译fpcsrc源码
将ppcloongarch64拷贝到fpcbootstrap目录
打开/home/lbz/fpcupdeluxe4/fpcsrc/compiler/loongarch64/agcpugas.pas
将'lp64d'改为'lp64',然后保存
const as_loongarch64_gas_info : tasminfo = ( id : as_gas; idtxt : 'AS'; asmbin : 'as'; asmcmd : '-o $OBJ $EXTRAOPT -mabi=lp64d $ASM'; supported_targets : [system_loongarch64_linux]; flags : [af_needar,af_smartlink_sections]; labelprefix : '.L'; labelmaxlen : -1; comment : '# '; dollarsign: '$'; );
关键的文件是ppcloongarch64,这个文件使用了'lp64'指定。
uos等系统的binutils使用'lp64',但fpc官方的龙芯源码是使用'lp64d',使用官方源码编译的ppcloongarch64在UOS 1070编译时会出现:/home/lbz/fpcupdeluxe4/fpcsrc/rtl/units/loongarch64-linux -Fl/usr/lib/gcc/loongarch64-linux-gnu/8 -dloongarch64 -dRELEASE -Us -Sg system.pp Assembler messages: 错误:unrecognized option -#lp64d
编译fpcsrc:
1、设置路径:
export PATH=/data/home/lbz/fpcupdeluxe4/fpc/bin/loongarch64-linux:$PATH
2、编译:
make install CPU_TARGET=loongarch64 OS_TARGET=linux CPU_SOURCE=loongarch64 OS_SOURCE=linux OPT='-gl -O2' FPC=/home/lbz/fpcupdeluxe499/fpcbootstrap/ppcloongarch64 OVERRIDEVERSIONCHECK=1 PREFIX=/home/lbz/fpcupdeluxe499/fpc -j16
重复编译时要先清理:
make --jobs=8 FPMAKEOPT=--threads=8 --directory=/home/lbz/fpcupdeluxe4/fpcsrc FPC=/home/lbz/fpcupdeluxe4/fpcbootstrap/ppcloongarch64 FPCMAKE=/home/lbz/fpcupdeluxe4/fpc/bin/loongarch64-linux/fpcmake PPUMOVE=/home/lbz/fpcupdeluxe4/fpc/bin/loongarch64-linux/ppumove FPCDIR=/home/lbz/fpcupdeluxe4/fpcsrc PREFIX=/home/lbz/fpcupdeluxe4/fpc INSTALL_PREFIX=/home/lbz/fpcupdeluxe4/fpc CPU_SOURCE=loongarch64 OS_SOURCE=linux CPU_TARGET=loongarch64 OS_TARGET=linux distclean
如果编译过程出现以下错误:
*** The Makefile doesn't support target loongarch64-linux, please run fpcmake first。 
make[2]: 进入目录“/data/home/lbz/fpcupdeluxe499/fpcsrc/packages” Makefile:215: *** The Makefile doesn't support target loongarch64-linux, please run fpcmake first。 停止。 make[2]: 离开目录“/data/home/lbz/fpcupdeluxe499/fpcsrc/packages” make[1]: *** [Makefile:3201:packages_clean] 错误 2 make[1]: 离开目录“/data/home/lbz/fpcupdeluxe499/fpcsrc” make: *** [Makefile:3326:build-stamp.loongarch64-linux] 错误 2
按以下命令执行,执行后Makefile就支持龙芯了。
设置fpcmake所在路径,然后执行:regenmakefiles.sh
export PATH=/home/lbz/fpcupdeluxe4/fpcbootstrap/:$PATH cd fpcsrc/packages ./regenmakefiles.sh cd fpcsrc/rtl ./regenmakefiles.sh
重新生成Makefile后再次从第1步开始执行。
3、编译完成后,生成fpc.cfg
cd /fpc/bin
./fpcmkcfg -o fpc.cfg
4、修改fpc.cfg,将units路径用绝对目录指定(将红色部分改为你的实际目录)
# Search for $fpctarget/$fpcsubarch-$fpcmemorymodel/ subdirectory first # for i8086 CPU #ifdef cpui8086 -Fu/units/$fpctarget/$fpcsubarch-$fpcmemorymodel -Fu/units/$fpctarget/$fpcsubarch-$fpcmemorymodel/* -Fu/units/$fpctarget/$fpcsubarch-$fpcmemorymodel/rtl #endif # searchpath for units and other system dependent things -Fu/units/$fpctarget -Fu/units/$fpctarget/* -Fu/units/$fpctarget/rtl #IFDEF FPCAPACHE_1_3 -Fu/units/$fpctarget/httpd13/ #ELSE #IFDEF FPCAPACHE_2_0 -Fu/units/$fpctarget/httpd20 #ELSE -Fu/units/$fpctarget/httpd22 #ENDIF #ENDIF
改为:
# Search for $fpctarget/$fpcsubarch-$fpcmemorymodel/ subdirectory first # for i8086 CPU #ifdef cpui8086 -Fu/home/lbz/fpcupdeluxe4/fpc/lib/fpc/3.3.1/units/$fpctarget/$fpcsubarch-$fpcmemorymodel -Fu/home/lbz/fpcupdeluxe4/fpc/lib/fpc/3.3.1/units/$fpctarget/$fpcsubarch-$fpcmemorymodel/* -Fu/home/lbz/fpcupdeluxe4/fpc/lib/fpc/3.3.1/units/$fpctarget/$fpcsubarch-$fpcmemorymodel/rtl #endif # searchpath for units and other system dependent things -Fu/home/lbz/fpcupdeluxe4/fpc/lib/fpc/3.3.1/units/$fpctarget -Fu/home/lbz/fpcupdeluxe4/fpc/lib/fpc/3.3.1/units/$fpctarget/* -Fu/home/lbz/fpcupdeluxe4/fpc/lib/fpc/3.3.1/units/$fpctarget/rtl #IFDEF FPCAPACHE_1_3 -Fu/home/lbz/fpcupdeluxe4/fpc/lib/fpc/3.3.1/units/$fpctarget/httpd13/ #ELSE #IFDEF FPCAPACHE_2_0 -Fu/home/lbz/fpcupdeluxe4/fpc/lib/fpc/3.3.1/units/$fpctarget/httpd20 #ELSE -Fu/home/lbz/fpcupdeluxe4/fpc/lib/fpc/3.3.1/units/$fpctarget/httpd22 #ENDIF #ENDIF
将修改后的fpc.cfg拷贝到~/.fpc.cfg
cp fpc.cfg ~/.fpc.cfg
5、拷贝/home/lbz/fpcupdeluxe499/fpc/lib/fpc/3.3.1目录的ppcloongarch64到/home/lbz/fpcupdeluxe499/fpc/bin目录
cd fpc/bin cp /home/lbz/fpcupdeluxe499/fpc/lib/fpc/3.3.1/ppcloongarch64 //home/lbz/fpcupdeluxe499/fpc/bin
到此,fpc源码已编译完成
三、编译lazarus
编译lazarus相对就很简单了
1、设置路径:
export PATH=/data/home/lbz/fpcupdeluxe4/fpc/bin/loongarch64-linux:$PATH
2、编译
cd lazarus
make
3、lazarus编译完成后,在lazarus目录新建lazarus.cfg文件,这个文件的配置目录指向config_lazarus
添加完成后保存退出
--primary-config-path=/data/home/lbz/fpcupdeluxe4/config_lazarus

4、运行编译好的lazarus。
第一次运行先配置lazarus/fpc 编译器/fpc源码及调试器:





 
                    
                     
                    
                 
                    
                 

 
         
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号