需要软件:
mysql-boost-5.7.20.tar.gz
ncurses-5.9.tar.gz
boost_1_59_0.tar.gz(只需源码,不需编译,不需安装到板子)
步骤:
-
下载ncurses-5.9.tar.gz到/opt/ncurses/
-
$cd /opt/ncurses
-
$tar xvf ncurses-5.9.tar.gz
-
$cd ncurses-5.9
-
$vi build.sh
输入以下内容(黄色高亮内容视情况而定):
#!/bin/sh
./configure--host=arm-linux-gnu--prefix=/opt/ti-am335x-sysroot/usr/local/lib/libncurses/\
CC=/opt/TI-AM335X/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc\
CXX=/opt/TI-AM335X/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++
make
make installDESTDIR=/opt/ti-am335x-sysroot/usr/local/lib/libncurses
-
$ch mod+x build.sh
-
$./build.sh
-
$下载boost_1_59_0.tar.gz到/opt/boost/
-
$cd boost
-
$tar xvf boost_1_59_0.tar.gz
-
$cd boost_1_59_0 #只解压即可 不需安装
-
下载mysql-boost-5.7.20.tar.gz到/opt/mysql目录
-
$tar xvf mysql-boost-5.7.20.tar.gz
-
$cd mysql-5.7.20/BUILD/
-
$cmake ../ -DCMAKE_CXX_FLAGS=-m64 -DCMAKE_C_FLAGS=-m64
-
$make comp_err comp_sql gen_lex_hash gen_lex_token
-
$sudo cp extra/comp_err scripts/comp_sql sql/gen_lex_hash sql/gen_lex_token
-
$cd /opt/mysql/
-
$mkdir build-arm
-
$cd build-arm/
-
$vi build.sh
(输入以下内容)
#!/bin/bash
rm ../mysql-5.7.20/CMakeCache.txt CMakeCache.txt
cmake ../mysql-5.7.20/ \
-DCMAKE_TOOLCHAIN_FILE=../build-arm/toolchain_file\
-DWITH_BOOST=/opt/boost/\
-DDEFAULT_CHARSET=utf8\
-DDEFAULT_COLLATION=utf8_general_ci\
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1\
-DWITH_READLINE=1 \
-DCMAKE_INSTALL_PREFIX=/opt/ti-am335x-sysroot/usr/local/mysql5.7.20\
-DMYSQL_DATADIR=/opt/ti-am335x-sysroot/data/mysql/data\
-DSTACK_DIRECTION=1 \
-DCURSES_LIBRARY=/opt/ti-am335x-sysroot/usr/local/lib/libncurses/lib/libncurses.a\
-DCURSES_INCLUDE_PATH=/opt/ti-am335x-sysroot/usr/local/lib/libncurses/include\
-DHAVE_IB_GCC_ATOMIC_COMPARE_EXCHANGE=1\
-DHAVE_IB_ATOMIC_PTHREAD_T_GCC=1\
-DWITHOUT_INNOBASE_STORAGE_ENGINE=1\
-DDISABLE_PSI_COND=1 \
-DDISABLE_PSI_FILE=1 \
-DDISABLE_PSI_IDLE=1 \
-DDISABLE_PSI_MEMORY=1\
-DDISABLE_PSI_METADATA=1\
-DDISABLE_PSI_MUTEX=1 \
-DDISABLE_PSI_RWLOCK=1\
-DDISABLE_PSI_SOCKET=1\
-DDISABLE_PSI_SP=1 \
-DDISABLE_PSI_STAGE=1 \
-DDISABLE_PSI_STATEMENT=1\
-DDISABLE_PSI_DIAGEST=1\
-DDISABLE_PSI_TABLE=1 \
-DENABLED_PROFILING=0 \
-DENABLE_DEBUG_SYNC=0 \
-DENABLE_DTRACE=0 \
-DENABLE_GCOV=0 \
-DOPTIMIZER_TRACE=0 \
-DWITH_DEBUG=0 \
-DWITH_EMBEDDED_SERVER=1\
-DWITH_EMBEDDED_SHARED_LIBRARY=1\
-DWITH_RAPID=0 \
-DWITH_UNIT_TESTS=0 \
make
make install
16.$vi toolchain_file
输入以下内容
#this one is important
SET(CMAKE_SYSTEM_NAMELinux)
SET(CMAKE_SYSTEM_VERSION4.9.41)
SET(CMAKE_SYSTEM_PROCESSORarm)
#thisone not so much
#specify the cross compiler
set(tools/opt/TI-AM335X/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf)
SET(CMAKE_C_COMPILER /opt/TI-AM335X/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER/opt/TI-AM335X/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++)
#where is the target environment
SET(CMAKE_SYSROOT/opt/ti-am335x-sysroot)
SET(CMAKE_FIND_ROOT_PATH /opt/ti-am335x-sysroot)
#search for programs in the build host directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAMNEVER)
#for libraries and headers in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARYONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDEBOTH)
SET(CMAKE_FIND_ROOT_PATH_MODE_PACHAGEONLY)
#for libraries and headers in the target directories
SET(HAVE_C_SHIFT_OR_OPTIMIZATION_BUG_EXITCODE 0)
SET(HAVE_CXX_SHIFT_OR_OPTIMIZATION_BUG_EXITCODE 0)
SET(HAVE_C_FLOATING_POINT_FUSED_MADD_EXITCODE 0)
SET(HAVE_CXX_FLOATING_POINT_FUSED_MADD_EXITCODE 0)
SET(HAVE_FALLOC_PUNCH_HOLE_AND_KEEP_SIZE_EXITCODE 0)
SET(HAVE_LLVM_LIBCPP_EXITCODE 0)
#SET(HAVE_IB_GCC_ATOMIC_COMPARE_EXCHANGE 1)
17.$./build.sh
至此,mysql将被编译并安装到/opt/ti-am335x-sysroot/usr/local/mysql5.7.20目录。