溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

編譯glibc遇到的錯誤 Error: invalid identifier for ".ifdef"怎么解決

發布時間:2021-06-22 14:22:34 來源:億速云 閱讀:437 作者:chen 欄目:大數據

本篇內容介紹了“編譯glibc遇到的錯誤 Error: invalid identifier for ".ifdef"怎么解決”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

由于CentOS6系統默認的glibc版本較低,在嘗試編譯升級時遇到了Error: invalid identifier for ".ifdef",在此記錄解決方案。

編譯安裝

官網下載:ftp://ftp.gnu.org/gnu/glibc/

下載并編譯安裝

wget http://ftp.gnu.org/gnu/glibc/glibc-2.15.tar.gz
wget http://ftp.gnu.org/gnu/glibc/glibc-ports-2.15.tar.gz
tar -zxf glibc-2.15.tar.gz
tar -zxf glibc-ports-2.15.tar.gz
mv glibc-ports-2.15 glibc-2.15/ports
mkdir glibc-build-2.15
cd glibc-build-2.15
../glibc-2.15/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make all && make install

解決錯誤

sysdeps/i386/fpu/s_frexp.S:66: Error: invalid identifier for ".ifdef"

1.修改文件pt-initfini.c

在glibc源碼目錄下找到文件 nptl/sysdeps/pthread/pt-initfini.c,約在46行左右:asm ("\n#include \"defs.h\"");

在其后增加代碼:

asm ("\n#if defined __i686 && defined __ASSEMBLER__");
asm ("\n#undef __i686");
asm ("\n#define __i686 __i686");
asm ("\n#endif");

2.修改文件sysdep.h

在glibc源碼目錄下找到文件 sysdeps/unix/sysv/linux/i386/sysdep.h ,約在30行左右:#include <tls.h>

在其后增加代碼:

#if defined __i686 && defined __ASSEMBLER__
#undef __i686
#define __i686 __i686
#endif

3.重新編譯

make all && make install

判斷當前GLIBC版本

ldd --version

如下則成功安裝 

ldd (GNU libc) 2.15
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

“編譯glibc遇到的錯誤 Error: invalid identifier for ".ifdef"怎么解決”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女