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

相关推荐
gameboy0318 小时前
从MySQL迁移到PostgreSQL的完整指南
数据库·mysql·postgresql
RDCJM9 小时前
mysql表添加索引
数据库·mysql
楼兰胡杨10 小时前
面试题|MySQL 的 3 层主键索引最多能支撑多少数据量
mysql·面试题
V1ncent Chen11 小时前
SQL大师之路 10 连接基础
数据库·sql·mysql·数据分析
原来是猿11 小时前
MySQL【表的内外连接】
数据库·mysql
安当加密11 小时前
MySQL 防勒索终极防线:TDE 透明加密 + DBG 动态权限控制双重保护实战
数据库·mysql·adb
sevenlin11 小时前
MySQL数据库(SQL分类)
数据库·sql·mysql
czlczl2002092512 小时前
Mysql log 杂知识
数据库·mysql
吾诺12 小时前
Java进阶,时间与日期,包装类,正则表达式
java·mysql·正则表达式
未来龙皇小蓝12 小时前
【MySQL-索引调优】05:索引相关概念
数据库·mysql·性能优化