Cross-compilation from Win32 to GO32v2/hu

From Free Pascal wiki
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

English (en) magyar (hu) Bahasa Indonesia (id)

Keresztfordítás Windows rendszeren GO32v2-re


Általánosságban elmondható, hogy az FPC támogatja a keresztfordítást, feltéve hogy rendelkezel a szükséges programokkal (assembler és linker) abban a bin könyvtárban ahová az FPC telepítve lett ((ez a i386-win32 a Win32 esetében). Ezek olyan programok melyek a gazdarendszeren (amelyen fordítasz) futnak, de az (eltérő) célrendszeren futtatható binárisokat hoznak létre. E programok fájlneveinek elején a célrendszer meghatározásának ott kell lennie (pl.: "i386-linux-as.exe" vagy "i386-go32v2-ld.exe").

Amikor kifejezetten GO32v2 célrendszerről beszélünk Win32 alatt, Akkor tobb lehetséges megoldás kínálkozik. A szokásos eljárás (működik GO32v2 esetén is), hogy elkészítjük a valódi keresztfordító programokat, például lefordítjuk az as.exe GO32v2 változatát a GNU C Win32 változatának segítségével (Cygwin vagy MingW32), hogy Win32 alatt valódi GO32v2 binárisokat hozhassunk létre. Ez az egyetlen járható út bizonyos rendszereken (Linux, FreeBSD, Netware etc.).Néhány gazdarendszer-célrendszer kombinációhoz előre elkészített keresztfordító eszközök letölthetők az FTP szerverünkről - ha elkészítetted ezeket más rendszerek kombinációjához is, vagy valamelyikhez új változatot készítettél (és sikeresen tesztelted is), szívesen fogadjuk ha közzéteszed őket.

A második lehetőség, hogy kihasználjuk a WinXX képességét a DOS binárisok futtatására és csak bemásoljuk a GNU eszközök GO32v2 változatait egy új helyre más néven. Ez azonban bizonyos korlátozásokat von magával (pl.: a parancssorok hosszának maximuma), de általában működik (bár nem hiszem hogy ez a jobb megoldás - viszont az egyszerűbb).

Természetesen minkét esetben mind a kettő RTL elérhető legyen. A GO32v2 fordító az RTL unitokat a /units/go32v2/rtl könyvtárban keresi (hogy képes legyen futni normál DOS környezetben is amely csak 8.3 formátumú fájlneveket támogat), viszont a Win32 fordító (az IDE beépített fordítója) a könyvtárneveket a célrendszer teljes nevével várja (i386-go32v2), ezért át kell nevezned a GO32v2 csomagban terjesztett könyvtárat (ha már nem akarod többé használni az eredeti Go32v2 fordítót), vagy készíts egy másolatot.

Végül, a debugger (hibakereső) a kersztfordított program esetén (a GO32v2 bináris hibakeresése Win32 IDE-ben) nem lehetséges jelenleg. A megoldás a GO32v2 IDE (vagy önálló GO32v2 gdb) használata.

További információkat a keresztfordításról FPC-vel a Keresztfordítás és a Keresztfordítás Windows-ra Linux renszeren című részekben találsz (a leírások elsődlegesen a Lazarus használatát mutatják be, de tartalmaznak FPC-re vonatkozó információkat is). A fordító létrehozásáról (részben a keresztfordítóról is) információkat találhatsz a buildfaq részben.

GO32v2 binárisok létrehozása a WinXX DOS ablakában

Sima DOS programokat a következő módon tudsz létrehozni Win32 rendszeren: Tepepítsd az FPC GO32v2 változatát Win32 alatt a \ppdos könyvtárba (vagy más helyre, melynek neve 8.3 formátumú). Telepítsd az FPC Win32 változatát a \ppwin könyvtárba. Készítsd el a programot a Win32 változattal. Amikor már minden jól működik, használd a parancssort (DOS ablak) és fordítsd le a forráskódoda GO32v2 változatával (természetesen tudatnod kell a fordítóval (paraméterekkel a parancssorban), hogy hol találhatók a unit-jaid. A kapott *.exe rendesen fut majd amíg a DPMI elérhető (a *.exe programoddal együtt kell terjesztened a cwsdpmi.exe fájlt, amely megtalálható az FPC könyvtárában). Ha nem akarsz különálló DPMI kezelőt akkor a következő eljárások egyikét kell alkalmaznod vagy sima DOS alatt kell fordítanod a programod (a Win98 megengedi a DOS-ba bootolást). A hosszú fájlnevek problémájának elkerülése érdekében a "subst" parancsot használhatod, pl.: "subst b: c:\documents...." parancs hatására a B: meghajón találod majd azokat a fájlokat melyek egyébkénta c:\documents... könyvtárban találhatók (ez a megoldás akkor is jól működik ha DOS ablakban kell bajlódni a Win32 hosszú fájlnevű könyvtárszerkezetével).