注意:
因驗證這個方法,做了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號