26 октобар 2014

Lazarus FPC Cross Compile Linux -> Windows

Ovaj primer se nadovezuje na prethodni post: Lazarus FPC Trunk Linux

Crosscompile Linux -> Windows 64-bit


Priprema fpc kompajlera za cross compile:
$ cd ~/fpc
$ make all OS_TARGET=win64 CPU_TARGET=x86_64
$ sudo make crossinstall OS_TARGET=win64 CPU_TARGET=x86_64 INSTALL_PREFIX=/usr
$ sudo ln -sf /usr/lib/fpc/2.7.1/ppcrossx64 /usr/bin/ppcrossx64

Priprema lazarus-a za cross compile:
$ cd ~/lazarus
$ make clean all bigide OS_TARGET=win64 CPU_TARGET=x86_64
$ cd lazarus/lcl
$ make clean all

Crosscompile Linux -> Windows 32-bit


Priprema fpc kompajlera za cross compile:
$ cd ~/fpc
$ make all OS_TARGET=win32 CPU_TARGET=i386
$ sudo make crossinstall OS_TARGET=win32 CPU_TARGET=i386 INSTALL_PREFIX=/usr
$ sudo ln -sf /usr/lib/fpc/2.7.1/ppcross386 /usr/bin/ppcross386

Priprema lazarus-a za cross compile:
$ cd ~/lazarus
$ make clean all bigide OS_TARGET=win32 CPU_TARGET=i386
$ cd lazarus/lcl
$ make clean all

Primer

Iskoristiću lazarus/examples/popupnotifier projekat kao primer. Kompajliranjem bez promene parametara dobija se linux izvršni fajl i aplikacija kao na slici:

Promenom parametara Compiler Options/Config and Target u Project Options-u na sledeći način:

Target OS (-T) = Win32
Target CPU family (-P) = i386
i ponovnim build-ovanjem projekta, dobija se izvršni fajl za windows platformu:
Kada se .exe fajl kopira i pokrene na win mašini, rezultat bi trebao biti ovakav:



Lazarus FPC Trunk Linux



Početna konfiguracija:
Debian Jessie 64-bit (kernel 3.16) sa Xfce DE.

Potrebni preduslovi:
$ sudo apt-get install build-essential gdb subversion libgtk2.0-dev

Preuzeti sa sourceforge.net najnoviji instaler: fpc-2.6.4.x86_64-linux.tar, otpakovati ga i instalirati:
$ tar -xvf fpc-2.6.4.x86_64-linux.tar
$ sudo fpc-2.6.4.x86_64-linux/install.sh

Preuzeti trunk verzije freepascal-a i lazarus-a:
$ svn checkout http://svn.freepascal.org/svn/fpc/trunk/ fpc
$ svn checkout http://svn.freepascal.org/svn/lazarus/trunk/ lazarus

Kompajlirati i instalirati trunk freepascal:
$ cd fpc
$ make clean all PP=/usr/lib/fpc/2.6.4/ppcx64
$ sudo make install INSTALL_PREFIX=/usr PP=/usr/lib/fpc/2.6.4/ppcx64
$ sudo ln -sf /usr/lib/fpc/2.7.1/ppcx64 /usr/bin/ppcx64

Kompajlirati lazarus:
$ cd ~/lazarus
$ make clean all bigide

Pokrenuti IDE:
$ ./startlazarus