= Compile ocsync from source on Ubuntu 12.04 = [[PageOutline]] == 試誤背景說明 == * 我把前面做過的一些嘗試搬到最後面,然後列幾項結論在此: * [備忘] mingw32 是舊版的,現在已經移到 mingw64 也就是可以同時支援 32 與 64 位元的 Windows 版本。所以如果要安裝套件,請安裝 mingw-w64! * [結論] 實際上,要用 mingw64 編譯 windows 程式,需要把所有相依的 library 都裝到 mingw64 底下才行。就像在 x86 底下想要編譯 arm 的程式碼,必須安裝 cross compiler ,並將會用到的所有相關函式庫改用 cross compiler 編譯新的 .so 或 .a 動態連結(類似 .dll),才能建立一個乾淨的 for arm 的 Linux Distribution。 這也就是為何需要一系列 Toolchain 的緣故。 * [解法一] OpenSUSE 有一系列的編譯,當然因為 OBS (Open Build Service) 的關係,也可以移植到 Ubuntu 上 * [參考] http://greg.thehellings.com/2012/02/a-better-ubuntu-mingw-experience/ * http://download.opensuse.org/repositories/home:/greg_hellings:/win64/ - 不同 Ubuntu 上的套件 * [解法二] 另外有個人整理了一系列的 Toolchain for Linux - http://mxe.cc/ * [參考] http://wiki.njh.eu/Cross_Compiling_for_Win32 ---- == Setup Develop Environment == * [Reference] http://gremu.net/blog/2010/building-csync-ubuntu-910/ * resolving dependencies : - CMake - check - log4c - sqlite3 - libiniparser - libsmbclient - libssh * {{{ jazz@precise:~$ sudo apt-get install build-essential cmake check liblog4c3 liblog4c-dev libsqlite3-0 libsqlite3-dev libsmbclient-dev doxygen libneon27-dev }}} * installing libiniparser * [Reference] http://ndevilla.free.fr/iniparser/ - check the official website for newest release {{{ jazz@precise:~$ wget http://ndevilla.free.fr/iniparser/iniparser-3.1.tar.gz jazz@precise:~$ tar zxvf iniparser-3.1.tar.gz jazz@precise:~$ (cd iniparser/; make; sudo cp libiniparser.* /usr/lib) }}} * We want to build Windows Client , so we will have to isntall 32/64 bits mingw-w64 {{{ jazz@precise:~$ sudo apt-get install mingw-w64 mingw-w64-dev g++-mingw-w64 gcc-mingw-w64 }}} * We will need a cmake toolchain file * [Reference] http://www.cmake.org/Wiki/CmakeMingw {{{ jazz@precise:~$ wget http://www.cmake.org/Wiki/images/c/c2/Toolchain-cross-mingw32-linux.cmake }}} == Download ocsync source tarball == * [Source] http://owncloud.org/sync-clients/ {{{ jazz@precise:~$ wget http://download.owncloud.com/download/ocsync-0.60.1.tar.bz2 jazz@precise:~$ tar jxvf ocsync-0.60.1.tar.bz2 jazz@precise:~$ cd ~/ocsync-0.60.1/build jazz@precise:~/ocsync-0.60.1/build$ cmake -DCMAKE_TOOLCHAIN_FILE=~/Toolchain-cross-mingw32-linux.cmake -DSQLITE3_INCLUDE_DIR=/usr/include -DSQLITE3_LIBRARY=/usr/lib/i386-linux-gnu/libsqlite3.so -DINIPARSER_INCLUDE_DIRS=~/iniparser/src/ -DINIPARSER_LIBRARIES=/usr/lib/libiniparser.so.0 .. jazz@precise:~/ocsync-0.60.1/build$ make }}}