忍者ブログ

なんだか

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

[PR]

×

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

cloog-0.18.0をgcc-4.8でうまく使えるようにしてみる

www.CLooG.orgから落とせるcloog-0.18.0.tar.gzですが
ここのまま、ビルドしてもislがgcc-4.8のconfigureの
checking for version 0.10 of ISL
checking for version 0.11 of ISL
で自動認識されません。
理由は、configureで作られるisl/gitversion.hの中身が
#define GIT_HEAD_ID "UNKOWN"
となるからです。
cloog-0.18.0/isl/ChangeLogには
version: 0.11.1
と書いてありますから
#define GIT_HEAD_ID "isl-0.11.1"
に変更します。

$ tar xf cloog-0.18.0.tar.gz
$ sed -i 's/GIT_HEAD_ID="UNKNOWN"/GIT_HEAD_ID="isl-0.11.1"/' cloog-0.18.0/isl/configure

これで、cloogをbuild後installすれば、
gcc-4.8のconfigure時のISLのversion checkで失敗しなくなります。


拍手[0回]

PR

mingw32なrl78-elf-gccのビルド失敗の原因

newlibのビルドが失敗したのはi686-w64-mingw32-gccのversionが4.5.3だったからのようです。

念の為、binutilsから

9.i686-w64-mingw32-binutils(2.23.1)の作成

$ cd /mingw-temp/binutils
$ mkdir mingw32
$ cd mingw32
$ ../binutils-2.23.1/configure --prefix=/usr/local/4.7 --build=i686-pc-cygwin
--host=i686-pc-cygwin --target=i686-w64-mingw32
$ make -j4
$ make install

10.i686-w64-mingw32-gcc(4.7.2)の作成

$ cd /mingw-temp/gcc
$ mkdir mingw32
$ cd mingw32
$ ../gcc-4.7.2/configure --prefix=/usr/local/4.7 --build=i686-pc-cygwin --host=i686-pc-cygwin --target=i686-w64-mingw32 --with-sysroot=/usr/i686-w64-mingw32/sys-root --disable-multilib --disable-win32-registry --enable-languages=c,c++ --enable-fully-dynamic-string --enable-libgomp --enable-sjlj-exceptions --enable-version-specific-runtime-libs --with-dwarf2 --enable-decimal-float=bid --enable-lto
$ make -j4
$ make install

11.rl78-elf-gccの作成

$ cd /mingw-temp/gcc
$ rm rl78-elf -fr
$ mkdir rl78-elf
$ cd rl78-elf
$ CC=/usr/local/4.7/bin/i686-w64-mingw32-gcc CXX=/usr/local/4.7/bin/i686-w64-mingw32-g++ ../gcc-4.7.2/configure --prefix=/rl78-elf --target=rl78-elf --build=i686-w64-mingw32 --enable-languages=c,c++ --with-newlib --disable-win32-registry
$ make -j4
$ make install

12.newlibの作成

$ cd /mingw-temp/newlib
$ rm rl78-elf -fr
$ mkdir rl78-elf
$ cd rl78-elf 
$ ../newlib-2.0.0/configure --prefix=/rl78-elf --target=rl78-elf
$ make -j4
$ make install

これで、終わり

拍手[0回]

cygwinでmingw32なrl78-elf-gccを作ってみる

0.mingw32なgccを作るときの下準備

mingw64-i686-gcc-core
mingw64-i686-gcc-g++
mingw64-i686-headers
mingw64-i686-pthreds
mingw64-i686-runtime
をcygwinのsetupでインストールする。

$ mount c:/mingw-temp /mingw-temp
$ mkdir /mingw-temp

作業フォルダは/mingw-tempです。
mountを固定したい場合は/etc/fstabに記述する。

1.libiconvの作成
$ cd /mingw-temp
$ mkdir libiconv
$ cd libiconv
$ wget http://www.dnsbalance.ring.gr.jp/archives/GNU/libiconv/libiconv-1.14.tar.gz
$ tar xf libiconv-1.14.tar.gz
$ mkdir mingw32
$ cd mingw32
$ ../libiconv-1.14/configure --prefix=/usr/i686-w64-mingw32/sys-root/mingw --host=i686-w64-mingw32
$ make -j4
$ make install

2.gmpの作成

$ cd /mingw-temp 
$ mkdir gmp
$ cd gmp
$ wget ftp://ftp.gmplib.org/pub/gmp-5.1.0/gmp-5.1.0.tar.bz2
$ tar xjf gmp-5.1.0.tar.bz2
$ mkdir mingw32
$ cd mingw32
$ ../gmp-5.1.0/configure --prefix=/usr/i686-w64-mingw32/sys-root/mingw --host=i686-w64-mingw32 --enable-shared --disable-static
$ make -j4
$ make install

3.mpfrの作成

$ cd /mingw-temp 
$ mkdir mpfr
$ cd mpfr
$ wget http://www.mpfr.org/mpfr-current/mpfr-3.1.1.tar.xz
$ tar xJf mpfr-3.1.1.tar.xz
$ mkdir mingw32
$ cd mingw32
$  ../mpfr-3.1.1/configure --prefix=/usr/i686-w64-mingw32/sys-root/mingw --host=i686-w64-mingw32 --enable-shared --disable-static CC=i686-w64-mingw32-gcc
$ make -j4
$ make install

3.mpcの作成

$ cd /mingw-temp 
$ mkdir mpc
$ cd mpc
$ wget http://www.multiprecision.org/mpc/download/mpc-1.0.1.tar.gz
$ tar xf mpc-1.0.1.tar.gz
$ mkdir mingw32
$ cd mingw32
$ ../mpc-1.0.1/configure --prefix=/usr/i686-w64-mingw32/sys-root/mingw --host=i686-w64-mingw32 --enable-shared --disable-static  CC=i686-w64-mingw32-gcc
$ make -j4
$ make install

4.binutilsの作成

$ mount c:/rl78-elf /rl78-elf インストール先をmountしておく

mountを固定したい場合は/etc/fstabに記述する。

$ cd /mingw-temp 
$ mkdir binutils
$ cd binutils
$ wget http://www.dnsbalance.ring.gr.jp/archives/GNU/binutils/binutils-2.23.1.tar.bz2
$ tar xjf binutils-2.23.1.tar.bz2
$ mkdir rl78-elf
$ cd rl78-elf
$ ../binutils-2.23.1/configure --prefix=/rl78-elf --target=rl78-elf --host=i686-w64-mingw32
$ make -j4
$ make install

5.PATHの設定と必要なDLLのコピー

$ cp /usr/i686-w64-mingw32/sys-root/mingw/bin/libiconv-2.dll /rl78-elf/bin
$ cp /usr/i686-w64-mingw32/sys-root/mingw/bin/libgmp-10.dll /rl78-elf/bin
$ cp /usr/i686-w64-mingw32/sys-root/mingw/bin/libmpfr-4.dll /rl78-elf/bin
$ cp /usr/i686-w64-mingw32/sys-root/mingw/bin/libmpc-3.dll /rl78-elf/bin
$ export PATH=/rl78-elf/bin:$PATH

6.gccの作成その1

$ cd /mingw-temp 
$ mkdir gcc
$ cd gcc
$ wget http://www.dnsbalance.ring.gr.jp/archives/lang/egcs/releases/gcc-4.7.2/gcc-4.7.2.tar.bz2
$ tar xjf gcc-4.7.2.tar.bz2
$ mkdir rl78-elf
$ cd rl78-elf
$ CC=i686-w64-mingw32-gcc
CXX=i686-w64-mingw32-g++ ../gcc-4.7.2/configure --prefix=/rl78-elf --target=rl78-elf --build=i686-w64-mingw32 --enable-languages=c --disable-build-with-cxx --disable-win32-registry
$ make all-gcc -j4
$ make install-gcc

gcc-4.7.2はnewlibでビルドが失敗します。

$ wget http://www.dnsbalance.ring.gr.jp/archives/lang/egcs/snapshots/4.8-20130120/gcc-4.8-20130120.tar.bz2
$ tar xjf gcc-4.8-20130120.tar.bz2
$ mkdir rl78-elf
$ cd rl78-elf
$ CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ ../gcc-4.8-20130120/configure --prefix=/rl78-elf --target=rl78-elf --build=i686-w64-mingw32 --enable-languages=c --disable-win32-registry
$ make all-gcc -j4
$ make install-gcc

7.newlibの作成

$ cd /mingw-temp 
$ mkdir newlib
$ cd newlib
$ wget newlib-2.0.0.tar.gz
$ tar xf newlib-2.0.0.tar.gz
$ mkdir rl78-elf
$ cd rl78-elf
$ ../newlib-2.0.0/configure --prefix=/rl78-elf --target=rl78-elf
$ make -j4
$ make install

8.gccの作成その2

$ cd /mingw-temp 
$ cd gcc

symlinkはmingwのときは使えないので
$ sed -i "s/ln -s/cp -p/" gcc-4.8-20130120/libgcc/configure
$ sed -i "s/ln -s/cp -p/" gcc-4.8-20130120/libstdc++-v3/configure

$ rm rl78-elf -fr      一度、削除
$ mkdir rl78-elf
$ cd rl78-elf
$ CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ ../gcc-4.8-20130120/configure --prefix=/rl78-elf --target=rl78-elf --build=i686-w64-mingw32 --enable-languages=c,c++ --with-newlib --disable-win32-registry
$ make -j4

gcc-4.8-20130120だとlibstdc++-v3でビルドに失敗します。

symlinkはmingwのときは使えないので
$ sed -i "s/ln -s/cp -p/" gcc-4.7.2/libgcc/configure
$ sed -i "s/ln -s/cp -p/" gcc-4.7.2/libstdc++-v3/configure

$ rm rl78-elf -fr 一度、削除
$ mkdir rl78-elf
$ cd rl78-elf
$ CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ ../gcc-4.7.2/configure --prefix=/rl78-elf --target=rl78-elf --build=i686-w64-mingw32 --enable-languages=c,c++ --with-newlib --disable-win32-registry
$ make -j4
$ make install

ここまで、終わり

$ rl78-elf-gcc -v
組み込み spec を使用しています。
COLLECT_GCC=C:\rl78-elf\bin\rl78-elf-gcc.exe
COLLECT_LTO_WRAPPER=c:/rl78-elf/bin/../libexec/gcc/rl78-elf/4.7.2/lto-wrapper.exe
ターゲット: rl78-elf
configure 設定: ../gcc-4.7.2/configure --prefix=/rl78-elf --target=rl78-elf --build=i686-w64-mingw32 --enable-languages=c,c++ --with-newlib --disable-win32-registry
スレッドモデル: single
gcc バージョン 4.7.2 (GCC)

拍手[0回]

gccのlocaledirがなんとなく気になるので

gccのtar玉を展開して、configureのhelpを表示させてみると
$ ./configure --help

--localedir=DIR locale-dependent data [DATAROOTDIR/locale]

となっているのですが、Makefile.inに
localedir = $(datadir)/locale
と記述されています。

gcc/Makefile.in
intl/Makefile.in
libcpp/Makefile.in
libdecnumber/Makefile.in

上の該当箇所を
localedir = @localedir@
に書き換えます。

gccはコンパイラ本体(実行ファイル)の呼び出しは相対パスで参照しているのですが
localedir(エラーメッセージ等のファイル)は絶対パスで参照しています。

これを相対パスにしてみようかな、続く

拍手[0回]

トイレが詰まった

洋式トイレが詰まってしまった。
よくあるトイレのつまり解消のシュポポをしつこくやってたら
流れるようになったけど、詰まりが解消されたかどうかはまだわからない

拍手[0回]

カレンダー

10 2024/11 12
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

忍者アナライズ

コガネモチ

忍者カウンター

カレンダー

10 2024/11 12
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