Centos7.9安装编译安装MySQL8.0踩过的坑error:
undefinedref。。。
由于PHP8出来之后,想着搞个新环境来玩⼀玩所以就⽤Cenotos 7.9安装lnmp,有的⽼铁就问为啥不⽤docker来做环境,因为我想
着花时间研究整个环境编译安装会出现什么样的情况和问题,⽅便后续开发部署避免踩坑,所以就总结了⼀下MySQL遇到过的⼀些⼩问
题,分享给⼤家。
在MySQL8.0编译安装的时候遇到过⾮常多的问题,特别是新环境的时候⼤家得注意。
每次安装的时候gcc和g++版本对应的问题是很重要的,如果没有安装正确的环境极可能安装到⼀半就会中断了。好了,我现在就把我遇
到的坑贴出来,⼀起看下在安装过程由于gcc和g++版本出现的问题。
原来我的gcc和g++ 的版本都是4.8.5但是版本太低,后⾯升级到了gcc5.2,但是编译安装的过程中遇到了如下的错误:
Scanning dependencies of target pfs_connect_attr-t
[ 67%] Building CXX object storage/perfschema/unittest/CMakeFiles/pfs_connect_attr-t.dir/pfs_
[ 67%] Building CXX object storage/perfschema/unittest/CMakeFiles/pfs_connect_attr-t.dir/__/__/__/sql/
[ 67%] Building CXX object storage/perfschema/unittest/CMakeFiles/pfs_connect_attr-t.dir/__/__/__/mysys/
[ 67%] Linking CXX executable ../../../runtime_output_directory/pfs_connect_attr-t
/opt/rh/devtoolset-8/root/usr/include/c++/8/bits/exception_ptr.h:183: error: undefined reference to '__cxa_init_primary_exception'
/opt/rh/devtoolset-8/root/usr/include/c++/8/bits/exception_ptr.h:189: error: undefined reference to 'std::__exception_ptr::exception_ptr::exception_ptr(void*)'
/opt/rh/devtoolset-8/root/usr/include/c++/8/thread:188: error: undefined reference to 'std::thread::_State::~_State()'
/opt/rh/devtoolset-8/root/usr/include/c++/8/thread:188: error: undefined reference to 'std::thread::_State::~_State()'
/opt/rh/devtoolset-8/root/usr/include/c++/8/thread:188: error: undefined reference to 'std::thread::_State::~_State()'
/opt/rh/devtoolset-8/root/usr/include/c++/8/thread:188: error: undefined reference to 'std::thread::_State::~_State()'
/opt/rh/devtoolset-8/root/usr/include/c++/8/thread:131: error: undefined reference to 'std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default /opt/rh/devtoolset-8/root/usr/include/c++/8/thread:131: error: undefined reference to 'std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default ../../innobase/libinnobase.a()::typeinfo for std::thread::_State_impl<std::thread::_Invoker<std::tuple<Runnable, void (*)()> > >: error: u ../../innobase/libinnobase.a()::typeinfo for std::thread::_State_impl<std::thread::_Invoker<std::tuple<Runnable, std::function<void (__g /opt/rh/devtoolset-8/root/usr/include/c++/8/thread:131: error: undefined reference to 'std::thread::_M_
start_thread(std::unique_ptr<std::thread::_State, std::default ../../innobase/libinnobase.)::typeinfo for std::thread::_State_impl<std::thread::_Invoker<std::tuple<Runnable, void (*)(log_t*), log_t*> > >: e /opt/rh/devtoolset-8/root/usr/include/c++/8/thread:131: error: undefined reference to 'std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default ../../innobase/libinnobase.)::typeinfo for std::thread::_State_impl<std::thread::_Invoker<std::tuple<Runnable, void (*)(fts_psort_t*), fts collect2: error: ld returned 1 exit status
make[2]: *** [runtime_output_directory/pfs_connect_attr-t] Error 1
make[1]: *** [storage/perfschema/unittest/CMakeFiles/pfs_connect_attr-t.dir/all] Error 2
make: *** [all] Error 2
我还特地的问了⼏个做运维的朋友,都没有给我解决,看不出什么问题,特地还编辑了⼀下C++的源码,发现业务逻辑没有什么问题,最后
才发现原来是devtoolset-8 开发⼯具还是版本太低了,最后尝试安装到devtoolset-9版本才解决了这个问题。
我把从其他同学的博客那⾥devtoolset-9安装的过程也总结过来了,
安装解决⽅案:
centos7 yum安装的gcc版本是4.8版本的,很多⼯具依赖的是更⾼版本的gcc,⼿动升级gcc往往耗时长,⽽且不⼀定能成功,使⽤devtoolset 可以快速切换gcc版本⽅案如下:
安装 centos-release-scl
yum install centos-release-scl
安装 devtoolset
命令中的9 代表gcc版本
//安装gcc 9 的版本
yum -y install devtoolset-9-gcc*
//安装gcc 7 的版本
yum -y install devtoolset-7-gcc*
临时激活
//激活gcc 9
scl enable devtoolset-9 bash
//激活gcc 7
scl enable devtoolset-7 bash
但是我不建议使⽤临时激活还是通过配置⽂件来进⾏配置进⾏长期⽣效
长期使⽤执⾏:
echo "source /opt/rh/devtoolset-7/enable" >>/etc/profile
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
注意: scl命令启⽤只是临时的,退出shell或重启就会恢复原系统gcc版本,如果要长期使⽤的话执⾏:echo "source
mysql下载后怎么安装不了/
opt/rh/devtoolset-7/enable" >>/etc/profile 。gcc版本9 执⾏:echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile ————————————————
总结,在MySQL8.0的安装过程当中环境要求⽐较⾼,特别是gcc和g++引起的问题相当多,在安装过程准备环境的时候需要注意,等我有空了,我重新整理⼀下整个环境的安装过程贴出来分享给⼤家
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论