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)查看是否配置了 CXXFLAGS 和 CFLAGS

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 内置的编译选项。

相关推荐
ShineWinsu2 小时前
对于Redis:事务的解析
数据库·redis·mysql·缓存·面试·事务·acid
ao-weilai3 小时前
MySQL数据库:内置函数
android·数据库·mysql
2603_969579284 小时前
中小团队数据库选型:MySQL vs PostgreSQL,业务场景怎么选
数据库·mysql·postgresql
于指尖飞舞5 小时前
mysql和redis面试题总结
数据库·redis·mysql
ao-weilai5 小时前
MySQL数据库:复合查询
android·数据库·mysql
FYKJ_20105 小时前
SpringSecurity教室智能预约系统73972-计算机课程设计、毕业设计
java·vue.js·spring boot·python·mysql·spring·django
要开心吖ZSH6 小时前
系统并发与 QPS 上限:从 200 个线程到每秒几万请求
redis·mysql·tomcat·并发·连接池·qps
FYKJ_20106 小时前
springboot游泳馆管理系统79222-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·mysql·django·课程设计
闲云自留地8 小时前
主库倒下 30 秒自动扶正:MySQL MHA 高可用实战
数据库·mysql
hasty18 小时前
policy.xml 在,不代表策略生效:ImageMagick 补丁给安全配置验收的提醒
xml·mysql·安全