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

相关推荐
爱可生开源社区44 分钟前
MySQL 性能优化:真正重要的变量
数据库·mysql
小马爱打代码1 小时前
MySQL性能优化核心:InnoDB Buffer Pool 详解
数据库·mysql·性能优化
风流 少年2 小时前
mysql mcp
数据库·mysql·adb
西门吹雪分身4 小时前
mysql之数据离线迁移
数据库·mysql
轩情吖6 小时前
MySQL初识
android·数据库·sql·mysql·adb·存储引擎
轩情吖7 小时前
MySQL库的操作
android·数据库·mysql·oracle·字符集·数据库操作·编码集
Flobby5297 小时前
深入理解 MySQL 锁:从全局锁到死锁检测
数据库·后端·mysql
troublea7 小时前
ThinkPHP3.x高效学习指南
mysql·nginx·缓存
troublea8 小时前
ThinkPHP6快速入门指南
数据库·mysql·缓存
加号38 小时前
windows系统下mysql主从数据库部署
数据库·windows·mysql