ProxySQL编译报错

问题描述

同一台机器以往都能正常编译ProxySQL,有一天编译突然报错:

1)报错场景一

bash 复制代码
${LDCMD:-cc} -pthread -m64 -Wa,--noexecstack -I/usr/include/openblas  -L.   \
        -o apps/openssl \
        apps/lib/openssl-bin-cmp_mock_srv.o \
        apps/openssl-bin-asn1parse.o apps/openssl-bin-ca.o \
        apps/openssl-bin-ciphers.o apps/openssl-bin-cmp.o \
        apps/openssl-bin-cms.o apps/openssl-bin-crl.o \
        apps/openssl-bin-crl2pkcs7.o apps/openssl-bin-dgst.o \
        apps/openssl-bin-dhparam.o apps/openssl-bin-dsa.o \
        apps/openssl-bin-dsaparam.o apps/openssl-bin-ec.o \
        apps/openssl-bin-ecparam.o apps/openssl-bin-enc.o \
        apps/openssl-bin-engine.o apps/openssl-bin-errstr.o \
        apps/openssl-bin-fipsinstall.o apps/openssl-bin-gendsa.o \
        apps/openssl-bin-genpkey.o apps/openssl-bin-genrsa.o \
        apps/openssl-bin-info.o apps/openssl-bin-kdf.o \
        apps/openssl-bin-list.o apps/openssl-bin-mac.o \
        apps/openssl-bin-nseq.o apps/openssl-bin-ocsp.o \
        apps/openssl-bin-openssl.o apps/openssl-bin-passwd.o \
        apps/openssl-bin-pkcs12.o apps/openssl-bin-pkcs7.o \
        apps/openssl-bin-pkcs8.o apps/openssl-bin-pkey.o \
        apps/openssl-bin-pkeyparam.o apps/openssl-bin-pkeyutl.o \
        apps/openssl-bin-prime.o apps/openssl-bin-progs.o \
        apps/openssl-bin-rand.o apps/openssl-bin-rehash.o \
        apps/openssl-bin-req.o apps/openssl-bin-rsa.o \
        apps/openssl-bin-rsautl.o apps/openssl-bin-s_client.o \
        apps/openssl-bin-s_server.o apps/openssl-bin-s_time.o \
        apps/openssl-bin-sess_id.o apps/openssl-bin-smime.o \
        apps/openssl-bin-speed.o apps/openssl-bin-spkac.o \
        apps/openssl-bin-srp.o apps/openssl-bin-storeutl.o \
        apps/openssl-bin-ts.o apps/openssl-bin-verify.o \
        apps/openssl-bin-version.o apps/openssl-bin-x509.o \
        apps/libapps.a -lssl -lcrypto -ldl -pthread
make[3]: Leaving directory '/proxysql/deps/libssl/openssl-3.2.1'
make[2]: Leaving directory '/proxysql/deps/libssl/openssl-3.2.1'
cd libssl/openssl && ln -fsT . lib # curl wants this path
make[1]: Leaving directory '/proxysql/deps'
make: *** [Makefile:261: build_deps_default] Error 2

2)报错场景二

bash 复制代码
/opt/rh/devtoolset-11/root/usr/libexec/gcc/x86_64-redhat-linux/11/ld: ../../../..//re2/re2/obj/libre2.a(perl_groups.o): warning: relocation in read-only section `.rodata'
collect2: error: ld returned 1 exit status
make[4]: *** [Makefile:487: libhttpserver.la] Error 1
make[4]: Leaving directory '/proxysql/deps/libhttpserver/libhttpserver-0.18.2/build/src'
make[3]: *** [Makefile:599: all-recursive] Error 1
make[3]: Leaving directory '/proxysql/deps/libhttpserver/libhttpserver-0.18.2/build'
make[2]: *** [Makefile:485: all] Error 2
make[2]: Leaving directory '/proxysql/deps/libhttpserver/libhttpserver-0.18.2/build'
make[1]: *** [Makefile:97: libhttpserver/libhttpserver/build/src/.libs/libhttpserver.a] Error 2

3)报错场景三

bash 复制代码
make[4]: Leaving directory '/proxysql/deps/curl/curl-8.4.0/src'
make[3]: Leaving directory '/proxysql/deps/curl/curl-8.4.0/src'
make[3]: Entering directory '/proxysql/deps/curl/curl-8.4.0'
make[3]: Nothing to be done for 'all-am'.
make[3]: Leaving directory '/proxysql/deps/curl/curl-8.4.0'
make[2]: Leaving directory '/proxysql/deps/curl/curl-8.4.0'
make[1]: Leaving directory '/proxysql/deps'
make: *** [Makefile:261: build_deps_default] Error 2

刚开始有很多猜测:

1)同时存在多个编译器版本,如GCC 4.8、GCC 7、GCC 11等导致编译混乱;

2)安装了不该存在的依赖等等;

但经过证实都非上述原因。

解决方案

1)查看是否配置了 CXXFLAGSCFLAGS

bash 复制代码
echo $CXXFLAGS
echo $CFLAGS

若输出如下:

则需删除对应配置:

bash 复制代码
# 删除配置
unset CXXFLAGS
unset CFLAGS

# 验证是否删除
echo $CXXFLAGS
echo $CFLAGS

2)重新编译

bash 复制代码
make cleanall
make -j`nproc`

编译成功:

3)原因分析

ProxySQL 的 deps/Makefile 可能对 re2 有特殊的编译逻辑。当你设置全局CXXFLAGS="-fPIC -02" 时,会覆盖或干扰 ProxySQL 内置的编译选项。

相关推荐
程序员阿鹏24 分钟前
如何实现MySQL分库分表?
数据结构·数据库·sql·mysql·缓存
风哥2号41 分钟前
数据库教程FGMT33‑MySQL主从复制项目实施与维护06(MySQL8.4/9.7 MGR组复制)
数据库·mysql
杨云龙UP2 小时前
MySQL Host is blocked because of many connection errors 导致 JDBC 连接失败排查与解决
linux·运维·网络·数据库·sql·mysql·登录失败
程序员梅雨4 小时前
MySQL底层探索(一):什么是脏页?什么是冷热分离?
mysql·面试
bksczm6 小时前
MySQL基础篇之表的增删查改(CRUD)细则
sql·mysql
莫陌尛.15 小时前
Docker MySQL 删表卡死、执行超时(MDL锁阻塞)问题复盘与根治方案
mysql·docker·容器
毕业设计70318 小时前
(免费领源码) 基于微信小程序的预制菜商城的设计与实现25172-java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
vue.js·python·mysql·微信小程序·pycharm·微信开发者工具·推荐算法
泡泡鱼(敲代码中)20 小时前
MySQL基础学习笔记:从数据模型到DDL全掌握
开发语言·数据库·笔记·学习·mysql
冰暮流星21 小时前
mysql之表子查询
数据库·mysql
这个DBA有点耶1 天前
MySQL大表DDL锁表锁到崩溃?Online DDL的3个关键参数和实战避坑
数据库·mysql·架构