MinGW dan Kompilasi di Windows

Bismillah

PERINGATAN: Tulisan ini dibuat oleh orang yang ndak penting(tm), BUTA SAMA SEKALI DENGAN C, sehingga mungkin bakal panjang dan membosankan. :)

Tadinya posting ini hendak berbahasa Inggris, tapi karena takut kelamaan dan buang2 waktu (selain karena level bahasa Inggris saya yang Tarzan), akhirnya diputuskan jadi Indonesian sahaja. Merdeka!

Inti posting:
0. Cara comile source application di Windows dengan MinGW.
1. Berguna juga untuk yang pengen dapet 'feel' Linux di Windows.
2. Belajar C sedikit2
3. Dalam rangka pengembangan aplikasi billing : gBilling (http://gbilling.sourceforge.net)
4. Menginstall GTK+ yang dapat run di sembarang platform.

LANGKAH-LANGKAH
0. Install MinGW
MinGW adalah minimalist GNU for Windows (atau apalah). Intinya kita ingin mendapatkan development environment untuk pembuatan Windows application. Dalam MinGW, sudah terdapat programming tool set GCC dan aneka macam compiler lainnya. Nah, temennya MinGW yang tak kalah penting adalah MSYS (minimalist system), semacam shell / CLI/ konsole / apalah sebagai PENGGANTI cmd.exe yang sucks itu. :)) Di sinilah kita bisa dapet 'feel' konsole/shell/nya Linux (menurut saya).
Terus, kenapa gak pake IDE aja? Kan udah jadi satu tuh compiler/blablabla/tetekbengek, tinggal klik Run next2 aja?
Hmmm... Untuk pertanyaan ini, kembali ke selera masing2 aja. Kalo pengen pake IDE ya silakan coba kunjungi http://www.bloodshed.net aja :) Gitu aja kok repot..

Langsung download MinGW dari situsnya langsung di mingw.org ya? Installnya gampang kok. Yang penting adalah JANGAN MENGINSTALL MinGW DI DIREKTORI YANG MENGANDUNG SPASI. Misalnya, jangan menginstall di Program Files atau My Documents atau apa lah. Ketentuannya memang gitu, dan untuk kekompakan kita bersama, mari bersama2 mengikuti apa kata insallernya sahaja: kita bakal install di C:\MinGW

1. Install MSYS
Install MSYS dari situs mingw.org (sekarang saya pake MSYS-1.0.11.exe). Jawab pertanyaan saat instalasi dengan jujur. Pastikan instalasinya gak bareng dengan direktorinya MinGW, misalnya untuk kekompakan kita taruh di C:\msys. Nanti file2 msys akan bermukim di C:\msys\1.0\. Oke lanjut.

2. Download GTK+
Karena salah satu poin di posting ini adalah menginstall GTK+, ada baiknya hal tersebut Mbah jelaskan di sini ya Cu.. GTK+ = GIMP Tool Kit + (tanda plus maksudnya udah ada banyak enhancement sejak dirilis). GTK+ ini adalah toolkit spaya orang bisa bikin aplikasi yang jalan hampir di semua platform, contoh yang paling jumawa ya GIMP, GNOME desktop, Inkscape, bahkan Maemo Surftablet! Jaman jebot, hanya ada 3 lib yang disertakan di gtk, yaitu libgdk, libglib, dan libgtk. Kalo sekarang udah seabreg.. Langsung saja, buat yang kebelet, download bundlenya aja (lengkap kap kap) langsung dari gtk.org/download-windows.html yang terbaru versi 2.22

Setelah mengekstrak file berukuran kurang lebih 23MB, taruh di C:\MinGW\gtk (kalau udah terlanjur install libgtk dari MinGW, rename aja dulu foldernya jadi nama lain, semisal gtk_old atau apalah) sehingga di dalam C:\MinGW\gtk terdapat folder bin, etc, include, lib, man, manifest, share, src. Sudah? Ya sudah.. :D

3. Konfigurasi MSYS
Masih ingat dengan msys yang kita install ke C:\msys ? Nah, di dalam folder 1.0 terdapat folder home\[nama Anda]. Demi kekompakan warga dusun ini, saya putuskan pake nama saya aja.. Prabowo Murti. Nah, sudah ada home\Prabowo Murti di folder C:\msys\1.0 kita. Folder ini ibarat path home a.k.a ~ kita kalo di Linux. Kita akan mengompile source aplikasi gbilling di sini.

Ups, lupa. Sebelumnya Anda bisa mengatur profile untuk msys ini, caranya edit sahaja file /etc/profile yang ada di C:\msys\1.0 (sekali lagi, demi kekompakan, anggap saja / = C:\msys\1.0 <-- PENTING!!!! biar saya ndak banyak ngetik). Tambahkan baris berikut pada file /etc/profile (ini gunanya supaya bisa search lib2 yang kita pakai untuk proses kompilasi.

export CFLAGS="-I/local/include"
export LDFLAGS="-L/local/lib"
export PKG_CONFIG_PATH="/mingw/gtk/lib/pkgconfig"

Khusus untuk path PKG_CONFIG_PATH, kalau diri Anda merasa tidak menemukan path di atas, cari saja file gtk+-2.0.pc. Nah, path tempat file tersebutlah yang dimasukkan ke baris di atas (tulisan yang digaris bawahi). Oia, ada satu lagi file di /etc yang penting, yaitu fstab. Kalau mau diutak-atik silakan, contohnya ada di file fstab.sample di folder yang sama. Intinya fstab ini mirip dengan fstab di Linux, mendaftar/mount. Artinya kalau pengen lebih singkat, atau kebetulan install MinGW di path yang panjang seperti C:\path\ke\apps\yang\panjang\naujubilah\MinGW tinggal masukkan
C:\path\ke\apps\yang\panjang\naujubilah\MinGW /mingw

Gampang kan?

Dan untuk perkara input dll, silakan edit file .inputrc di /home/Prabowo Murti (misalnya setting suara bell supaya ndak cerewet).

Demi kemaslahatan dan kekompakan bersama, silakan edit environment variables di Windows. Caranya, klik kanan pada My Computer, pilih Properties -- Advanced -- Environment Variables. Nanti di System Variable, ada Variable namanya PATH. Edit sehingga ujungnya menjadi terlihat seperti ini
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\MinGW\bin

Sekarang, kita siap!

4. Mulai kompilasi gBilling di Windows
Download source terbaru gBilling dari repositorynya di gbilling.git.sourceforge.net/git/gitweb.cgi?p=gbilling/gbilling;a=summary
Mau lebih gampang? tinggal download msysgit dari http://code.google.com/p/msysgit/ lalu atur Environment Variable nya ke C:\tempat\install\msysgit\bin.

Setelah itu, kalau kita jalankan msys, kita bisa pake perintah git status, git pull, dan git git lainnya..

Prabowo Murti@ZAENAB ~/mainan/gbilling/gbilling-client
$ ./configure
checking for a BSD-compatible install... /bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking for style of include used by make... GNU
checking for gcc... gcc
checking for C compiler default output file name... a.exe
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... .exe
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... gcc3
checking for library containing strerror... none required
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking dependency style of gcc... (cached) gcc3
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking dependency style of gcc... (cached) gcc3
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking sys/file.h usability... yes
checking sys/file.h presence... yes
checking for sys/file.h... yes
checking sys/socket.h usability... no
checking sys/socket.h presence... no
checking for sys/socket.h... no
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking arpa/inet.h usability... no
checking arpa/inet.h presence... no
checking for arpa/inet.h... no
configure: WARNING: Libtool does not cope well with whitespace in `pwd`
checking build system type... i686-pc-mingw32
checking host system type... i686-pc-mingw32
checking for a sed that does not truncate output... /bin/sed
checking for fgrep... /bin/grep -F
checking for ld used by gcc... c:/mingw/mingw32/bin/ld.exe
checking if the linker (c:/mingw/mingw32/bin/ld.exe) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /mingw/bin/nm
checking the name lister (/mingw/bin/nm) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 8192
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking for c:/mingw/mingw32/bin/ld.exe option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... file_magic ^x86 archive import|^x86 DLL
checking for ar... ar
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /mingw/bin/nm output from gcc object... ok
checking for dlfcn.h... no
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -DDLL_EXPORT -DPIC
checking if gcc PIC flag -DDLL_EXPORT -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (c:/mingw/mingw32/bin/ld.exe) supports shared libraries... yes
checking whether -lc should be explicitly linked in... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for pkg-config... /mingw/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for PACKAGE... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating gbilling-client.desktop
config.status: creating src/Makefile
config.status: creating pixmaps/Makefile
config.status: creating data/Makefile
config.status: creating ui/Makefile
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands


Configuration:

Source code location.. : .
Prefix................ : /usr/local
Compiler.............. : gcc


konfigurasi selesai, jalankan 'make' untuk kompilasi dan
'make install' untuk instalasi

BERSAMBUNG KE TULISAN SELANJUTNYA

Tidak ada komentar:

Posting Komentar

speak now or forever hold your peace

About Me