暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL 移植编译 (四)完结篇

上下博客 2021-04-21
1014

前提

如果你真实的参与过开发,那么你可能会有这么一个体会:“环境很重要”。特别是Android开发,连开发工具的版本都有要求。特别是现在各种包管理器的百家齐放环境下,环境尤为重要。所以在进行实际移植前,建议使用虚拟机或者Docker来进行编译,这是一个惨痛教训下的经验。

1
为什么这么早结束
怎么说~~~ 实际这个系列本想多写一写,特别是上一篇的预告,再加上本来我写的一款免费工具:MySqlEd。就是基于此类技术实现的,所以也算有点心得,想写一写。不过万事总有不过。

① 写文章比较费时间

② 公众号更多的是用来做随笔使用

③ 水平有限不想翻书凑字数故作高深

基于以上现有阻碍,所以大部分文章没有写的很详细,读来,不能算是一种指引方面的文章,读来意义不大。为了不误人子弟,打算尽早结束。
2
开始
这里我直接把我的编译脚本贴出来,用了现有的环境。原先的环境崩溃了,所以我也有很长很长一段时间没有更新软件。未来看计划更新吧
    #!/bin/bash
    rm -rf CMakeFiles
    rm -rf CMakeCache.txt
    clear
    /Users/wonmo/Library/Android/sdk/cmake/3.10.2.4988404/bin/cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mysql/data -DDEFAULT_CHARSET=utf8  -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=all -DWITH_DEBUG=0  -DENABLED_LOCAL_INFILE=1 -DANDROID_ABI=x86 \
    -DANDROID_PLATFORM=android-24 \
    -DCMAKE_BUILD_TYPE=Debug \
    -DANDROID_NDK=/Users/wonmo/Library/Android/sdk/ndk-bundle \
    -DCMAKE_CXX_FLAGS= \
    -DCMAKE_SYSTEM_NAME=Android \
    -DCMAKE_ANDROID_ARCH_ABI=x86 \
    -DCMAKE_SYSTEM_VERSION=24 \
    -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
    -DCMAKE_ANDROID_NDK=/Users/wonmo/Library/Android/sdk/ndk-bundle \
    -DCMAKE_TOOLCHAIN_FILE=/Users/wonmo/Library/Android/sdk/ndk-bundle/build/cmake/android.toolchain.cmake \
    -G Ninja \
    -DCMAKE_MAKE_PROGRAM=/Users/wonmo/Library/Android/sdk/cmake/3.10.2.4988404/bin/ninja \
    -DSTACK_DIRECTION=1 \
    -DENABLE_DOWNLOADS=1
    复制
    需要注意sysroot,如果你编译错误。那么你要看make的错误输出文本文档,里面搜索sysroot。它是你make或者ninja的环境目录,将需要的类库都安装到这里指向的目录去。
    3
    过程

      bogon:mysql-5.6.38 wonmo$ ./build.sh 


      CMake Deprecation Warning at CMakeLists.txt:24 (CMAKE_POLICY):
      The OLD behavior for policy CMP0018 will be removed from a future version
      of CMake.
      -- Found Curses: Users/wonmo/Library/Android/sdk/ndk-bundle/sysroot/usr/lib/libcurses.a
      -- Using cmake version 3.10.2
      -- Not building NDB
      -- Performing Test HAVE_PEERCRED
      -- Performing Test HAVE_PEERCRED - Failed
      -- GMOCK_SOURCE_DIR:/Users/wonmo/Desktop/mysql-5.6.38/source_downloads/googletest-release-1.8.0/googlemock
      -- Performing Test HAVE_NO_NULL
      -- Performing Test HAVE_NO_NULL - Success
      -- Performing Test HAVE_NO_UNUSED_TYPEDEFS
      -- Performing Test HAVE_NO_UNUSED_TYPEDEFS - Success
      -- Performing Test HAVE_NO_COMPARE_DISTINCT_POINTER_TYPES
      -- Performing Test HAVE_NO_COMPARE_DISTINCT_POINTER_TYPES - Success
      -- Performing Test HAVE_NO_BUILTIN_MEMCMP
      -- Performing Test HAVE_NO_BUILTIN_MEMCMP - Success
      -- GTEST_LIBRARIES:gmock;gtest


      CMake Deprecation Warning at scripts/CMakeLists.txt:287 (CMAKE_POLICY):
      The OLD behavior for policy CMP0007 will be removed from a future version
        of CMake.
        
      The cmake-policies(7) manual explains that the OLD behaviors of all
      policies are deprecated and that a policy should be set to OLD only under
      specific short-term circumstances. Projects should be ported to the NEW
        behavior and not rely on setting a policy to OLD.
        
      -- CMAKE_BUILD_TYPE: Debug
      -- COMPILE_DEFINITIONS: HAVE_CONFIG_H
      -- CMAKE_C_FLAGS: -isystem Users/wonmo/Library/Android/sdk/ndk-bundle/sysroot/usr/include/i686-linux-android -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -Wa,--noexecstack -Wformat -Werror=format-security -Wall -Wextra -Wformat-security -Wvla -Wwrite-strings -Wdeclaration-after-statement
      -- CMAKE_CXX_FLAGS: -isystem Users/wonmo/Library/Android/sdk/ndk-bundle/sysroot/usr/include/i686-linux-android -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11 -Wall -Wextra -Wformat-security -Wvla -Woverloaded-virtual -Wno-unused-parameter -Wno-null-conversion -Wno-unused-private-field
      -- CMAKE_C_FLAGS_DEBUG: -g -fno-omit-frame-pointer -fno-strict-aliasing -DENABLED_DEBUG_SYNC
      -- CMAKE_CXX_FLAGS_DEBUG: -g -fno-omit-frame-pointer -fno-strict-aliasing -DENABLED_DEBUG_SYNC
      -- Configuring done
      -- Generating done
      -- Build files have been written to: Users/wonmo/Desktop/mysql-5.6.38
      bogon:mysql-5.6.38 wonmo$ make
      复制


      4
      编译环境
      编译脚本的参数怎么来的。大部分是看NDK文档,然后还有一种方法,就是直接看你现有的开发工具环境里的:build.ninja或者android_gradle_build这些实际都可以查看。从中找到你需要的参数。




      文章转载自上下博客,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论