Version 13 (modified by jazz, 12 years ago) (diff) |
---|
Compile ocsync from source on Ubuntu 12.04
試誤背景說明
- 我把前面做過的一些嘗試搬到最後面,然後列幾項結論在此:
- [備忘] 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 上
- [解法二] 另外有個人整理了一系列的 Toolchain for Linux - http://mxe.cc/
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)
- resolving dependencies :
- 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