移植mysql5

编程入门 行业动态 更新时间:2024-10-11 23:27:52

移植mysql5

移植mysql5

mysql5.7.22移植arm遇到的问题,尚未解决

开发环境:Ubuntu18.04LTS虚拟机
交叉编译工具:使用apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf

第一步,前往/>mysql官网下载源码,本人下载的5.7.21不带boost的版本。

参考;移植MySQL - CSDN博客这篇博客,先编译x86版本。

$ tar zxf mysql-5.5.54.tar.gz
$ mv mysql-5.5.54 mysql-5.5.54-x86
$ cd mysql-5.5.54-x86
$ cmake . # 不需要指定特殊的编译选项
$ make

在cmake的过程中提示下载boost_1_59_0.tar.gz,,官网貌似也有但是速度慢。
随后cmake成功,然后等了一个多小时编译成功。

第二步,配置arm交叉编译环境,参照那篇配置mips的配置,新建arm.cmake。

SET(CMAKE_SYSTEM_NAME Linux)
# $ENV{OCTEON_ROOT}表示引用环境变量OCTEON_ROOT
SET(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)
SET(CMAKE_FIND_ROOT_PATH /usr/arm-linux-gnueabihf/)
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)# 下面两个变量是mysql特有的变量,定义的值需要进行测试确认。
# 测试方法可以在CMakeList.txt中找到
SET(STACK_DIRECTION -1)
SET(CMAKE_BUILD_TYPE RelWithDebInfo)

然后运行cmake,

$ tar zxf mysql-5.5.54.tar.gz
$ cd mysql-5.5.54
$ cmake                             \
-DCMAKE_TOOLCHAIN_FILE=arm.cmake   \ # 指定使用arm交叉工具链交叉编译
-DCMAKE_INSTALL_PREFIX=/usr         \ # mysql在目标文件系统中的安装路径
-DMYSQL_DATADIR=/data               \
-DSYSCONFDIR=/etc                   \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock   \
-DMYSQL_TCP_PORT=3306               \
-DEXTRA_CHARSETS=all                \
-DDEFAULT_CHARSET=utf8              \
-DDEFAULT_COLLATION=utf8_general_ci \
.

然后运行出错,提示找不到boost_1_59_0,然而我明明已经下载好了放到了相应的位置,推测是需要我交叉编译boost,于是百度搜索boost交叉编译。

第三步、移植boost。

参考了这篇博客.html>移植boost_1_55_0至arm的方法小结 - landy_weiai - 博客园。先运行

./bootstrap.sh

然后修改生成的project-config.jam文件
修改五处:

    using gcc : arm : arm-none-linux-gnueabi-gcc ;option.set prefix :(交叉编译器所在位置);option.set exec-prefix :(交叉编译器所在位置)/bin ;option.set libdir :(交叉编译器所在位置)/lib ;option.set includedir :(交叉编译器所在位置)/include ;

然后

./b2 
./b2 install

成功安装后,回到正题,这时要将安装的位置加到arm.cmake文件中

SET(CMAKE_FIND_ROOT_PATH /usr/arm-linux-gnueabihf/ <thePathToBoost>)

删除CMakeCache.txt,重新运行cmake,这一次提示不存在ncurses,同样的,交叉编译ncurses,

第三步、移植ncurses

清华镜像开源网站.1.tar.gz。

./configure --host=arm-linux --prefix=/opt/ncurses CC=arm-linux-gnueabihf-gcc

然后make 以及make install
在make install时出现了一个小问题,
strip: Unable to recognise the format of the input file `/opt/ncurses/bin/tic …….
经百度,原因是make install时 根据PATH设置的路径的先后顺序,选择了x86版的strip,而在这里,需要使用的是arm版的,于是调整顺序。

export PATH=/usr/arm-linux-gnueabihf/bin/:$PATH

然后将位置加到arm.cmake中。
重新运行cmake,
然而不遂人意。
还是报错了

-- INSTALL mysqlclient.pc lib/pkgconfig
-- CMAKE_BUILD_TYPE: RelWithDebInfo
-- COMPILE_DEFINITIONS: _GNU_SOURCE;_FILE_OFFSET_BITS=64;BOOST_GEOMETRY_SQRT_CHECK_FINITENESS;HAVE_CONFIG_H;HAVE_LIBEVENT1
-- CMAKE_C_FLAGS:  -lpthread -lm -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mthumb -Wall -Wextra -Wformat-security -Wvla -Wimplicit-fallthrough=2 -Wwrite-strings -Wdeclaration-after-statement
-- CMAKE_CXX_FLAGS:  -Wall -Wextra -Wformat-security -Wvla -Wimplicit-fallthrough=2 -Woverloaded-virtual -Wno-unused-parameter
-- CMAKE_C_LINK_FLAGS: 
-- CMAKE_CXX_LINK_FLAGS: 
-- CMAKE_C_FLAGS_RELWITHDEBINFO: -O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -ffp-contract=off -fno-expensive-optimizations -DDBUG_OFF
-- CMAKE_CXX_FLAGS_RELWITHDEBINFO: -O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -std=gnu++03 -ffp-contract=off -fno-expensive-optimizations -DDBUG_OFF
-- Configuring incomplete, errors occurred!
See also "/home/bwang/qteverywhere/mysql-5.7/CMakeFiles/CMakeOutput.log".
See also "/home/bwang/qteverywhere/mysql-5.7/CMakeFiles/CMakeError.log".

进入CMakeError.log中,定位到最早的error中

  184 Linking C executable cmTC_15480185 /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_15480.dir/link.txt --v      erbose=1186 /usr/bin/arm-linux-gnueabihf-gcc      -rdynamic CMakeFiles/cmTC_15480.dir/      CheckSymbolExists.c.o  -o cmTC_15480187 CMakeFiles/cmTC_15480.dir/CheckSymbolExists.c.o: In function `main':188 CheckSymbolExists.c:(.text+0x2c): undefined reference to `pthread_create'189 collect2: error: ld returned 1 exit status190 CMakeFiles/cmTC_15480.dir/build.make:97: recipe for target 'cmTC_15480' fa      iled191 make[1]: *** [cmTC_15480] Error 1192 make[1]: Leaving directory '/home/bwang/qteverywhere/mysql-5.7/CMakeFiles/      CMakeTmp'193 Makefile:126: recipe for target 'cmTC_15480/fast' failed194 make: *** [cmTC_15480/fast] Error 2

以为是没加-lpthread的原因,

#!/bin/sh
rm CMakeCache.txt
cmake                             \-G "Unix Makefiles" \-DCMAKE_INSTALL_PREFIX=/opt/mysql-5.7   \-DCMAKE_TOOLCHAIN_FILE=arm.cmake   \-DEXTRA_CHARSETS=all                \-DDEFAULT_CHARSET=utf8              \-DDEFAULT_COLLATION=utf8_general_ci \-DCMAKE_C_FLAGS="${CMAKE_C_FLAGS} -lpthread -lm -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mthumb" 

添加了最下面一行,还是没法解决。于是又去下载了5.6版本也是不行。
最后只能先暂时放弃,还是选择移植5.1版本的mysql,这个的教程也有很多,关键是能够成功移植。

途中还参考了以下博客:
1、;ubuntu 16.04 交叉编译 mysql 5.7.16 到 arm平台 - CSDN博客
2、/> Cross-compiling MySQL at dreamport | nonoo.hu

更多推荐

移植mysql5

本文发布于:2024-03-07 20:08:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1718798.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!