1. 程式人生 > >編譯安裝glibc

編譯安裝glibc

本文轉自百度空間:http://hi.baidu.com/756091339/item/83bf19820e5d61e8e596e0b7

=========================分割線=========================

編譯步驟:

下載glibc-2.15.tar.gz和補丁包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/local/glibc_mips \
    CC=mipsel-linux-gcc \
    --host=mipsel-linux \
    --build=i686-pc-linux-gnu \
    --enable-add-on=nptl \
    libc_cv_forced_unwind=yes \  
    libc_cv_c_cleanup=yes \
    libc_cv_mips_tls=yes \
    libc_cv_gnu99_inline=yes 
ok,沒問題

$make &&make install

大功告成

##########################################################################

下面是我編譯時的過程和遇到的問題及解決:

##########################################################################

$tar xvf glibc-2.16.0.tar.bz2

$cd glibc-2.16.0

$./configure --prefix=/usr/local/glibc   //先不加其他選項,除了安裝路徑,一切預設,網上一般配置arm的選項如下 --prefix=$HOME/usr/arm --with-headers=$HOME/usr/arm/glibc/arm-linux-glibc/include --with-libs=$HOME/usr/arm/glibc/arm-linux-glibc/lib 

報錯:

configure: error: you must configure in a separate build directory

很奇怪的問題,必須配置一個構建目錄,剛開始以為是安裝目錄為建立

$mkdir /usr/local/glibc

問題仍然存在,百度之

$mkdir ../glibc-build && cd ../glibc-build

$../glibc-2.16.0/configure --prefix=/usr/local/glibc

出現新的問題:

configure: WARNING:

*** These auxiliary programs are missing or incompatible versions: msgfmt

*** some features will be disabled.

*** Check the INSTALL file for required versions.

checking LD_LIBRARY_PATH variable... contains current directory

configure: error:

*** LD_LIBRARY_PATH shouldn't contain the current directory when

*** building glibc. Please change the environment variable

*** and run configure again.

第一個警告不用管它,第二個LD_LIBRARY_PATY也會有錯?我的這個路徑用了多少天了。仔細看提示,不應包含當前路徑。開啟~/.bash_profile $cat ~/.bash_profile export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib export LD_LIBRARY_PATH
這也沒當前路徑啊。還是百度吧。 一個兄弟的解釋是這樣“LD_LIBRARY_PATH不能以終結符作為開始和最後一個字元,不能有2個終結符連在一起,我的LD_LIBRARY_PATH為 :/usr/local/firefox:/usr/local/firefox,只要在前面加上一個路徑,不讓:出現在第一個字元就可以了 ” 原來如此,第一個字元不能是":",修改~/.bash_profile export LD_LIBRARY_PATH=/usr/local/lib export LD_LIBRARY_PATH 
$../glibc-2.16.0/configure --prefix=/usr/local/glibc ls一下,發現,當前目錄生成了Makefile等一堆東西 $make && make install 沒問題 下一步開始交叉編譯 $mkdir ../glibc-build-mips && cd ../glibc-build-mips $ ../glibc-2.16.0/configure --prefix=/usr/local/glibc_mips CC=mipsel-linux-gcc --host=mips 出現新的問題: configure: running configure fragment for add-on libidn configure: running configure fragment for add-on nptl *** The GNU C library is currently not available for this platform. *** So far nobody cared to port it and if there is no volunteer it *** might never happen.  So, if you have interest to see glibc on *** this platform visit ***     http://www.gnu.org/software/libc/porting.html *** and join the group of porters 看起來像是需要path,下載glibc-ports-2.16.tar.gz,放在原始碼包目錄,解壓

$ ../glibc-2.16.0/configure \
    --prefix=/usr/local/glibc_mips \
    CC=mipsel-linux-gcc \
    CXX=mipsel-linux-g++ \
    --host=mips \
    --enable-add-ons=/home/hb/code/glibc/glibc-ports-2.16.0/sysdeps/mips

仍然報錯:

configure: error: fragment must set $libc_add_on_canonical

改為:

$ ../glibc-2.16.0/configure \
    --prefix=/usr/local/glibc_mips \
    CC=mipsel-linux-gcc \
    CXX=mipsel-linux-g++ \
    --host=mips \
    --enable-add-ons

報錯:

configure: error: The mipsel is not supported.

這樣不行,谷歌半天,總算知道補丁怎麼用的了。把補丁目錄拷到glibc目錄下,改名為ports

$mv glibc-ports-2.16.0/ glibc-2.16.0/ports

$../glibc-2.16.0/configure \
    --prefix=/usr/local/glibc_mips \
    CC=mipsel-linux-gcc \
    CXX=mipsel-linux-g++ \
    --host=mipsel-linux \
    --build=i686-pc-linux-gnu \
    --enable-add-on

繼續報錯:

configure: error: 
*** These critical programs are missing or too old: ld as
*** Check the INSTALL file for required versions.
這個問題可折騰死我了。弄了好半天,就是不行,最後google發現,原來是ld和as版本不對,不是太高就是太低。

configure中找到$AS --version

發現版本是這麼匹配的2.1*.*

$mipsel-linux-ld

GNU ld (GNU Binutils) 2.18.50.20080908
原來是這樣,在configure版本號那一行修改,最後的括號前面加入

|2.18.50.×

as那一行也同樣修改

然後

$make

開始編譯,看起來不錯

好半天后,編譯也報錯了

In file included from ../include/uchar.h:1,
                 from mbrtoc16.c:23:
../wcsmbs/uchar.h:47:5: error: #error "<uchar.h> requires ISO C11 mode"
In file included from ../include/uchar.h:1,
                 from mbrtoc16.c:23:
../wcsmbs/uchar.h:52: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'char16_t'
../wcsmbs/uchar.h:53: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'char32_t'
../wcsmbs/uchar.h:61: error: expected ')' before '*' token
../wcsmbs/uchar.h:66: error: expected declaration specifiers or '...' before 'char16_t'
../wcsmbs/uchar.h:73: error: expected ')' before '*' token
../wcsmbs/uchar.h:78: error: expected declaration specifiers or '...' before 'char32_t'
mbrtoc16.c:37: error: expected ')' before '*' token
make[2]: *** [/home/hb/code/glibc/glibc-build-mips/wcsmbs/mbrtoc16.o] 錯誤 1
make[2]:正在離開目錄 `/home/hb/code/glibc/glibc-2.16.0/wcsmbs'
make[1]: *** [wcsmbs/subdir_lib] 錯誤 2
make[1]:正在離開目錄 `/home/hb/code/glibc/glibc-2.16.0'
make: *** [all] 錯誤 2
看看這個標頭檔案咋回事

$ vim ../glibc-2.16.0/wcsmbs/uchar.h

#if defined __GNUC__ && !defined __USE_ISOCXX11
/* Define the 16-bit and 32-bit character types.  Use the information
   provided by the compiler.  */
# if !defined __CHAR16_TYPE__ || !defined __CHAR32_TYPE__
#  if defined __STDC_VERSION__ && __STDC_VERSION__ < 201000L
#   error "<uchar.h> requires ISO C11 mode"
#  else
#   error "definitions of __CHAR16_TYPE__ and/or __CHAR32_TYPE__ missing"
#  endif

# endif

明白了,原來是需要c11支援,mipsel-linux-gcc -v一下,我的支援c99.原來如此。暫時沒招了,我還做不到修改c11的支援,只剩兩個辦法,不用這個glibc版本或者重新編譯一個支援c11的交叉編譯器。編譯器需要做的比較多,暫時先換個低點的版本吧。

下載galibc-2.15版本

重複上面步驟,解壓tar包

解壓ports包

$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/local/glibc_mips \
    CC=mipsel-linux-gcc \
    --host=mipsel-linux \
    --build=i686-pc-linux-gnu \
    --enable-add-on=nptl \
    libc_cv_forced_unwind=yes \  
    libc_cv_c_cleanup=yes \
    libc_cv_mips_tls=yes \
    libc_cv_gnu99_inline=yes 
ok,沒問題

$make &&make install

庫已經編好了,但是不能直接使用,必須再用新的庫重編一遍編譯器才行。

相關推薦

編譯安裝glibc

本文轉自百度空間:http://hi.baidu.com/756091339/item/83bf19820e5d61e8e596e0b7 =========================分割線========================= 編譯步驟: 下

linux下編譯安裝glibc

IE下實現placeholder效果,支援文字框和密碼框 Apache模組 合併多個js/css 提高網頁載入速度 JavaScript跨域外掛 實現iframe的雙向跨域 改進erlang版本的protobuf,有一定效率提升 Lua非同步HTTPS請求庫,支援同時併發請

glibc-2.22的編譯安裝

本文轉自百度空間:http://hi.baidu.com/756091339/item/83bf19820e5d61e8e596e0b7 =========================分割線========================= 編譯步驟: 下

ubuntu14.04編譯安裝mysql5.6.28

add memory server 目錄 是否 efault mysql-bin cnblogs adl 一、安裝必備工具sudo apt-get install make bison g++ build-essential libncurses5-dev cmake nc

git安裝 編譯安裝

git一、安裝依賴 yum update -y #可以不做 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker wget https://github.c

LAMP 編譯安裝

lamp#軟件下載#開源博客Wordpress 下載地址:https://cn.wordpress.org/wordpress-4.7.4-zh_CN.tar.gz#PHP 7 下載地址:http://cn2.php.net/distributions/php-7.1.4.tar.gz#apache

LNMP之編譯安裝PHP出現的問題

grep php 接下來 可能 don 星期 gre 目前 pat 2010年以前,互聯網公司最常用的Web服務組合就是LAMP(即Linux、Apache、MySQL、PHP),近幾年隨著Nginx Web服務的逐漸流行,又出現了新的Web服務環境組合--LNMP

CentOS 5.9裸機編譯安裝搭建LAMP

現在 local 搭建lamp redhat compile ins upd amp package Linux系統:CentOS 5.9,查看CentOS版本,命令如下: [[email protected]/* */ /]# cat /etc/

在CentOS 7上源碼編譯安裝MySQL 5.7

mysql source cmake 1.系統環境[[email protected]/* */ ~]# uname -r3.10.0-514.el7.x86_64 [[email protected]/* */ ~]# cat /etc/redhat-release

apache編譯安裝參數說明

top gre modules apach dbm 哪些 lib usr -h apache編譯安裝參數說明 ./configure //配置源代碼樹--prefix=/usr/local/apache2 //體系無關文件的頂級安裝目錄prefix ,也就apache的安裝

Centos6.5 編譯安裝Mysql 5.5.3.7

oca eight file ont libxml kconfig 最大值 fig toc 1、準備依賴包 yum install gcc* c++ * bison autoconfautomakezlib* libxml* ncurses-devellibmcrypt*

搭建Apache HTTP Server(編譯安裝

bin con cnn 源碼 err 可能 方法 創建 部分 mkdir /apache #創建一個Apache目錄,位置隨你們習慣wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.25.tar.bz2 #下載a

linux編譯安裝mssql客戶端和配置php連接mssql

linux 客戶端 凡是連接數據庫,必須安裝客戶端,我一般寫博客都不寫原理,但是後來發現回頭看自己寫的自己都看不懂,所以這章博客會多一點原理性的東西。數據庫的連接一般都是在客戶端上完成的,MySQL也不例外,安裝mysql時一般都會這麽安裝:#yum install mysql mysql-serve

編譯安裝Nginx

linux nginx1.查看系統環境:[[email protected]/* */ html]#cat /etc/redhat-releaseCentOS Linux release 7.2.1511 (Core) [[email protected]/* */ html]# u

Centos下Sphinx的下載與編譯安裝

onf total osi training art exe .gz clas com 官方下載地址 http://sphinxsearch.com/downloads/release/ 百度雲下載地址 https://pan.baidu.com/s/1gfmPbd5

Centos下Sphinx中文分詞編譯安裝測試---CoreSeek

orm 創建索引 auxiliary aclocal memcache acl inux mage arch 要支持中文分詞,還需要下載Coreseek,可以去官方搜索下載,這裏我用的4.1 百度雲下載地址: https://pan.baidu.com/s/1sl

yum && 編譯 安裝mysql 5.7 多實例

name mon symbol server-id service lin extra safe min yum安裝 [[email protected]/* */ ~]# wget http://repo.mysql.com/mysql57-community

Linux-rhel6.4 編譯安裝PHP,Nginx與php連接

linux php rhel 編譯安裝php 連接nginx 確定依賴包安裝gcc gcc-c++ libxml2 libxml2-devel bzip2 bzip2-devel libmcrypt libmcrypt-devel openssl openssl-devel libcurl

Linux-bcmath編譯安裝

bcmath 編譯安裝 linux 進入php源碼目錄,找到bcmath,編譯安裝[[email protected]/* */ ~]# cd php-5.5.38/ext/bcmath/ [[email protected]/* */ bcmath]# /usr/loca

Ubuntu 編譯安裝搭配LNMP 環境

sage init ubun stat support ... col php安裝 啟動 這裏用Nginx1.2.0+mysql5.6.33+php5.6.2搭配安裝環境 ---------------------------------------------Nginx