LinuxMint上にWindows64bit向けFreePascalクロスコンパイラを動作させる環境を作ったよ その2
LinuxMint上にWindows64bit向けFreePascalクロスコンパイラを動作させる環境を作ったよ - 四角革命前夜の続き。実はもっと簡単に構築できたみたい……!
環境:LinuxMint 12 64bit
下準備
$ mkdir -p $HOME/Binary/ $HOME/Repos/src/
前回と同じく、生成するバイナリ類を$HOME/Binary/に、ソース類を$HOME/Repos/src/に置きます。
http://sourceforge.net/projects/freepascal/files/からダウンロードするもの:
ここが前回と違うところ。
$ sudo apt-get install -y mingw-w64
これでコンパイル済みのWindows 32/64bit向けbinutilsとgccと.hなどがインストールされます。
前回の苦労はなんだったのか……!
もうちょっと説明するとmingw-w64はメタパッケージで、
がインストールされます。gcc-mingw64もメタパッケージで、
とか、その他いろいろなものが入ります。
build-essentialとか入れてる場合(というか入ってないと困るんだけど)は取得するものもそんなに多くないはず。
FreePascalのインストール
先にFreePascalをインストール。これも前回と同じ。
$ cd ~/Repos/src/ $ tar xvf fpc-2.6.0.x86_64-linux.tar $ cd fpc-2.6.0.x86_64-linux/ $ sh install.sh Install prefix (/usr or /usr/local) [/home/sasaplus1/fpc-2.6.0] : /home/sasaplus1/Binary/fpc-2.6.0 Install Textmode IDE (Y/n) ? n Install FCL (Y/n) ? y Install packages (Y/n) ? y Install documentation (Y/n) ? y Install demos (Y/n) ? y $ export PATH=$HOME/Binary/fpc-2.6.0/bin:$PATH
FreePascalのコンパイル
FreePacalをクロスコンパイルします。.exeなコンパイラとか生成されますが、欲しいのはunits以下だけです。
$ cd ~/Repos/src/ $ tar xvfz fpc-2.6.0.source.tar.gz $ cd fpc-2.6.0/ $ make clean all CROSSBINDIR=/usr/bin OS_TARGET=win64 CPU_TARGET=x86_64 BINUTILSPREFIX=x86_64-w64-mingw32- OPT="-Xd -Xt -gl" $ make install INSTALL_PREFIX=$HOME/Binary/fpc-win64 CROSSBINDIR=/usr/bin OS_TARGET=win64 CPU_TARGET=x86_64 BINUTILSPREFIX=x86_64-w64-mingw32- OPT="-Xd -Xt -gl"
コンパイルしてみる
実際にコンパイルしてみる。
$ vim asdf.lpr
program asdf; begin WriteLn('Hello, World!'); end.
$ fpc asdf.lpr -Fu$HOME/Binary/fpc-win64/lib/fpc/2.6.0/units/x86_64-win64/rtl -Twin64 -XPx86_64-w64-mingw32- $ objdump -a asdf.exe asdf.exe: file format pei-x86-64 asdf.exe
できたっぽい。
ついでにリソースも。
というか前回の方法でリソースがコンパイルできなかったからやり直したんだけど……
$ vim qwerty.rc
#include <winver.h> 1 VERSIONINFO FILEVERSION 0,0,1,0 PRODUCTVERSION 0,0,1,0 FILEOS VOS_NT_WINDOWS32 FILETYPE VFT_APP BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "041103A4" BEGIN VALUE "FileDescription", "asdf\0" VALUE "LegalCopyright", "CopyRight(C) 2011 sasa+1\0" VALUE "FileVersion", "0.0.1\0" VALUE "OriginalFilename", "asdf.exe\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x0411, 0x03A4 END END
$ x86_64-w64-mingw32-windres -i qwerty.rc -o qwerty.res -I/usr/i686-w64-mingw32/include
できたっぽい。
前回の苦労はなんだったのか……