Difference between revisions of "Cross-compilation from Win32 to GO32v2/hu"

From Lazarus wiki
Jump to navigationJump to search
m
m
Line 3: Line 3:
  
  
Hamarosan...<!--Á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").
+
Á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.).--><!--This is the only possible solution for platforms for which there isn't emulation layer for running "their" binaries (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://ftp.freepascal.org/pub/fpc/contrib/cross/ 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.
+
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.).<!--This is the only possible solution for platforms for which there isn't emulation layer for running "their" binaries (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://ftp.freepascal.org/pub/fpc/contrib/cross/ 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).-->
+
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).
 +
<!--The third possibility is using DOS emulation provided by WinXX to avoid cross-compilation. If this works for you (see "Creating GO32v2 binaries under WinXX DOS box" below for more detailed information), this is the easiest solution. However, you are completely on your own there, since the WinXX emulation of DOS is far from being perfect and different WinXX versions impose various different limitations and issues one may need to face.-->
  
<!--The third possibility is using DOS emulation provided by WinXX to avoid cross-compilation. If this works for you (see "Creating GO32v2 binaries under WinXX DOS box" below for more detailed information), this is the easiest solution. However, you are completely on your own there, since the WinXX emulation of DOS is far from being perfect and different WinXX versions impose various different limitations and issues one may need to face.-->
 
<!--
 
 
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.
 
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.
  
Line 19: Line 18:
 
=== GO32v2 binárisok létrehozása a WinXX DOS ablakában ===
 
=== GO32v2 binárisok létrehozása a WinXX DOS ablakában ===
  
A simple way to generate plain-DOS progs under Win32 is the following: Install the Go32V2 version under Win32 in e.g. \ppdos. Install an current Win32 version of fpc in e.g. \ppwin. Do your development with the Win32 version. After all runs and is fine use a Dos box (or a command-shell) and compile your source code via the command-line version of Go32v2 (of course you have to inform the compiler (via command line switches) about the location of your units..). The resulting *.exe runs fine as _long_ as DPMI is present (you may distribute your *.exe together with cwsdpmi.exe which is in your fpc directory). If you don't want a separate DPMI host you may use one of the ways described below or compile your program under plain DOS (in Win98 it suffices to boot in DOS mode and compile from there). To avoid problems with "long file names" you may use the "subst"-Command to access your files e.g. "subst b: c:\documents...." would let you find all files in b: which are located in c:\documents... (this is also a fine solution if you work in a cmd shell or Dos box and are annoyed by the long names of the Win32 directory structure).
+
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).

Revision as of 19:39, 11 June 2009

Template:Translate 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).