场景

        CentOS Linux release 7.6.1810 (AltArch)

1)yum安装已有的GCC(gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)),通过scl安装GCC(gcc version 7.3.1 20180303 (Red Hat 7.3.1-5) (GCC) )

MySQL5.7.30版本源码依赖高版本的GCC,启用7.3版本GCC :scl enable devtoolset-7 bash

编译指令:

cmake ../ -DCMAKE_INSTALL_PREFIX=/opt/mysql  -DMYSQL_DATADIR=/opt/mysql/var  -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DENABLE_DTRACE=0 -DDEFAULT_CHARSET=utf8mb4  -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_EMBEDDED_SERVER=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/opt/mysql-src/boost_1_59_0

提示错误: error: could not split insn

/opt/mysql-src/mysql-5.7.30/storage/innobase/handler/handler0alter.cc:9015:1: error: could not split insn } ^(insn 7329 19670 19672 (parallel [            (set (reg:DI 0 x0 [orig:834 D.184765 ] [834])                (plus:DI (mem/v:DI (reg/f:DI 28 x28 [2541]) [-1  S8 A64])                    (const_int 536870912 [0x20000000])))            (set (mem/v:DI (reg/f:DI 28 x28 [2541]) [-1  S8 A64])                (unspec_volatile:DI [                        (mem/v:DI (reg/f:DI 28 x28 [2541]) [-1  S8 A64])                        (const_int 536870912 [0x20000000])                        (const_int 5 [0x5])                    ] UNSPECV_ATOMIC_OP))            (clobber (reg:CC 66 cc))            (clobber (reg:SI 9 x9))        ]) /opt/mysql-src/mysql-5.7.30/storage/innobase/include/sync0rw.ic:317 1856 {atomic_add_fetchdi}     (expr_list:REG_UNUSED (reg:CC 66 cc)        (expr_list:REG_UNUSED (reg:SI 9 x9)            (nil))))/opt/mysql-src/mysql-5.7.30/storage/innobase/handler/handler0alter.cc:9015:1: internal compiler error: in final_scan_insn, at final.c:2897Please submit a full bug report,with preprocessed source if appropriate.See  for instructions.Preprocessed source stored into /tmp/ccCdCpCd.out file, please attach this to your bugreport.make[2]: *** [storage/innobase/CMakeFiles/innobase_embedded.dir/build.make:726: storage/innobase/CMakeFiles/innobase_embedded.dir/handler/handler0alter.cc.o] Error 1make[1]: *** [CMakeFiles/Makefile2:2378: storage/innobase/CMakeFiles/innobase_embedded.dir/all] Error 2make: *** [Makefile:163: all] Error 2[root@taishan-atlas build]# cmake -versioncmake version 3.12.3CMake suite maintained and supported by Kitware (kitware.com/cmake).

问题原因:环境中有gcc -4.8.5的没有卸载

问题解决:yum -y remove gcc

如果把gcc version 7.3.1一同卸载,重新安装

2)/usr/bin/c++: No such file or directory

/bin/sh: /usr/bin/c++: No such file or directorymake[2]: *** [mysys_ssl/CMakeFiles/mysys_ssl.dir/build.make:63: mysys_ssl/CMakeFiles/mysys_ssl.dir/crypt_genhash_impl.cc.o] Error 127make[1]: *** [CMakeFiles/Makefile2:1320: mysys_ssl/CMakeFiles/mysys_ssl.dir/all] Error 2make: *** [Makefile:163: all] Error 2

解决:重新建立链接 ln -s /usr/bin/gcc  /usr/bin/cc /usr/bin/c++

3)make编译出错

../archive_output_directory/libmysys_ssl.a(my_default.cc.o):(.data.DW.ref.__gxx_personality_v0[DW.ref.__gxx_personality_v0]+0x0): undefined reference to `__gxx_personality_v0'collect2: error: ld returned 1 exit statusmake[2]: *** [extra/CMakeFiles/comp_err.dir/build.make:94: extra/comp_err] Error 1make[1]: *** [CMakeFiles/Makefile2:6587: extra/CMakeFiles/comp_err.dir/all] Error 2make: *** [Makefile:163: all] Error 2

解决:删除cmake下的build的中间目录,编译的时候引用了GCC4.8.3的参与了编译,make clean不一定有效

4)修复源码中的头文件缺少问题

编辑sql/mysqld.cc 添加头文件#include <sys/prctl.h>

/opt/mysql-src/mysql-5.7.30/sql/mysqld.cc: In function 'passwd* check_user(const char*)':/opt/mysql-src/mysql-5.7.30/sql/mysqld.cc:1565:12: error: 'prctl' was not declared in this scope     (void) prctl(PR_SET_DUMPABLE, 1);            ^~~~~make[2]: *** [sql/CMakeFiles/sql.dir/build.make:2829: sql/CMakeFiles/sql.dir/mysqld.cc.o] Error 1make[1]: *** [CMakeFiles/Makefile2:8317: sql/CMakeFiles/sql.dir/all] Error 2make: *** [Makefile:163: all] Error 2

重新make编译

©著作权归作者所有:来自51CTO博客作者fengyuzaitu的原创作品,如需转载,请注明出处,否则将追究法律责任

你的赞赏是我请进的动力

赞赏

0人进行了赞赏支持

更多相关文章

  1. Java 给 Word 添加数字签名
  2. linux 7安装oracle 11g root.sh不成功
  3. MSS和MTU的区别是什么?
  4. Centos6.8下编译安装Apache 2.4.25详细过程
  5. java获取指定年月的开始时间与结束时间
  6. 获取当天最大或最小日期
  7. Django 静态文件模板路径配置
  8. Pycharm 查看代码引用时,想跳回到上一步 设置
  9. MP4:文件类型mp42转码方案

随机推荐

  1. Android学习整理 -1- Fragment 学习
  2. android apk 自我保护技术-加密apk
  3. Android(安卓)MVP开发模式 google 官方Mv
  4. 开源自己写的刷票器软件(windows和Android
  5. Android应用程序开发以及背后的设计思想
  6. Android(安卓)10个快速开发框架:Afinal、T
  7. Android关于分包方案、插件化动态加载APK
  8. Android学习路线(二十七)键值对(SharedPrefe
  9. Android(安卓)资源加载与匹配
  10. android系统编译jdk版本