miercuri, 17 octombrie 2018

Lazarus/FPC/ compile from Kubuntu 18.04 (64) to Linux 32, Windows 64 , Windows 32

I have a Linux Kubuntu 18.04 64 bit version.

Compile to Linux 32

1)  sudo apt-get install libc6-dev-i386
   sudo apt-get install g++-7-multilib
   sudo apt-get install gcc-multilib

2) Create a text file on Desktop and name it script.sh (for example)
    Open the file with a text editor (Kate for example) and add the following text:

#!/bin/bash

# Create /usr/bin/i386-linux-ld
cat >/usr/bin/i386-linux-ld << EOF
#!/bin/bash
ld -A elf32-i386 $@
EOF
chmod +x /usr/bin/i386-linux-ld

# Create /usr/bin/i386-linux-as
cat >/usr/bin/i386-linux-as << EOF
#!/bin/bash
as --32 $@
EOF
chmod +x /usr/bin/i386-linux-as


   Save the file and close the editor.
   Right-click on file, ghive it all permissions and mark it as executable.
   Run the file.
   Run the following commands:
which i386-linux-ld
which i386-linux-as
   If they return the location of the files, then the script was successful

3) Run the following commands:
cd /usr/share/fpcsrc/<version> (in my case: cd /usr/share/fpcsrc/3.0.4)
sudo make all CPU_TARGET=i386
sudo make crossinstall CPU_TARGET=i386
sudo make crossinstall CPU_TARGET=i386 INSTALL_PREFIX=/usr

sudo ln -sf /usr/lib/fpc/<version>/ppcross386 /usr/bin/ppcross386
   Locate the file /etc/fpc.cfg end open it with a text editor (like Kate).
   Locate the following lines:
#ifdef cpui386
-Fl/usr/lib/gcc/x86_64-linux-gnu/7
#endif 
  and modify them like this
#ifdef cpui386
-Fl/usr/lib/gcc/x86_64-linux-gnu/7/32
-Fl/usr/lib32
#endif

   Save the file and close

4) create the following links (many thanks: https://tondrej.blogspot.com/2015/05/fpc-and-lazarus-development-environment.html) :

sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so
sudo ln -s /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0 /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so
sudo ln -s /usr/lib/i386-linux-gnu/libgdk_pixbuf-2.0.so.0 /usr/lib/i386-linux-gnu/libgdk_pixbuf-2.0.so
sudo ln -s /usr/lib/i386-linux-gnu/libgdk-x11-2.0.so.0 /usr/lib/i386-linux-gnu/libgdk-x11-2.0.so
sudo ln -s /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 /usr/lib/i386-linux-gnu/libgobject-2.0.so
sudo ln -s /lib/i386-linux-gnu/libglib-2.0.so.0 /lib/i386-linux-gnu/libglib-2.0.so
sudo ln -s /usr/lib/i386-linux-gnu/libgthread-2.0.so.0 /usr/lib/i386-linux-gnu/libgthread-2.0.so
sudo ln -s /usr/lib/i386-linux-gnu/libgmodule-2.0.so.0 /usr/lib/i386-linux-gnu/libgmodule-2.0.so
sudo ln -s /usr/lib/i386-linux-gnu/libpango-1.0.so.0 /usr/lib/i386-linux-gnu/libpango-1.0.so
sudo ln -s /usr/lib/i386-linux-gnu/libcairo.so.2 /usr/lib/i386-linux-gnu/libcairo.so
sudo ln -s /usr/lib/i386-linux-gnu/libpangocairo-1.0.so.0 /usr/lib/i386-linux-gnu/libpangocairo-1.0.so
sudo ln -s /usr/lib/i386-linux-gnu/libatk-1.0.so.0 /usr/lib/i386-linux-gnu/libatk-1.0.so
sudo ln -s /usr/lib/i386-linux-gnu/libglib-2.0.so.0 /usr/lib/i386-linux-gnu/libglib-2.0.so
 
Now it should work!



Compile to Windows 32

Simple and easy

cd /usr/share/fpcsrc/<version> (in my case: cd /usr/share/fpcsrc/3.0.4)
sudo make clean 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/<version>/ppcross386 /usr/bin/ppcross386



Compile to Windows 64

Just as simple and easy

cd /usr/share/fpcsrc/<version> (in my case: cd /usr/share/fpcsrc/3.0.4)
sudo make clean all OS_TARGET=win64
sudo make crossinstall OS_TARGET=win64 INSTALL_PREFIX=/usr
sudo ln -sf /usr/lib/fpc/<version>/ppcx64 /usr/bin/ppcx64

It might be necessary to edit the file /etc/fpc.cfg and add the following line:

-Fl/usr/lib/gcc/x86_64-linux-gnu/7


Niciun comentariu:

Trimiteți un comentariu