Sign in Join
Wiki copytemporary

Cross compiling/zh TW: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
1-## Contents
2-
3- * 1 前言
4- * 1.1 host和target運行於同樣的CPU
5- * 1.2 host和target運行於不同的CPU
6- * 1.3 彙編器和連接器
7- * 1.4 用於target的單元
8- * 1.5 配置
9- * 1.6 基本步驟
10- * 2 從Linux
11- * 2.1 到Linux
12- * 2.2 到Windows
13- * 2.3 到Darwin或者macOS
14- * 3 從Windows
15- * 3.1 到Linux
16- * 3.2 到GO32v2
17- * 4 從Darwin(macOS)i386
18- * 4.1 從i386到PowerPC
19- * 4.2 到Windows和Linux(32位)
20- * 5 Cross compile FAQ
21- * 5.1 為什麼要交叉編譯?
22- * 5.2 為什麼是從UNIX到Windows而不是反過來?
23- * 5.3 我需要更多構建FreePascal的資訊。哪兒可以找到?
24-
251# 前言
262
27-這是一個為新手寫的簡短的引言。接下來的章節將說明如何設置你的系統以進行交叉編譯,這表示用一個電腦平臺編譯出用於不同平臺的可執行程式——例如,在Linux平臺上編譯出在win32平臺上的可執行程式(或者FreeBSD或Darwin等等)。既然這樣,這個運行編譯器的平臺通常被稱為“host”(上述的Linux就是個例子,在上述情況下,Linux就被稱為host),而那個你希望你編譯出的程式能得以運行的平臺就稱為“target”。Free Pascal是個編譯器,基本原理就是將源代碼翻譯成可執行檔(機器語言)。這些可執行檔通常也包含了指示作業系統如何開始執行這個檔的資訊(比如,入口點資訊,段資訊,重定位表等等)。再者可執行檔也可能提及特定系統上的APIs(應用程式介面)的資訊,那就是為什麼不同作業系統必須用不同實現的(但幾乎同樣的介面)運行時庫。因此,這些可執行檔是平臺相關的。Free Pascal本身並不需要什麼設置。它能夠為不同平臺編譯可執行檔。只需要告訴它要怎麼幹就行。
3+這是一個為新手寫的簡短的引言。接下來的章節將說明如何設置你的系統以進行交叉編譯,這表示用一個電腦平臺編譯出用於不同平臺的可執行程式——例如,在Linux平臺上編譯出在win32平臺上的可執行程式(或者FreeBSD或Darwin等等)。既然這樣,這個運行編譯器的平臺通常被稱為“host”(上述的Linux就是個例子,在上述情況下,Linux就被稱為host),而那個你希望你編譯出的程式能得以運行的平臺就稱為“target”。Free Pascal是個編譯器,基本原理就是將源代碼翻譯成可執行檔(機器語言)。這些可執行檔通常也包含了指示作業系統如何開始執行這個檔的資訊(比如,入口點資訊,段資訊,重定位表等等)。再者可執行檔也可能提及特定系統上的APIs(應用程式介面)的資訊,那就是為什麼不同作業系統必須用不同實現的(但幾乎同樣的介面)運行時庫。因此,這些可執行檔是平臺相關的。Free Pascal本身並不需要什麼設置。它能夠為不同平臺編譯可執行檔。只需要告訴它要怎麼幹就行。
284
295## host和target運行於同樣的CPU
306
31-FPC被設計以可以編譯出適用於某種CPU的機器語言(因為不同CPU需要不同的機器語言),它也知道所有的被支援的平臺(作業系統)上的,架構上的(CPU及其機器的體系結構)具體需要的,能用到的東西。這表示你可以用為運行於同一類CPU的不同程式使用同一個編譯器執行交叉編譯。
7+FPC被設計以可以編譯出適用於某種CPU的機器語言(因為不同CPU需要不同的機器語言),它也知道所有的被支援的平臺(作業系統)上的,架構上的(CPU及其機器的體系結構)具體需要的,能用到的東西。這表示你可以用為運行於同一類CPU的不同程式使用同一個編譯器執行交叉編譯。
328
339## host和target運行於不同的CPU
3410
35-如果你要編譯出一個運行於不同CPU上的可執行檔,你需要一個特殊的交叉編譯器,例如,運行於一種平臺上的編譯器,能夠翻譯出不同的適用於不同CPU上的機器語言(就FPC來說,這樣一個交叉編譯器同樣能夠為所有支持的平臺和CPU架構編譯出適用的可執行檔)。因此這個交叉編譯器通常存放於同一個目錄內作為本機的編譯器。你可以自己編譯出這樣一個交叉編譯器,或者你可以直接使用由FPC團隊提供的已經為一些平臺完成的發佈版(這些平臺通常用於移動平臺,像arm-linux或者arm-wince,因為它們通常不會被作為host平臺)。當你使用了 -P 參數後,FPC程式就會target CPU架構選擇正確的編譯器(本機編譯器或者交叉編譯器之一)。
11+如果你要編譯出一個運行於不同CPU上的可執行檔,你需要一個特殊的交叉編譯器,例如,運行於一種平臺上的編譯器,能夠翻譯出不同的適用於不同CPU上的機器語言(就FPC來說,這樣一個交叉編譯器同樣能夠為所有支持的平臺和CPU架構編譯出適用的可執行檔)。因此這個交叉編譯器通常存放於同一個目錄內作為本機的編譯器。你可以自己編譯出這樣一個交叉編譯器,或者你可以直接使用由FPC團隊提供的已經為一些平臺完成的發佈版(這些平臺通常用於移動平臺,像arm-linux或者arm-wince,因為它們通常不會被作為host平臺)。當你使用了 -P 參數後,FPC程式就會target CPU架構選擇正確的編譯器(本機編譯器或者交叉編譯器之一)。
3612
3713## 彙編器和連接器
3814
39-編譯器只是一部分,我們需要彙編器和鏈結器。FPC僅僅為某些平臺提供內嵌的彙編器和鏈結器,其他平臺需要外部工具以提供支援。通常,這些工具不能夠為不同平臺編譯出二進位檔。那就是為什麼我們必須為每一個不同target平臺使用不同的鏈結器‘ld’和彙編器‘as’。它們是binutils。
15+編譯器只是一部分,我們需要彙編器和鏈結器。FPC僅僅為某些平臺提供內嵌的彙編器和鏈結器,其他平臺需要外部工具以提供支援。通常,這些工具不能夠為不同平臺編譯出二進位檔。那就是為什麼我們必須為每一個不同target平臺使用不同的鏈結器‘ld’和彙編器‘as’。它們是binutils。
4016
4117## 用於target的單元
4218
43-裝好了交叉編譯工具後(這樣的一個工具需要FPC RTL和其他為相應target平臺編譯好的單元檔)。例如,每種不同的target平臺需要不同的system.ppu檔(系統單元)等等。這些單元檔要麼是你自己為了target平臺編譯出來的,要麼可能是官方為某個版本的FPC編譯並發行的。
19+裝好了交叉編譯工具後(這樣的一個工具需要FPC RTL和其他為相應target平臺編譯好的單元檔)。例如,每種不同的target平臺需要不同的system.ppu檔(系統單元)等等。這些單元檔要麼是你自己為了target平臺編譯出來的,要麼可能是官方為某個版本的FPC編譯並發行的。
4420
4521## 配置
4622
47-你要設置你的FPC的配置檔,以使得交叉編譯變得容易,你可以忘記所有無聊的細節問題。 對LCL(lazarus cpmponent library)也可以這樣做(如果你用Lazarus)。然後你就可以為不同的target編譯出Pascal程式了。編譯出的可執行檔就可以拷貝到一台運行target的機器上,或者在模擬器上運行(例如:wine,bochs,xbox,vmware等等)。
23+你要設置你的FPC的配置檔,以使得交叉編譯變得容易,你可以忘記所有無聊的細節問題。 對LCL(lazarus cpmponent library)也可以這樣做(如果你用Lazarus)。然後你就可以為不同的target編譯出Pascal程式了。編譯出的可執行檔就可以拷貝到一台運行target的機器上,或者在模擬器上運行(例如:wine,bochs,xbox,vmware等等)。
4824
4925## 基本步驟
5026
51-有一些交叉編譯時通常的步驟你必須做的:
27+有一些交叉編譯時通常的步驟你必須做的:
5228
53- 1. 有一個可運行於你的host平臺的Free Pascal編譯器。
54- 2. 你需要Free Pascal的源代碼。
55- 3. 你要麼從源碼構建,要麼從別人那兒獲得運行你的host系統但卻是為target系統設計的cross-binutils可執行檔。
56- 4. 有時,你需要一些target上的檔。
29+1. 有一個可運行於你的host平臺的Free Pascal編譯器。
30+2. 你需要Free Pascal的源代碼。
31+3. 你要麼從源碼構建,要麼從別人那兒獲得運行你的host系統但卻是為target系統設計的cross-binutils可執行檔。
32+4. 有時,你需要一些target上的檔。
5733
5834# 從Linux
5935
6036## 到Linux
6137
62-事先說明,以下文字說的是在linux(x86_64)上編譯出linux(i386)程式。關於以運行於ARM的Linux為目標的編譯(例如:Zaurus)應該可以在[[Setup Cross Compile For ARM|設置編譯器為ARM編譯程序]]找到。
38+事先說明,以下文字說的是在linux(x86_64)上編譯出linux(i386)程式。關於以運行於ARM的Linux為目標的編譯(例如:Zaurus)應該可以在[[Setup Cross Compile For ARM|設置編譯器為ARM編譯程序]]找到。
6339
64-如果你的64位的Linux發行版已經可以編譯32位元程式,那麼事情就好辦了。由於FPC的設計的緣故,你還得做兩件事。
40+如果你的64位的Linux發行版已經可以編譯32位元程式,那麼事情就好辦了。由於FPC的設計的緣故,你還得做兩件事。
6541
66- * 首先檢查你是否擁有兩個檔:i386-linux-ld和i386-linux-as:
42+- 首先檢查你是否擁有兩個檔:i386-linux-ld和i386-linux-as:
6743
68-```
69-bash $ which i386-linux-ld
70-```
71-```
72-bash $ which i386-linux-as
73-```
44+` bash $ which i386-linux-ld`
7445
75-如果你有這兩個檔,那麼你就可以跳過下面"Compile FPC"標題所說的內容。
46+` bash $ which i386-linux-as`
7647
77-我沒有這兩個檔所以我做了一對腳本:
78-```
79-#!/bin/bash
80- # name this file /usr/bin/i386-linux-ld
81- ld -A elf32-i386 $@
82-```
83-```
84-#!/bin/bash
85- # name this file /usr/bin/i386-linux-as
86- as --32 $@
87-```
48+如果你有這兩個檔,那麼你就可以跳過下面"Compile FPC"標題所說的內容。
8849
89- * 使它們可以被執行:
50+我沒有這兩個檔所以我做了一對腳本:
9051
91-```
92-bash $ chmod +x /usr/bin/i386-linux-as
93- bash $ chmod +x /usr/bin/i386-linux-ld
94-```
52+`#!/bin/bash`\
53+`# name this file /usr/bin/i386-linux-ld`\
54+`ld -A elf32-i386 $@`
9555
96- * 編譯FPC:
56+`#!/bin/bash`\
57+`# name this file /usr/bin/i386-linux-as`\
58+`as --32 $@`
9759
98-```
99-bash $ make all CPU_TARGET=i386
100-```
60+- 使它們可以被執行:
10161
102-然後:
103-```
104-bash $ su -c "make install CPU_TARGET=i386"
105-```
62+`bash $ chmod +x /usr/bin/i386-linux-as`\
63+`bash $ chmod +x /usr/bin/i386-linux-ld`
10664
107-就這樣了。之後如果必要,你還可以編輯你的 /etc/fpc.cfg 文件。
65+- 編譯FPC:
10866
67+`bash $ make all CPU_TARGET=i386`
68+
69+然後:
70+
71+`bash $ su -c "make install CPU_TARGET=i386"`
72+
73+就這樣了。之後如果必要,你還可以編輯你的 /etc/fpc.cfg 文件。
74+
10975## 到Windows
11076
111-關於用Lazarus做交叉編譯的資訊你可以在[[Cross compiling for Windows under Linux|在Linux下為Win32交叉編譯]]找到。
77+關於用Lazarus做交叉編譯的資訊你可以在[[Cross compiling for Windows under Linux|在Linux下為Win32交叉編譯]]找到。
11278
113-如果你在編譯FPC的2.1.1版本或者或更新的分支版本,你可以這樣做:
114-```
115-bash $ make all OS_TARGET=win32 CPU_TARGET=i386
116-```
79+如果你在編譯FPC的2.1.1版本或者或更新的分支版本,你可以這樣做:
11780
118-然後
119-```
120-bash $ su -c "make crossinstall OS_TARGET=win32 CPU_TARGET=i386"
121-```
81+`bash $ make all OS_TARGET=win32 CPU_TARGET=i386`
12282
123-注意:為win64編譯的話,用的命令是: make all OS_TARGET=win64 CPU_TARGET=x86_64
83+然後
12484
125-如此簡單的原因是因為內部的鏈結器已經包含這個版本的FPC。
85+`bash $ su -c "make crossinstall OS_TARGET=win32 CPU_TARGET=i386"`
12686
87+注意:為win64編譯的話,用的命令是: make all OS_TARGET=win64 CPU_TARGET=x86_64
88+
89+如此簡單的原因是因為內部的鏈結器已經包含這個版本的FPC。
90+
12791## 到Darwin或者macOS
12892
129- * 首先你需要擁有用於target平臺的binutils。從下面這個站點下載odcctools(使用CVS)。根據他們的指示安裝:<http://www.opendarwin.org/projects/odcctools/>
130- * 你需要建一個虛假的根目錄,就像:$HOME/darwinroot至少從你的蘋果或Darwin(蘋果的開源版本)系統拷貝/System和/Frameworks/usr目錄(你可能必須拷貝更多東西)到$HOME/darwinroot
131- * now that you have these files make a folder in $HOME/darwinroot called cross. where ever you installed the odcctools you need to make links for the cross tools to be more fpc friendly. there are a bunch of files from odcc tools called powerpc-apple-darwin-* you need to make links (or rename them) so powerpc-apple-darwin-ld becomes powerpc-darwin-ld, do the same for *-ar and *-as.
132- * now you are ready to crosscompile fpc. basically you need to have the fpc source and have a terminal open there.
93+- 首先你需要擁有用於target平臺的binutils。從下面這個站點下載odcctools(使用CVS)。根據他們的指示安裝:http://www.opendarwin.org/projects/odcctools/
94+- 你需要建一個虛假的根目錄,就像:\$HOME/darwinroot至少從你的蘋果或Darwin(蘋果的開源版本)系統拷貝/System和/Frameworks/usr目錄(你可能必須拷貝更多東西)到\$HOME/darwinroot
95+- now that you have these files make a folder in \$HOME/darwinroot called cross. where ever you installed the odcctools you need to make links for the cross tools to be more fpc friendly. there are a bunch of files from odcc tools called powerpc-apple-darwin-* you need to make links (or rename them) so powerpc-apple-darwin-ld becomes powerpc-darwin-ld, do the same for *-ar and *-as.
96+- now you are ready to crosscompile fpc. basically you need to have the fpc source and have a terminal open there.
13397
134-type:
135-```
136-$PATH=$PATH:$HOME/darwinroot/cross (or whereever you made the symlinks)
137-```
98+type:
13899
139-type (iirc):
140-```
141-make all TARGET_OS=darwin TARGET_CPU=powerpc OPT="-Xd -Fl/$HOME/darwinroot/usr/lib"
142-```
100+`$PATH=$PATH:$HOME/darwinroot/cross (or whereever you made the symlinks)`
143101
144-if that succeded you can install it to whereever you want with:
145-```
146-make install TARGET_OS=darwin TARGET_CPU=powerpc PREFIX=/cross/fpc
147-```
102+type (iirc):
148103
149-now copy the file ./compiler/ppccross somewhere you will be able to find it as it's the compiler you'll need to build powerpc programs
104+`make all TARGET_OS=darwin TARGET_CPU=powerpc OPT="-Xd -Fl/$HOME/darwinroot/usr/lib"`
150105
151- * configure your /etc/fpc.cfg file.
106+if that succeded you can install it to whereever you want with:
152107
153-add a section like this:
154-```
155-#IFDEF powerpc
156- -Fu/cross/fpc/lib/fpc/$fpcversion/units/$fpctarget/
157- -Fu/cross/fpc/lib/fpc/$fpcversion/units/$fpctarget/rtl
158- -Fu/cross/fpc/lib/fpc/$fpcversion/units/$fpctarget/*
159- -k-systemroot $HOME/darwin/cross
160- #ENDIF
161-```
108+`make install TARGET_OS=darwin TARGET_CPU=powerpc PREFIX=/cross/fpc`
162109
163-whenever you want to crosscompile you have to have ppccross and the symlinks to powerpc-darwin-* in the PATH and you should be able to just do ppccross someprogie.pas and it will create a darwin executable.
110+now copy the file ./compiler/ppccross somewhere you will be able to find it as it's the compiler you'll need to build powerpc programs
164111
165-I may have missed some things (or most everything) as it's been a while since I did this.
112+- configure your /etc/fpc.cfg file.
166113
167-
114+add a section like this:
168115
116+`#IFDEF powerpc`\
117+`-Fu/cross/fpc/lib/fpc/$fpcversion/units/$fpctarget/`\
118+`-Fu/cross/fpc/lib/fpc/$fpcversion/units/$fpctarget/rtl`\
119+`-Fu/cross/fpc/lib/fpc/$fpcversion/units/$fpctarget/*`\
120+`-k-systemroot $HOME/darwin/cross`\
121+`#ENDIF`
122+
123+whenever you want to crosscompile you have to have ppccross and the symlinks to powerpc-darwin-* in the PATH and you should be able to just do ppccross someprogie.pas and it will create a darwin executable.
124+
125+I may have missed some things (or most everything) as it's been a while since I did this.
126+
169127# 從Windows
170128
171129## 到Linux
172130
173-這很簡單,你可以在[[buildfaq]]看到相關資訊。
131+這很簡單,你可以在[[buildfaq]]看到相關資訊。
174132
175133## 到GO32v2
176134
177-你可以在[[Cross-compilation from Win32 to GO32v2|從Win32到GO32v2的交叉編譯]]找到詳細資訊。
135+你可以在[[Cross-compilation from Win32 to GO32v2|從Win32到GO32v2的交叉編譯]]找到詳細資訊。
178136
179137# 從Darwin(macOS)i386
180138
181139## 從i386到PowerPC
182140
183- * 交叉binutils
141+- 交叉binutils
184142
185-首先檢查你是否已經有了以下檔powerpc-darwin-ld和powerpc-darwin-as:
186-```
187-$ which powerpc-darwin-ld
188- $ which powerpc-darwin-as
189-```
143+首先檢查你是否已經有了以下檔powerpc-darwin-ld和powerpc-darwin-as:
190144
191-如果你已經有了上述檔就可以跳過創建符號鏈結,直接跳到“編譯FPC”標題。
145+` $ which powerpc-darwin-ld`\
146+` $ which powerpc-darwin-as`
192147
193-事實上,“normal”binutils能夠使用,因為它們是通用的。因此簡單的符號鏈結就夠了:
194-```
195-$ sudo ln -s /usr/bin/as /usr/bin/powerpc-darwin-as
196- $ sudo ln -s /usr/bin/ld /usr/bin/powerpc-darwin-ld
197-```
148+如果你已經有了上述檔就可以跳過創建符號鏈結,直接跳到“編譯FPC”標題。
198149
199-這些符號鏈結可以存其他目錄,只要她們在你的$PATH(for example /sw/bin when installing through fink)環境變數中就可以了。
150+事實上,“normal”binutils能夠使用,因為它們是通用的。因此簡單的符號鏈結就夠了:
200151
201- * 編譯FPC:
152+` $ sudo ln -s /usr/bin/as /usr/bin/powerpc-darwin-as`\
153+` $ sudo ln -s /usr/bin/ld /usr/bin/powerpc-darwin-ld`
202154
203-```
204-$ cd fpc/compiler
205- $ make cycle CPU_TARGET=powerpc
206-```
155+這些符號鏈結可以存其他目錄,只要她們在你的\$PATH(for example /sw/bin when installing through fink)環境變數中就可以了。
207156
208-這樣就能創建一個PowerPC編譯器(fpc/compiler/ppcppc)和rtl的單元。
157+- 編譯FPC:
209158
210-事實上,創建PowerPC的binaries不需要交叉編譯器。使用Rosetta,powerpc fpc和ppcppc在IntelMacs上運行得很好。
159+` $ cd fpc/compiler`\
160+` $ make cycle CPU_TARGET=powerpc`
211161
212-關於兩者的平行的安裝和使用需要更多的測試和文檔(希望你來做測試和寫些文檔吧)。
162+這樣就能創建一個PowerPC編譯器(fpc/compiler/ppcppc)和rtl的單元。
213163
214-如果缺少單元檔,檢查你的配置檔,$HOME/.fpc.cfg或者/etc/fpc.cfg或者/sw/etc/fpc.cfg You may have to add something like or where ever your units are located.
215-```
216--Fu/usr/local/lib/fpc/lib/fpc/$fpcversion/units/$fpctarget/
217- -Fu/usr/local/lib/fpc/lib/fpc/$fpcversion/units/$fpctarget/rtl
218- -Fu/usr/local/lib/fpc/lib/fpc/$fpcversion/units/$fpctarget/*
219-```
164+事實上,創建PowerPC的binaries不需要交叉編譯器。使用Rosetta,powerpc fpc和ppcppc在IntelMacs上運行得很好。
220165
221-Reminder: Universal binaries are created from the individual (i386 and powerpc) binaries using lipo.
166+關於兩者的平行的安裝和使用需要更多的測試和文檔(希望你來做測試和寫些文檔吧)。
222167
168+如果缺少單元檔,檢查你的配置檔,\$HOME/.fpc.cfg或者/etc/fpc.cfg或者/sw/etc/fpc.cfg You may have to add something like or where ever your units are located.
169+
170+`-Fu/usr/local/lib/fpc/lib/fpc/$fpcversion/units/$fpctarget/`\
171+`-Fu/usr/local/lib/fpc/lib/fpc/$fpcversion/units/$fpctarget/rtl`\
172+`-Fu/usr/local/lib/fpc/lib/fpc/$fpcversion/units/$fpctarget/*`
173+
174+Reminder: Universal binaries are created from the individual (i386 and powerpc) binaries using lipo.
175+
223176## 到Windows和Linux(32位)
224177
225-包管理器[fink](<http://finkproject.org/>) 已經包含為Windows和linux(32位)交叉編譯的包了.
178+包管理器[fink](http://finkproject.org/) 已經包含為Windows和linux(32位)交叉編譯的包了.
226179
227-用
228-```
229-$ fink install fpc-win32
230-```
180+用
231181
232-和
233-```
234-$ fink install fpc-i386-linux
235-```
182+`$ fink install fpc-win32`
236183
237-安裝交叉編譯器。
238-```
184+和
185+
186+`$ fink install fpc-i386-linux`
187+
188+安裝交叉編譯器。
189+
190+``` bash
239191fpc-cross-arm-gba
240- fpc-cross-arm-linux
241- fpc-cross-arm-nds
242- fpc-cross-arm-wince
243- fpc-cross-arm-armv4t-embedded
244- fpc-cross-arm-armv7m-embedded
245- fpc-cross-i386-darwin
246- fpc-cross-i386-freebsd
247- fpc-cross-i386-go32v2
248- fpc-cross-i386-linux
249- fpc-cross-i386-nativent
250- fpc-cross-i386-netbsd
251- fpc-cross-i386-solaris
252- fpc-cross-i386-win32
253- fpc-cross-i386-wince
254- fpc-cross-jvm-android
255- fpc-cross-jvm-java
256- fpc-cross-m68k-linux
257- fpc-cross-mipsel-linux
258- fpc-cross-powerpc-linux
259- fpc-cross-sparc-linux
260- fpc-cross-x86-64-dragonfly
261- fpc-cross-x86-64-freebsd
262- fpc-cross-x86-64-linux
263- fpc-cross-x86-64-win64
192+fpc-cross-arm-linux
193+fpc-cross-arm-nds
194+fpc-cross-arm-wince
195+fpc-cross-arm-armv4t-embedded
196+fpc-cross-arm-armv7m-embedded
197+fpc-cross-i386-darwin
198+fpc-cross-i386-freebsd
199+fpc-cross-i386-go32v2
200+fpc-cross-i386-linux
201+fpc-cross-i386-nativent
202+fpc-cross-i386-netbsd
203+fpc-cross-i386-solaris
204+fpc-cross-i386-win32
205+fpc-cross-i386-wince
206+fpc-cross-jvm-android
207+fpc-cross-jvm-java
208+fpc-cross-m68k-linux
209+fpc-cross-mipsel-linux
210+fpc-cross-powerpc-linux
211+fpc-cross-sparc-linux
212+fpc-cross-x86-64-dragonfly
213+fpc-cross-x86-64-freebsd
214+fpc-cross-x86-64-linux
215+fpc-cross-x86-64-win64
264216```
265217
266218# Cross compile FAQ
267219
268220## 為什麼要交叉編譯?
269221
270-這樣你就用不著為一個 作業系統/系統架構 開發一個程式或為另一個 作業系統/系統架構 編譯而重啟或切換你的電腦。
222+這樣你就用不著為一個 作業系統/系統架構 開發一個程式或為另一個 作業系統/系統架構 編譯而重啟或切換你的電腦。
271223
272224## 為什麼是從UNIX到Windows而不是反過來?
273225
274-主要的原因是因為生成的binaries在其他系統上(另一個UNIX甚至是包括Linux發行版)是非常複雜的。 主要的問題是:
226+主要的原因是因為生成的binaries在其他系統上(另一個UNIX甚至是包括Linux發行版)是非常複雜的。 主要的問題是:
275227
276- 1. 你在host上需要庫。
277- 2. 沒有一套庫可以作為越來越複雜的,不斷變化的UNIX版本的最終版本(你很可能按需編譯出一套新的庫來)。
278- 3. 總是需要更多(linker)參數和設置,這些東西在通常情況下很難描述明白。
228+1. 你在host上需要庫。
229+2. 沒有一套庫可以作為越來越複雜的,不斷變化的UNIX版本的最終版本(你很可能按需編譯出一套新的庫來)。
230+3. 總是需要更多(linker)參數和設置,這些東西在通常情況下很難描述明白。
279231
280-如果你在這個警告後還是堅持這樣做(從Windows到UNIX),請看一下crossnotes document mentioned further,或者[[buildfaq]]。
232+如果你在這個警告後還是堅持這樣做(從Windows到UNIX),請看一下crossnotes document mentioned further,或者[[buildfaq]]。
281233
282234## 我需要更多構建FreePascal的資訊。哪兒可以找到?
283235
284236有一個通用的pdf格式的FAQ關於如何構建和配置FPC: [[buildfaq]]
285237
286238---
287-*From the Free Pascal wiki, page "Cross compiling/zh TW", as the Internet Archive kept it on 2025-03-23. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
239+*From the Free Pascal wiki, page "Cross compiling/zh TW", as it stood on 2021-07-19 after a change by Dbannon, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history