忍者ブログ

なんだか

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

[PR]

×

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

msysでmingw32なgcc-4.8をbootstrapで作ってみるテスト(メッセージの文字化け対策)

メッセージの文字化けが理由がわかりました。
vfprintfのメッセージを出力しているのですが、libibertyに下請け処理があり
それ経由で1byte毎に出力すると最近のwindowsは、漢字等が文字化けするようです。

いまどきのwindowsは、ダサすぎのような
gccがvfprintfをビルドイン関数に置き換えるからのようでした。

メッセージをリダイレクトするとちゃんと読めるので理由がいまひとつなぞです。

差分はこんな感じです。

--- gcc/diagnostic.c.mingw 2013-02-01 22:48:16 +0900
+++ gcc/diagnostic.c 2013-02-01 22:49:51 +0900
@@ -1104,9 +1104,17 @@ fnotice (FILE *file, const char *cmsgid,
 {
   va_list ap;
 
+#if 1
+  char buf[4096];
+  va_start (ap, cmsgid);
+  vsnprintf(buf,sizeof(buf), _(cmsgid), ap);
+  fputs (buf,file);
+  va_end (ap);
+#else
   va_start (ap, cmsgid);
   vfprintf (file, _(cmsgid), ap);
   va_end (ap);
+#endif
 }
 
 /* Inform the user that an error occurred while trying to report some



$ /msys-temp/gcc48/bin/gcc -v
組み込み spec を使用しています。
COLLECT_GCC=C:\msys-temp\gcc48\bin\gcc.exe
COLLECT_LTO_WRAPPER=c:/msys-temp/gcc48/bin/../libexec/gcc/mingw32/4.8.0/lto-wrapper.exe
ターゲット: mingw32
configure 設定: ../gcc-4.8-20130127/configure --enable-languages=c,c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgomp --disable-win32-registry --enable-version-specific-runtime-libs --build=mingw32 --prefix=/msys-temp/gcc48
スレッドモデル: win32
gcc バージョン 4.8.0 20130127 (experimental) (GCC)

拍手[0回]

PR

msysでmingw32なgcc-4.8をbootstrapで作ってみるテスト

gcc-4.8の正式リリース前にmsys上でmingw32なgccをbootstrapモードで作ってみました。
gmp->mpfr->mpc->cloog->gcc-4.8の順にやりました。

事前に/etc/fstabに
$ notepad /etc/fstab
C:\msys-temp /msys-temp
を追加して
$ mkdir /msys-temp
$ mingw-get install msys-bison-bin
$ mingw-get install msys-flex-bin
$ mingw-get install msys-wget-bin

1.gmp-5.1.0の作成

$ cd /msys-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 47
$ cd 47
$ ../gmp-5.1.0/configure --prefix=/mingw --enable-shared --disable-static
$ make
$ make install

2.mpfr-3.1.1の作成

$ cd /msys-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 47
$ cd 47
$ ../mpfr-3.1.1/configure --prefix=/mingw --enable-shared --disable-static
$ make
$ make install

3.mpc-1.0.1の作成

$ cd /msys-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 47
$ cd 47
$ ../mpc-1.0.1/configure --prefix=/mingw --enable-shared --disable-static
$ make
$ make install

4.cloog-0.18.0の作成

$ cd /msys-temp 
$ mkdir cloog
$ cd cloog
$ wget http://www.bastoul.net/cloog/pages/download/count.php3?url=./cloog-0.18.0.tar.gz
$ mv count.php3?url=.%2Fcloog-0.18.0.tar.gz cloog-0.18.0.tar.gz
$ 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
$ mkdir 47
$ cd 47
$ ../cloog-0.18.0/configure --prefix=/mingw --enable-shared --disable-static
$ sed -i 's/allow_undefined_flag="unsupported"/allow_undefined_flag="supported"/' libtool
$ sed -i 's/allow_undefined_flag="unsupported"/allow_undefined_flag="supported"/' isl/libtool
$ make
$ make install

5.mingw32-gcc(4.8)の作成
$ cd ~/
$ mkdir gcc
$ wget http://www.dnsbalance.ring.gr.jp/archives/lang/egcs/snapshots/4.8-20130127/gcc-4.8-20130127.tar.bz2
$ tar xjf gcc-4.8-20130127.tar.bz2
$ mkdir mingw32
$ cd mingw32
$ ../gcc-4.8-20130127/configure --enable-languages=c,c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgomp --disable-win32-registry --enable-version-specific-runtime-libs --build=mingw32 --prefix=/msys-temp/gcc48

checking for version 0.10 of ISL... no
checking for version 0.11 of ISL... yes
checking for version 0.17.0 of CLooG... no
checking for version 0.18.0 of CLooG... yes

$ sed -i "s/STAGE_CONFIGURE_FLAGS=--enable-werror-always/STAGE_CONFIGURE_FLAGS=#--enable-werror-always/" Makefile
$ make
$ make install
$ LANG=C /msys-temp/gcc48/bin/gcc -v
Using built-in specs.
COLLECT_GCC=C:\msys-temp\gcc48\bin\gcc.exe
COLLECT_LTO_WRAPPER=c:/msys-temp/gcc48/bin/../libexec/gcc/mingw32/4.8.0/lto-wrapper.exe
Target: mingw32
Configured with: ../gcc-4.8-20130127/configure --enable-languages=c,c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgomp --disable-win32-registry --enable-version-specific-runtime-libs --build=mingw32 --prefix=/msys-temp/gcc48
Thread model: win32
gcc version 4.8.0 20130127 (experimental) (GCC)

ビルドはできたけど、日本語表示が化けまくりになってしまった。
終わり

拍手[0回]

カレンダー

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