The key to cross-compiling libmysql is to google “cmake cross compile” instead of “libmysql cross compile”. Took me a bit to think of this but it makes sense because cmake is the build system for libmysql.
My How-To
My how-to assumes you have a Linux system with standard development tools and compilers installed as well as GNU cross-compilers for the target platform.
- Download libmysql source: In the drop down box change to source. Otherwise you will be presented with pre-compiled binaries.
- Extract libmysql: tar -xzf mysql-connector-c-x.y.z.tar.gz
- run: cd mysql-connector-c-x.y.z
- Create a toolchain.cmake file (See section below)
- run: cmake -G “Unix Makefiles” -DCMAKE_INSTALL_PREFIX=`pwd`/install -DCMAKE_TOOLCHAIN_FILE=toolchain-arm-linux.cmake
- run: make
- run: make install
- Your libs are in `pwd`/install/lib
Toolchain file
The toolchain file sets a few parameters for the cmake system to override the default behavior of searching for the system compilers. I modified a sample from vtk.org CMake wiki. Here is my modified sample that cross-compiles for an ARM processor running Linux.
# this one is important SET(CMAKE_SYSTEM_NAME Linux) #this one not so much SET(CMAKE_SYSTEM_VERSION 1) # specify the cross compiler SET(CMAKE_C_COMPILER /usr/local/bin/arm-linux-gcc) SET(CMAKE_CXX_COMPILER /usr/local/bin/arm-linux-g++) # where is the target environment #SET(CMAKE_FIND_ROOT_PATH /opt/eldk-2007-01-19/ppc_74xx /home/alex/eldk-ppc74xx-inst) # search for programs in the build host directories SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) # for libraries and headers in the target directories SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)