64位x86_64系统编译32位x86版gcc-10.2.0出现TItype未定义报错
32位GCC编译TItype未定义问题解决方案
本次报错的核心原因是configure参数冲突,你在指定host为32位i686架构的同时开启了multilib多架构支持,gcc配置逻辑混淆后将仅64位架构支持的128位整数类型相关代码加入了32位编译目标,32位x86原生无TItype(128位有符号整数)、UTItype(128位无符号整数)定义,因此触发编译失败。
具体解决步骤
- 调整configure参数,删除冗余冲突配置
删掉--enable-multilib和--with-multilib-list=m32,m64两个参数,你当前是编译独立的32位gcc,不需要多架构支持配置,这两个参数是编译同时兼容32/64位的宿主gcc时才需要开启的。同时新增--disable-libquadmath参数,禁用依赖128位整数的128位浮点数运算组件,从根源上避免相关代码编译。 - 修正配置参数笔误
你原有配置里的CXXLAGS是拼写错误,正确应为CXXFLAGS,否则C代码的编译参数不会生效,可能引发后续C组件编译异常。 - 清理构建缓存
完全删除当前的gcc构建目录,重新创建空目录后再执行新的configure命令,避免旧的配置缓存残留干扰新的编译流程。
修改后的完整配置命令
CC="gcc -m32" CXX="g++ -m32" CFLAGS="-m32" CXXFLAGS="-m32" LDFLAGS="-m32" AR="ar" AS="as" \ ../configure --prefix=/usr \ --enable-languages=c,c++ \ --disable-bootstrap \ --libdir=/usr/lib32 \ --build=x86_64-lfs-linux-gnu \ --host=i686-pc-linux-gnu \ --with-system-zlib \ --disable-libquadmath
内容的提问来源于stack exchange,提问作者Nuclear
相关产品推荐
相关产品推荐

