忍者ブログ

なんだか

知らないほうが幸せかもしれない

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

f18のx86_64でx32abiの環境を構築する その1

x32abiの参考url http://sourceware.org/glibc/wiki/x32 https://sites.google.com/site/x32abi/
x32がコンパイルできるgcc-4.8のビルド手順

必要パッケージのinstall
# yum groupinstall "Development Tools"
# yum install glibc-{static,devel}.{x86_64,i686}
# yum install libgcc.i686 libstdc++-devel.{x86_64,i686}
# yum install zlib-devel.{x86_64,i686}
# yum install dejagnu sharutils texinfo-tex "/usr/share/java/eclipse-ecj.jar" gcc-java libgcj gcc-gnat libgnat graphviz dblatex texlive-collection-latex docbook5-style-xsl
# yum install {elfutils{,-libelf},systemtap-sdt}-devel.{x86_64,i686}
# yum install gtk2-devel glib2-devel libart_lgpl-devel alsa-lib-devel libXtst-devel libXt-devel
# yum install gtk2-devel.i686 glib2-devel.i686 libart_lgpl-devel.i686 alsa-lib-devel.i686 libXtst-devel.i686 libXt-devel.i686
# yum install atk-devel.i686 cairo-devel.i686 fontconfig-devel.i686 freetype-devel.i686 gdk-pixbuf2-devel.i686 harfbuzz-devel.i686 libICE-devel.i686 libSM-devel.i686 libX11-devel.i686 libXau-devel.i686 libXcomposite-devel.i686 libXcursor-devel.i686 libXdamage-devel.i686 libXext-devel.i686

rawhideからgmp,mpfr,libmpc,gccのパッケージのsourceのrpmを持ってくる
gmp,mpfrでx86_64及びi686のパッケージを作成

$ cd rpmbuild/SPECS
$ 32rpmbuild -bb gmp.spec
$ rpmbbuild -bb gmp.spec
$ su
# cd ../RPMS
# rpm -Uvh x86_64/gmp-{,devel-}5.1.1-2.fc18.x86_64.rpm i686/gmp-{,devel-}5.1.1-2.fc18.i686.rpm
# exit
$ 32rpmbuild -bb mpfr.spec
$ rpmbuild -bb mpfr.spec
$ su
# cd ../RPMS
# rpm -Uvh x86_64/mpfr-{,devel-}3.1.1-2.fc18.x86_64.rpm i686/mpfr-{,devel-}3.1.1-2.fc18.i686.rpm
# exit

libmpcは、f18のlibmpcとバッティングしているのでlibmpc48として、x86_64及びi686のパッケージを作成
$ 32rpmbuild -bb libmpc.spec
$ rpmbuild -bb libmpc.spec
$ su
# cd ../RPMS
# rpm -ivh x86_64/libmpc48-{,devel-}1.0.1-1.fc18.x86_64.rpm i686/libmpc48-{,devel-}1.0.1-1.fc18.i686.rpm
# exit

cloog-islはgccビルド時に作られるが今回はcloog48として別にx86_64及びi686を作成

$ 32rpmbuild -bb cloog48.spec
$ rpmbuild -bb cloog48.spec
$ su
# cd ../RPMS
# rpm -ivh x86_64/cloog48-{,devel-}0.18.0-0.fc18.x86_64.rpm i686/cloog48-{,devel-}0.18.0-0.fc18.i686.rpm
# exit

gcc.specのcloogの作成部分を無効にするように変更
libjavaのbuildで失敗するので,%{ix86}の時はjavaは無効にするように、gcc.specを変更
$ 32rpmbuild -bb gcc.spec
$ rpmbuild -bb gcc.spec

libtoolがgccのversionに依存しているので、rawhideのlibtoolのパッケージで作成
$ rpmbuild -bb libtool.spec
$ su
# cd ../RPMS
# rpm -Uvh x86_64/cpp-4.8.0-0.16.fc18.x86_64.rpm x86_64/gcc-4.8.0-0.16.fc18.x86_64.rpm x86_64/gcc-{c++,gnat,java,gfortran}-4.8.0-0.16.fc18.x86_64.rpm x86_64/libgcc-4.8.0-0.16.fc18.x86_64.rpm x86_64/libstdc++-{,devel-}4.8.0-0.16.fc18.x86_64.rpm x86_64/libgomp-4.8.0-0.16.fc18.x86_64.rpm x86_64/libquadmath-{,devel-}4.8.0-0.16.fc18.x86_64.rpm x86_64/libgfortran-4.8.0-0.16.fc18.x86_64.rpm x86_64/libgnat-{,devel-}4.8.0-0.16.fc18.x86_64.rpm x86_64/libgcj-{,devel-}4.8.0-0.16.fc18.x86_64.rpm x86_64/libtool-2.4.2-12.fc18.x86_64.rpm x86_64/libtool-ltdl-{,devel-}2.4.2-12.fc18.x86_64.rpm i686/libgcc-4.8.0-0.16.fc18.i686.rpm i686/libstdc++-{,devel-}4.8.0-0.16.fc18.i686.rpm i686/libquadmath-{,devel-}4.8.0-0.16.fc18.i686.rpm i686/libgfortran-4.8.0-0.16.fc18.i686.rpm
# exit

gcc-4.8のチェックも兼ねて、gmp,mpfr,libmpc,cloogの再作成
$ 32rpmbuild -bb gmp.spec
$ rpmbbuild -bb gmp.spec
$ 32rpmbuild -bb mpfr.spec
$ rpmbuild -bb mpfr.spec
$ 32rpmbuild -bb libmpc.spec
$ rpmbuild -bb libmpc.spec
$ 32rpmbuild -bb cloog48.spec
$ rpmbuild -bb cloog48.spec
$ su
# cd ../RPMS
# rpm -Uvh x86_64/gmp-{,devel-}5.1.1-2.fc18.x86_64.rpm i686/gmp-{,devel-}5.1.1-2.fc18.i686.rpm --force
# rpm -Uvh x86_64/mpfr-{,devel-}3.1.1-2.fc18.x86_64.rpm i686/mpfr-{,devel-}3.1.1-2.fc18.i686.rpm --force
# rpm -Uvh x86_64/libmpc48-{,devel-}1.0.1-1.fc18.x86_64.rpm i686/libmpc48-{,devel-}1.0.1-1.fc18.i686.rpm --force
# rpm -Uvh x86_64/cloog48-{,devel-}0.18.0-0.fc18.x86_64.rpm i686/cloog48-{,devel-}0.18.0-0.fc18.i686.rpm --force
# exit

--disable-bootstap ---with-multilib-list=m64,m32,mx32
の状態でgccを再ビルド
$ su
# cd /usr/include/gnu
# cp stubs-64.h stubs-x32.h
# exit
$ rpmbuild -bb gcc.spec
libgccのビルドで一度こけます。
$ su
# cd ../BUILD/gcc-4.8.0-20130307/obj-x86_64-redhat-linux/
# make install-gcc
# mkdir -p /usr/lib/gcc/x86_64-redhat-linux/4.8.0/x32/
# cd x86_64-redhat-linux/x32/libgcc
# cp crt*.o /usr/lib/gcc/x86_64-redhat-linux/4.8.0/x32
# cp libgcc*.a  /usr/lib/gcc/x86_64-redhat-linux/4.8.0/x32
# exit

kernelを再ビルドして、x32abiを使えるようにします。
$ vi ../SOURCES/config-x86_64-generic
で、
CONFIG_X86_X32=y
にします。
$ rpmbuild -bb kernel.spec --with baseonly
$ su
# cd ../RPMS/x86_64
# rpm -ivh kernel-{,{devel,modules-extra}-}3.8.2-206.fc18.x86_64.rpm
# rpm -Uvh kernel-headers-3.8.2-206.fc18.x86_64.rpm
# reboot

これで、x32なglibcを作る準備ができました。

拍手[0回]

PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

フリーエリア

最新CM

最新記事

(07/27)
(03/27)
(03/26)
(03/23)
(03/22)
(03/19)
(03/18)
(03/18)
(03/15)
(03/14)
(03/13)
(03/12)
(03/11)
(03/11)
(03/08)
(03/08)
(03/06)
(03/05)
(03/02)
(03/01)
(02/28)
(02/27)
(02/24)
(02/23)
(02/22)

プロフィール

HN:
kenrou
性別:
非公開

バーコード

ブログ内検索

最古記事

(12/15)
(12/16)
(12/17)
(12/18)
(12/19)
(12/20)
(12/21)
(12/22)
(12/23)
(12/24)
(12/25)
(12/26)
(12/27)
(12/28)
(12/29)
(12/30)
(12/31)
(01/01)
(01/02)
(01/21)
(01/22)
(01/23)
(01/24)
(01/24)
(01/28)

P R

忍者アナライズ

コガネモチ

忍者カウンター

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30