<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      秋·風

        博客園 :: 首頁 :: 博問 :: 閃存 :: 新隨筆 :: 聯系 :: 訂閱 訂閱 :: 管理 ::

      說明:
      1、sipeed--為用戶名稱,具體操作時修改為你當前的用戶名稱就可以。
      2、已修改的5個lazarus源碼及ppcrv64的下載地址:

      通過網盤分享的文件:riscv64_fpc
      鏈接: https://pan.baidu.com/s/1BjMZOJIZbNvmy43ts-R1YA?pwd=p68u 提取碼: p68u

      3、在Sipeed荔枝派[LicheePi 4A](CPU:TH1520)實測通過。

      可能是首個在riscv64環境運行的lazarus版本。

      一、前期工作:

      1、在windows版lazarus交叉編譯出ppcrv64,將ppcrv64拷貝到riscv64設備/home/sipeed/fpc/fpcbootstrap。
      2、在riscv64設備
      將下載好用fpc/lazarus源碼,解壓拷貝到fpc目錄,目錄結構如下:
      /home/sipeed/fpc
      fpcsrc
      lazarus
      fpcbootstrap

      二、編譯FPC源碼

      cd fpcsrc
      make install CPU_TARGET=riscv64 OS_TARGET=linux CPU_SOURCE=riscv64 OS_SOURCE=linux  OPT='-gl -O2' FPC=/home/sipeed/fpc/fpcbootstrap/ppcrv64 OVERRIDEVERSIONCHECK=1  PREFIX=/home/sipeed/fpc/fpc -j16

      編譯參數說明:

      CPU_TARGET=riscv64          //目標CPU類型,常用的CPU:x86_64 / i386 / aarch64 / riscv64 / loongarch64 
      OS_TARGET=linux                //目標的操作系統 linux / win64 /win32
      CPU_SOURCE=riscv64       //源CPU類型--當前電腦使用的CPU類型
      OS_SOURCE=linux               //源OS --當前電腦使用的操作系統類型
      FPC=/home/lbz/fpc/fpcbootstrap/ppcrv64     //fpc編譯器所在的目錄(用絕對路徑)
      PREFIX=/home/sipeed/fpc/fpc    //最后的fpc是編譯出來FPC所在目錄名稱

      2、編譯完成后,生成fpc.cfg

      cd /fpc/bin
      ./fpcmkcfg -o fpc.cfg

      3、修改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/sipeed/fpc/fpc/lib/fpc/3.3.1/units/$fpctarget
      -Fu/home/sipeed/fpc/fpc/lib/fpc/3.3.1/units/$fpctarget/*
      -Fu/home/sipeed/fpc/fpc/lib/fpc/3.3.1/units/$fpctarget/rtl
      
      #IFDEF FPCAPACHE_1_3
      -Fu/home/sipeed/fpc/fpc/lib/fpc/3.3.1/units/$fpctarget/httpd13/
      #ELSE
      #IFDEF FPCAPACHE_2_0
      -Fu/home/sipeed/fpc/fpc/lib/fpc/3.3.1/units/$fpctarget/httpd20
      #ELSE
      -Fu/home/sipeed/fpc/fpc/lib/fpc/3.3.1/units/$fpctarget/httpd22
      #ENDIF
      #ENDIF

      將修改后的fpc.cfg拷貝到~/.fpc.cfg

      cp fpc.cfg ~/.fpc.cfg

      5、拷貝/home/sipeed/fpc/fpc/lib/fpc/3.3.1目錄的ppcrv64到/home/sipeed/fpc/fpc/bin目錄

      cd fpc/bin
      cp /home/sipeed/fpc/fpc/lib/fpc/3.3.1/ppcrv64 /home/sipeed/fpc/fpc/bin

      到此,fpc源碼已編譯完成。

      三、編譯lazarus
      編譯lazarus版要修改5個源碼,修改后按以下操作就可以,修改位置在文章最后。
      D:\fpcupdeluxe4\lazarus\packager\pkgmanager.pas
      D:\fpcupdeluxe4\lazarus\packager\PackageEditor.pas
      D:\fpcupdeluxe4\lazarus\components\ideintf\FormEditingintf.pas
      D:\fpcupdeluxe4\lazarus\components\lazdebuggers\lazdebuggerfp\fpdebugvalueconvertors.pas
      D:\fpcupdeluxe4\lazarus\components\lazdebuggers\lazdebuggerfp\fpdebuggerresultdata.pas

      1、設置路徑:

      export PATH=/home/sipeed/fpc/fpc/bin/loongarch64-linux:$PATH

      2、編譯

      cd lazarus
      make

      3、lazarus編譯完成后,在lazarus目錄新建lazarus.cfg文件,這個文件的配置目錄指向config_lazarus
      添加完成后保存退出

      --primary-config-path=/home/sipeed/fpc/config_lazarus

      編譯完成后就可以運行lazarus

      lazarus源碼修改位置: 

      1、D:\fpcupdeluxe4\lazarus\components\ideintf\FormEditingintf.pas

      *** 93,99 ****
            procedure SetLookupRootBounds(ALeft, ATop, AWidth, AHeight: integer); virtual;
            function DockedDesigner: boolean; virtual;
        
            property NonFormDesigner: INonFormDesigner read FNonFormDesigner {$if not defined(cpuriscv64)} implements INonFormDesigner{$endif};
            property LookupRoot: TComponent read FLookupRoot write SetLookupRoot;
          published
            property Left: Integer index 0 read GetPublishedBounds write SetPublishedBounds;
      *** 106,121 ****
        
          { TFrameProxyDesignerForm }
        
          TFrameProxyDesignerForm = class(TNonFormProxyDesignerForm{$if not defined(cpuriscv64)}, IFrameDesigner{$endif})
          private
            function GetFrameDesigner: IFrameDesigner;
          publicproperty FrameDesigner: IFrameDesigner read GetFrameDesigner{$if not defined(cpuriscv64)}implements IFrameDesigner{$endif};
          end;
        
          { TNonControlProxyDesignerForm }
        
          TNonControlProxyDesignerForm = class(TNonFormProxyDesignerForm{$if not defined(cpuriscv64)}, INonControlDesigner{$endif})
          private
            FMediator: TDesignerMediator;
            function GetNonControlDesigner: INonControlDesigner;
      *** 122,128 ****
          protected
            procedure SetMediator(AValue: TDesignerMediator); virtual;
          public
            property NonControlDesigner: INonControlDesigner read GetNonControlDesigner{$if not defined(cpuriscv64)} implements INonControlDesigner{$endif};
            property Mediator: TDesignerMediator read FMediator write SetMediator;
          end;

      2、D:\fpcupdeluxe4\lazarus\packager\pkgmanager.pas:

      --- 1632,1638 ----
            if o is TTreeView then begin
              PkgEdit:=PackageEditors.TreeViewToPkgEditor(TTreeView(o));
              if PkgEdit<>nil then
              Result:= {$if not defined(cpuriscv64)}PkgEdit{$else}nil{$endif}
              else begin
                aProjInsp:=ProjInspector.TreeViewToInspector(TTreeView(o));
                if aProjInsp<>nil then
      --- 2859,2868 ----
          TargetDir: String;
        begin
          Result:=false;
          {$if not defined(cpuriscv64)}  if Sender is TPackageEditorForm then
          FilesEdit:=TPackageEditorForm(Sender)
          else if {$endif}Sender is TProjectInspectorForm then
            FilesEdit:=TProjectInspectorForm(Sender)
          else begin
            debugln(['Error: (lazarus) TPkgManager.CopyMoveFiles wrong Sender: ',DbgSName(Sender)]);

      3、D:\fpcupdeluxe4\lazarus\packager\PackageEditor.pas:

      *** 156,162 ****
        
          { TPackageEditorForm }
        
      !   TPackageEditorForm = class(TBasePackageEditor{$if not defined(cpuriscv64)},IFilesEditorInterface{$endif})
            MenuItem1: TMenuItem;
            mnuAddNewDiskFiles: TMenuItem;
            mnuAddFPMakeReq: TMenuItem;

      4、D:\fpcupdeluxe4\lazarus\components\lazdebuggers\lazdebuggerfp\fpdebuggerresultdata.pas:

      *** 154,160 ****
              end;
        
              if (CurConv <> nil) and CurConv.CanHandleValue(AnFpValue, Debugger) then begin
               {$if not defined(cpuriscv64)}AnResFld := AnResData.CreateValueHandlerResult(CurConv);{$endif}
        
                if (FMaxTotalConv <= 0) then
                  ReleaseRefAndNil(CurConv)

      5、D:\fpcupdeluxe4\lazarus\components\lazdebuggers\lazdebuggerfp\fpdebugvalueconvertors.pas:

      --- 20,26 ----
             - Any setting that the IDE may need to store, should be published
          *)
        
          TFpDbgValueConverter = class(TRefCountedObject{$if not defined(cpuriscv64)} , ILazDbgValueConverterIntf{$endif})
          private
            FLastErrror: TFpError;
          protected
      --- 32,38 ----
            function GetRegistryEntry: TLazDbgValueConvertRegistryEntryClass; virtual;
            constructor Create; virtual;
            procedure Assign(ASource: TFpDbgValueConverter); virtual;
        {$if not defined(cpuriscv64)}    function CreateCopy: ILazDbgValueConverterIntf; virtual;{$endif}
            function NeedConversionLimit: Boolean; virtual;
            (* CanHandleValue must return the SAME RESULT if called repeatedly (e.g. in an array)
               CanHandleValue must NOT depend on DATA, or anything that can change
      --- 66,72 ----
        
          { TConverterSettingsFrameBase }
        
          TConverterSettingsFrameBase = class(TFrame{$if not defined(cpuriscv64)}, ILazDbgValueConverterSettingsFrameIntf{$endif})
          protected
            function GetFrame: TObject; virtual;
          public
      --- 153,159 ----
        end;
        
        { TFpDbgValueConverter }
        {$if not defined(cpuriscv64)}
        function TFpDbgValueConverter.CreateCopy: ILazDbgValueConverterIntf;
        var
          c: TFpDbgValueConverter;
      ***************
      *** 163,167 ****
      --- 162,168 ----
          c.Assign(Self);
          Result := c;
        end;
       {$endif}
        
        function TFpDbgValueConverter.NeedConversionLimit: Boolean;
        begin
      --- 404,410 ----
        
        class function TFpDbgValueConverterRegistryEntry.CreateValueConvertorIntf: ILazDbgValueConverterIntf;
        begin
        {$if not defined(cpuriscv64)}  Result := TFpDbgValueConverterClass(GetConvertorClass).Create;{$endif}
        end;
      --- 471,477 ----
        
        function TFpDbgValueConverterVariantToLStr.GetSettingsFrame: ILazDbgValueConverterSettingsFrameIntf;
        begin
        {$if not defined(cpuriscv64)}  Result := TConverterWithFuncCallSettingsFrame.Create(nil);{$endif}
        end;
        
        class function TFpDbgValueConverterVariantToLStr.GetName: String;

       

      posted on 2025-03-20 13:17  秋·風  閱讀(314)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 91精品久久一区二区三区| 国产成人AV性色在线影院| 国产粉嫩一区二区三区av| 91精品蜜臀国产综合久久| 久久大香线蕉国产精品免费| 美女一区二区三区亚洲麻豆| 亚洲av一本二本三本| 亚洲国产午夜精品福利| 偷拍一区二区三区在线视频| 亚洲精品乱码久久久久红杏| 加勒比无码av中文字幕| A男人的天堂久久A毛片| 少妇xxxxx性开放| 日韩精品人妻中文字幕| 成人嫩草研究院久久久精品| 国产精品高清视亚洲乱码| 欧美大胆老熟妇乱子伦视频| 亚洲色av天天天天天天| 亚洲男人第一无码av网站| 国产乱子伦一区二区三区四区五区| 欧美老熟妇乱子伦牲交视频| 日韩大片高清播放器| 久久一日本综合色鬼综合色| 亚洲国产成人精品无色码| 日本一区二区久久人妻高清 | 久久不见久久见www日本| 艳妇乳肉豪妇荡乳xxx| 亚洲中文字幕国产精品| 亚洲色大成网站www永久一区 | 亚洲日韩av在线观看| 国产成人啪精品视频免费网| 日本www一道久久久免费| 国产精品制服丝袜白丝| 纯肉高h啪动漫| 巨爆乳中文字幕爆乳区| 闸北区| 国产精品无码不卡在线播放| 欧美成本人视频免费播放| 日韩人妻精品中文字幕| 另类专区一区二区三区| 亚洲中文字幕无码中字|