元スレCygwin + MinGW + GCC 相談室 Part 5
gcc覧 / PC版 /みんなの評価 :
653 = :
mingw32のシェルで日本語の入力ができません。
これは仕様ですか?Cygwinで入力した文字が正しく認識されません。
GCCのバグのようですが解りません。mingwのコンパイラでは同じプログラムで
正常に動きます。日本語処理に詳しい方教えてください。
654 = :
>>653
問題を整理してくれ。問題を一つずつ主語と目的語を明示して書き直すだけでずっと判り易くなるぞ。
655 = :
うん
656 = :
触るなと。
上の方のログ見ればどんな奴かわかるだろ。
657 = :
Cygwinをいじっているうちにおかしくしてしまったようで、
同じプログラムが同じように動きません。文字コードを入力して
表示するプログラムなのですが日本語の2バイトコードが正しく
表示されません。CygwinのGCCでコンパイルするとおかしくなります。
MINGWのコンパイラだと正常に認識します。
もう一つはmingwのシェルですが日本語を入力しようとしても
文字が消えてしまいプログラムに引数渡しができません。
以前は問題なく動いていたと思うのですが今日突然おかしい事に
気づきました。これは今まで気づかなかっただけで普通の現象なの
でしょうか。日本語がコマンドプロンプトから入力できないことは
ないと思うのですができません。
658 = :
>>656
すまん。俺が悪かった。
659 = :
>>657
死ね
660 = :
cmd.exe使えって言われないのが不思議
661 = :
質問です。
普通にmsysをインストールして普通に起動したらDELキーを押したとき「~」が出るわ、
lessコマンドの表示でカーソルキーが使えないわで何か変なんですけど、
どう設定すれば正常になるでしょうか?
662 = :
それが正常
663 = :
>>661
× 何か変
○ 何か普通
666 = :
ckw 使おうぜ
667 = :
gcc-4.6 で mingwrt-3.18, w32api-3.15-1 を build した後、生成されたファイルを上書きインスコ
試しに以下のソースを build してみたんだけど、出来上がった実行ファイルは動かなかった(´・ω・`)
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("hello, world\n");
return 0;
}
どっちが原因で動かない実行ファイルが作成されるのか試してみたんだけど、どうやら mingwrt-3.18 らしい
とりあえず w32api-3.15-1 は、問題無いみたい・・・上のソースじゃ確認にもならないかもだけど・・・
ちなみに環境は XPSP3 の自前ビルドです
えらいひと修正してくんないかな・・・(´・ω・`)スキル無いもれは他力本願ですスマン
668 = :
>動かなかった(´・ω・`)
を詳しく書かンと相手にされないよ。ソース晒して、追試してじゃ...
670 = :
Cygwinにg++の4.5入れたいんですが、ソースしかありません
コンパイル法を教えていただけないでしょうか
674 = :
675 = :
>>667
lto-pluginで
*** Warning: Trying to link with static lib archive ../libiberty/pic/libiberty.a.
ってのが出て、ビルドがこけるぞ
676 = :
>>667
mingwrt-3.18が駄目なときの回避方法を書いてくれ
特に駄目って事ないみたいだけど...
677 = :
>>675
そう言われても・・・
そいえば、libiberty.(a,h) は、binutils のを使った方が良いってググった時に出てきたのを鵜呑みにしてやってるんだけど
実際の所はどうなんでしょうかね?
binutils-2.20.51(20101026) と gcc-4.6(20101023) にある libiberty.h は同じものだったけど、buuild して出来た libiberty.a は
どちらを使えば良いのだろう・・・
>>676
回避方法というか、単に gcc-4.6 で build 仕直した mingwrt-3.18 が NG だったので、gcc-4.5.x で build した時のを使用して
対応しているというだけのことです。
ググっていたら blog に gcc-4.6 の build についてカキコしている方が居たので、参考になるかどうかわかりませんが
http://ra1ndog.wordpress.com/2010/10/22/compiling-gcc-4-6-nightlies-on-windows-with-mingw-and-msys/
678 = :
とりあえず、linuxな環境で作ったmingwなgcc4.6でコンパイルしたruntimeだと
問題ないけどね、hello world
君の環境で動かない時にwindows君はなんか文句は言わんのかね?
なにを基準に動かないと言ってるのかいまいち不明
679 = :
>>667
うちは大丈夫
683 = :
>>678
作成された a.exe を実行すると windows がエラーダイアログを表示
a.exe 単体のエラーで ntdll.dll とか他のを巻き込んでのでは無かったです
ちょと今すぐには確認出来ないので、また後でエラー表示内容をアップしたいと思います
684 = :
> --enable-static --disable-shared
にしてるから、mingwrtにもいるんじゃないだろうか?
686 = :
よう詰め込んだもんだ
dllとstaticが混在して、環境破壊してるような?
687 = :
mingwrt の configure に static.shared の項目無かったから省いているんだけど
後で試して見ます
すいません、眠くなってきたので取りあえず此処までで・・・
レスありがとうございました(´-ω-`)オヤスミナサイZzzz
688 = :
おはようございます。
これから仕事なので手短に
>>684
mingwrt-3.18
configure: WARNING: unrecognized options: --enable-static, --disable-shared
やっぱり、駄目ですね
689 = :
>>683
windows が表示したエラーダイアログ内容
----------
エラー署名
AppName: a.exe AppVer: 0.0.0.0 ModName: a.exe
ModVer: 0.0.0.0 Offset: 00007fff
----------
692 = :
上の続き
runtimeをBUILDして、hello worldをコンパイルしてみたけど
特に問題はでなかったな。
動くものと動かないものをバイナリーで比較してみるぐらいしか...
693 = :
>>692
そちらは問題無かったですか・・・
多分、もれの環境が原因なのかもですね
一応、動くものと動かないもの(※1)のバイナリ比較はしてみましたが、GCC-4.6 で生成された実行ファイルのサイズは同じものの
中身は違うものでしたね・・・動かないんだから当たり前か・・・orz
もう少し、色々と試してみようと思います
※1
動くもの:GCC-4.5.2 環境で build した mingwrt-3.18 使用時
動かないもの:GCC-4.6 環境で build した mingwrt-3.18 使用時
695 = :
汗くさそう…
696 = :
MinGWを使用して、
リンカスクリプトというものを勉強しています。
1.勉強に使っているソース Test1.c
#include <stdio.h>
int main(void) {
printf("hoge\n");
return 0;
}
2.gcc Test1.cでコンパイル・リンクし出来上がった a.exe をobjdumpで調べたところ、
> objdump -h a.exe
a.exe: file format pei-i386
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000009b4 00401000 00401000 00000400 2**4
1 .data 00000050 00402000 00402000 00000e00 2**4
2 .rdata 000000d0 00403000 00403000 00001000 2**4
3 .bss 000000e0 00404000 00404000 00000000 2**4
4 .idata 00000294 00405000 00405000 00001200 2**2
となっていました。また、a.exeは正常に動作します。
697 = :
3.最も単純なリンカスクリプトを作りたくて下記をScript1.xの名前で作成しました。
SECTIONS
{
. = 0x00401000;
.text : { *(.text) }
. = 0x00402000;
.data : { *(.data) }
. = 0x00403000;
.rdata : { *(.rdata) }
. = 0x00404000;
.bss : { *(.bss) }
. = 0x00405000;
.idata : { *(.idata) }
}
4.gcc -T Script1.x Test1.cでコンパイル・リンクしたところ下記のエラーが出ます。
..\mingw32\bin\ld.exe: warning: dot moved backwards before `.rdata'
..\mingw32\bin\ld.exe: section .idata.1 [00403000 -> 00403013] overlaps section .rdata [00403000 -> 004030cf]
..\mingw32\bin\ld.exe: section .bss [00404000 -> 004040df] overlaps section .idata.2 [00404000 -> 00404003]
collect2: ld returned 1 exit status
最低限のリンカスクリプトはどう書けば良いのでしょうか?
参考になるサイト等あれば教えて頂けると助かります。
(/MinGW/mingw32/lib/ldscripts/i386pe.xは見ましたが、
ゴチャゴチャしていて私には理解できませんでした。)
698 = :
エラーメッセージからすると .idata.1 と .idata.2 というセクションがあってそれが指定されてないからアドレスが上手く割り当たってないように見える
*(.idata.*) にしてみたら
699 = :
このへん見てみたら
http://www.sra.co.jp/wingnut/ld/ld-ja_3.html
700 = :
>>698
とりあえず
*(.idata$*)
にしたらコンパイルリンクは通りました。
出来上がった a.exe を実行するとまともに実行できず、戻り値が127になったので、
i386pe.xを削る方向でやってみたところ下記で正常動作しました。
SECTIONS
{
. = 0x00401000; .text : { *(.text) *(.ctors); }
. = 0x00402000; .data : { *(.data) }
. = 0x00403000; .rdata : { *(.rdata) ___RUNTIME_PSEUDO_RELOC_LIST_END__ = .; }
. = 0x00404000; .bss : { *(.bss) }
. = 0x00405000; .idata :
{
SORT(*)(.idata$2)
SORT(*)(.idata$3)
LONG (0); LONG (0); LONG (0);
SORT(*)(.idata$4)
SORT(*)(.idata$5)
SORT(*)(.idata$6)
SORT(*)(.idata$7)
}
}
↑の何故これだと上手く動くのか私には分かってません。
>>699
見てみます。
みんなの評価 :
類似してるかもしれないスレッド
- Cygwin + MinGW + GCC 相談室 Part 8 (938) - [97%] - 2022/10/28 8:00
- Cygwin + MinGW + GCC 相談室 Part 7 (996) - [97%] - 2014/9/21 2:15
- Cygwin + MinGW + GCC 相談室 Part 6 (981) - [97%] - 2012/12/30 23:15
- Cygwin + MinGW + GCC 相談室 Part 4 (1001) - [97%] - 2010/3/23 18:31 ☆
- Cygwin + MinGW + GCC 相談室 Part 3 (1001) - [97%] - 2008/9/12 0:04 ★
- 【激遅】AppleGCC【絶望】 (111) - [1%] - 2010/1/15 10:31
トップメニューへ / →のくす牧場書庫について