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

相关推荐
wzy06233 小时前
ProxySQL(四)—— 基准测试
基准测试·proxysql
程序猿online4 小时前
本地mysql密码重置
数据库·mysql
Bert.Cai4 小时前
MySQL CEIL()函数详解
数据库·mysql
Bert.Cai5 小时前
MySQL FLOOR()函数详解
数据库·mysql
小碗羊肉5 小时前
【MySQL | 第七篇】索引
数据库·mysql
hanyi_qwe5 小时前
Mysql 与 Nginx 双机高可用
数据库·mysql·nginx
徐子童6 小时前
复合索引会失效的场景
数据库·mysql·面试题·索引失效
zxrhhm6 小时前
MySQL 索引回表(Back to Table)详解
数据库·mysql
oldking呐呐7 小时前
MySQL从建库到删库跑路 -- 3.库的操作
后端·mysql
Kakaxiii8 小时前
【2026最新】Neo4j 数据库如何像 MySQL 一样导出和快速恢复完整数据
数据库·mysql·neo4j