抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

参考资料

环境

  • 交叉工具链,gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux
  • 安装目录,/home/fulong/rootfs/usr/local/
  • 下载包含boost包的代码 Compressed TAR Archive, Includes Boost Headers
  • 默认已经编译完openssl库
  • 默认已经编译完ncurse库

编译x86版本

1
2
3
4
5
6
7
8
#解压mysql
tar xvf mysql-boost-5.7.32.tar.gz
cd mysql-5.7.32
mkdir build
cd build
cmake .. -DWITH_BOOST=/home/fulong/linux/mysql-5.7.32/boost/boost_1_59_0/
# 最好使用单线程编译,因为可能内存不够导致编译超时,编译不通过
make

编译arm版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#解压mysql
tar xvf mysql-boost-5.7.32.tar.gz -C mysql-5.7.32.arm
cd mysql-5.7.32.arm
mkdir build
cd build
cmake .. \
-DWITH_BOOST=/home/fulong/linux/mysql-5.7.32/boost/boost_1_59_0/ \
-DCMAKE_C_COMPILER=/home/fulong/Public/gcc-x86/bin/arm-linux-gnueabihf-gcc \
-DCMAKE_CXX_COMPILER=/home/fulong/Public/gcc-x86/bin/arm-linux-gnueabihf-g++ \
-DWITH_SSL=/home/fulong/linux/rootfs4lora_gateway/usr \
-DWITH_LIBEVENT=bundled \
-DCURSES_INCLUDE_PATH=/home/fulong/linux/rootfs4lora_gateway/usr/include \
-DCURSES_LIBRARY=/home/fulong/linux/rootfs4lora_gateway/usr/lib/libncurses.so \
-DCMAKE_INSTALL_PREFIX=/home/fulong/linux/rootfs4lora_gateway/usr
# 最好使用单线程编译,因为可能内存不够导致编译超时,编译不通过
make
make install

错误汇总

1.出现/lib/ld-linux-armhf.so.3: No such file or directory

因为这些工具都是交叉编译出来的工具,所以在X86中用不了,需要把刚刚x86编译出来的工具覆盖即可

报错工具汇总

  • comp_err
  • libmysql_api_test
  • gen_lex_hash
  • gen_lex_token
  • comp_sql
  • protoc

用以下命令查找路劲

1
find | grep comp_err

提示 #error “Unsupported platform”

  • 修改文件 storage/innobase/include/os0atomic.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
--- a/mysql-5.7.32/storage/innobase/include/os0atomic.h
+++ b/mysql-5.7.32.arm/storage/innobase/include/os0atomic.h
@@ -62,6 +62,10 @@ typedef ulint lock_word_t;

#define IB_STRONG_MEMORY_MODEL

+#else
+
+#define HAVE_ATOMIC_BUILTINS
+
#endif /* __i386__ || __x86_64__ || _M_IX86 || _M_X64 || __WIN__ */

/**********************************************************//**
@@ -258,8 +262,8 @@ os_compare_and_swap_uint32(volatile ib_uint32_t* ptr, ib_uint32_t old_val, ib_ui

#endif /* HAVE_GCC_SYNC_BUILTINS */

-# ifdef HAVE_IB_ATOMIC_PTHREAD_T_GCC
-#if defined(HAVE_GCC_SYNC_BUILTINS)
+# ifdef HAVE_ATOMIC_BUILTINS
+#if defined(HAVE_ATOMIC_BUILTINS)
# define os_compare_and_swap_thread_id(ptr, old_val, new_val) \
os_compare_and_swap(ptr, old_val, new_val)
#else
  • 修改文件 storage/innobase/include/os0atomic.ic
1
2
3
4
5
6
7
8
9
10
11
--- a/mysql-5.7.32/storage/innobase/include/os0atomic.ic
+++ b/mysql-5.7.32.arm/storage/innobase/include/os0atomic.ic
@@ -143,7 +143,7 @@ os_atomic_val_compare_and_swap(
static_cast<lint>(old_val))));
}

-#elif defined(HAVE_IB_GCC_ATOMIC_COMPARE_EXCHANGE)
+#elif defined(HAVE_ATOMIC_BUILTINS)

/** Do an atomic test and set.
@param[in,out] ptr Memory location to set

评论