GLIBC 编译错误:函数的隐式声明

问题描述 投票:0回答:1

我正在尝试从源代码编译 GLIBC,但是在此过程中我收到以下错误:

../sysdeps/ieee754/flt-32/e_gammaf_r.c: In function ‘__ieee754_gammaf_r’:
../sysdeps/ieee754/flt-32/e_gammaf_r.c:127:32: error: implicit declaration of function ‘__builtin_roundeven’; did you mean ‘__builtin_round’? [-Werror=implicit-function-declaration]
   double m = z - 0x1.7p+1, i = __builtin_roundeven(m), step = __builtin_copysign(1.0,i);
                                ^~~~~~~~~~~~~~~~~~~
                                __builtin_round
cc1: all warnings being treated as errors

我尝试使用以下内容进行编译:

git clone https://sourceware.org/git/glibc.git glibc-devel
cd glibc-devel
mkdir build
cd build
../configure --prefix=/home/a0504063/bin/python/glibc --host=x86_64-linux-gnu --build=x86_64-linux-gnu CC="gcc -m64" CXX="g++ -m64" CFLAGS="-O2 -Wno-error" CXXFLAGS="-O2 -Wno-error"
make

这会产生上述错误。正如配置命令中所示,我使用

-Wno-error
来尝试抑制默认的“所有警告都被视为错误”行为。但是,此选项被添加到默认选项列表中,导致它被忽略。

我目前正在使用:

  • git 提交哈希:
    18596c5415
  • gcc/g++版本:8.5.0
  • 操作系统:RedHat 8(这是公司服务器当前运行的操作系统,我无法更改)
c++ compiler-errors open-source gnu glibc
1个回答
0
投票

gcc/g++版本:8.5.0

您的 GCC 太旧了。

来自补丁评论:

__builtin_roundeven
版本 10 之前的 gcc 不支持。

您的选择是:

  • 使用较旧的 GLIBC 源
  • 使用较新的 GCC
  • 应用上面的补丁
  • 等待补丁提交,然后构建最新的 GLIBC 源代码
© www.soinside.com 2019 - 2024. All rights reserved.