cygwin + mingwn + gcc 相談室 Part2
1 :
980 :
2005/09/07(水) 23:29:07
乙
>>1 さっそく質問だが
MinGWで、COMサーバ・クライアントをする実例ってある?
CでインタフェイスをGetするのはやったけど、やっぱりC++チックな
書き方ができないのが悔しかった。
Borlandのタイプライブラリインポートで、プロパティが
Borlandのプロパティに対応するのを見て、なんだか悔しかったり。
C++ ABI は、MSVC BCC いずれとも互換性がないんだっけ?
>>2 gcc-3.xのMinGWならふつーに使えた気がしないでもない。
4 :
デフォルトの名無しさん :2005/09/09(金) 22:43:15
>>前スレ387 サンクス!
>>1 for(;;) printf("乙!\n");
>2 COM は C++ ABI のごく基本的でほぼ共通の実装が使われている部分(vtbl 周り)に 立脚しているから、ごく普通に MinGW の C++ でも使えると思うが。
>>6 それが、gccの場合は、vtblの先頭を型情報と何か(知らん)で取るから、他のコンパイラと仮想関数がふたつずれるんですよ。
あと、いわゆる __thiscall (暗黙の1st引数が%ecx) に gcc は対応してたけ? declspec で vt の持ち方などを変更できればいいんだが…
どっかのバージョンからVC++に合わせてABI変更されてたような気がしないでもない
>>7 どのバージョンのMinGW/gccを使っていて、どんなコードがダメだった
のか挙げてみなさいな。MinGWでできるはずだよ。
>>10 うぉっ、4.0.1では先頭の情報が無くなってる。
ちなみに記憶にあったのは3.系の初期。
Cygwin on Win64マダー
mingwにboostをインストールするにはどうしたらいいでしょうか。 bjam -sTOOLS=mingw install ってやったらすべてskipされました。。
boostの配布物を展開してjamの設定ファイルのあるディレクトリを見れ。
jamfileがあるところですか? 色々見たつもりなんですが、全然判らないです。 BUILDを色々変えてみたり、個別のディレクトリの下で やってみたりもしたんですが、やはりスキップされるだけです。。
すいません、解決しました。
17 :
デフォルトの名無しさん :2005/10/02(日) 05:44:16
gcc-4.1で、mingwnでビルドできるスナップショットの日付はどれでしょう 最新版は撃沈…
アプリがフォーカス握ったときにデバッガを操作できなくなるので gdbでリモートデバッグしたいんだけど、どうしたらいい?
19 :
デフォルトの名無しさん :2005/10/12(水) 21:40:49
cygwin上でコンパイルしたアプリケーションを アイコンクリックで起動しようとしたら 「cygwin1.dllが無いから起動できませんでした。」ってなるんですけど、 スタンドアロンで起動させるためにはどうしたらいいでしょうか?
(1)cygwin1.dllをアプリと同じフォルダに置く。 (2)cygwin1.dllにパスを通す。 (3)アプリをmingwでコンパイルし直す。 お好みでどうぞ。
cygwin1.dll (≒Cygwinライブラリ) のライセンスに注意な。
STLport-4.6.2を使ったプログラムをmingwでびるどしたいのですがリンクがうまくいきません stlportはc:/dev/stlport-4.6.2にインストールしてあり、こちらのビルドは成功しています c:/dev/stlport-4.6.2/lib/libstlport_mingw32.a c:/dev/stlport-4.6.2/lib/libstlport_mingw32.dll.4.6 c:/dev/stlport-4.6.2/lib/libstlport_mingw32_static.a ..... c:/dev/STLport-4.6.2/lib/obj/mingw32/release下には生のオブジェクトファイル(拡張子が.o)があり それらをMakefileのなかで全部リンクさせるようにしたらリンクできました 成功したMakefileは以下のようにかきました OBJS = hello.o STLP_LIB_DIR = "c:/dev/stlport-4.6.2/lib/obj/mingw32/release" STLP_OBJS = $(STLP_LIB_DIR)/c_locale.o $(STLP_LIB_DIR)/c_locale_stub.o $(STLP_LIB_DIR)/codecvt.o ..... hello.exe: $(OBJS) g++ -static -v -o $@ $(OBJS) .cpp.o: g++ -static -v -c -I. -I"c:/dev/stlport-4.6.2/stlport" $< 失敗したMakefileは以下のようにかきました OBJS = hello.o hello.exe: $(OBJS) g++ -static -v -L"c:/dev/stlport-4.6.2/lib" -l"stlport_mingw32"-o $@ $(OBJS) .cpp.o: g++ -static -v -c -I. -I"c:/dev/stlport-4.6.2/stlport" $< エラーメッセージはいかのとうりです. よろしくおねがいします hello.o(.text+0x35):hello.cpp: undefined reference to `_STL::cout' hello.o(.text+0x73):hello.cpp: undefined reference to `_STL::ios_base::_Loc_init::_Loc_init()' .......... hello.o(.text$_ZN4_STL8ios_base23_M_check_exception_maskEv[_STL::ios_base::_M_check_exception_mask()]+0x1d):hello.cpp: undefined reference to `_STL::ios_base::_M_throw_failure()' collect2: ld returned 1 exit status make: *** [hello.exe] Error 1
リソクしる
あまりよく読んでないが、オブジェクトファイルと -l の順番の問題じゃ?
25 :
22 :2005/10/16(日) 11:48:06
24さんのいうとおり hello.exe: $(OBJS) g++ -static -v -L"c:/dev/stlport-4.6.2/lib" -l"stlport_mingw32"-o $@ $(OBJS) を hello.exe: $(OBJS) g++ $(OBJS) -static -L"c:/dev/stlport-4.6.2/lib" -l"stlport_mingw32_static" -o $@ にしたらビルドに成功しました. ありがとうございました
26 :
デフォルトの名無しさん :2005/10/16(日) 15:51:20
初心者モドキです。質問させてください。
Cygwinのバージョン2.510.2.2をフルインストールし、その後
http://www.eaflux.com/cygwin-xfree-jp-supplement/ を見ながら日本語化しました。
startxで正常に起動しました。
しかし、.fvwm2rcの
AddToMenu Window-Ops2を"移動(&M)" Move
等すると、ktermを起動したときなどに左上の[-]メニューが文字化けします。
.fvwm2rcの保存をSJIS,EUC,JISにしても同様です。
一応、xfontsel.exeで-*-*-*-*-*-*-*-*-*-*-*-*-gb2312.1980-*を見てみたら
ひらがなが読み込まれた(フォントが存在している?)ので、安心して
WindowFont,IconFont,MenuStyle,*FvwmButtonsFont,*FvwmIdentFont,
*FvwmWinListFont,*FvwmIconBoxFont,
と、目に付く端から上記のフォントに設定してみたのですけど、やっぱり
文字化けします。
当然、"移動(&M)" Move を "Move&M)" Move とすれば文字化けはしないので、
日本語を諦めれば言い訳ですけど、できるなら設定したいのです。
分かる範囲で教えていただけたら光栄です。
.fvwm2rcをGB2312で保存しろ。
28 :
26 :2005/10/16(日) 16:15:24
驚愕。 そういうかー! ところで、.fvwm2rcのGB2312での保存の仕方が分かりません。 申し訳ないのですけれど、GB2312での保存もしくはjisx0208.1983(これもフォントが出る)での .fvwm2rcの保存方法も教えていただけないでしょうか。
愕然。 モドキ等と自称する人種が素の初心者よりよほど始末に悪い見本だぁな
>>26 > 一応、xfontsel.exeで-*-*-*-*-*-*-*-*-*-*-*-*-gb2312.1980-*を見てみたら
> ひらがなが読み込まれた(フォントが存在している?)ので、安心して
>>28 > 申し訳ないのですけれど、GB2312での保存もしくはjisx0208.1983(これもフォントが出る)での
なぜjisx0208.1983のfontを指定しない?
31 :
26 :2005/10/16(日) 23:37:11
言葉が足りずに申し訳ないです。 すでに、-*-*-*-*-*-*-*-*-*-*-*-*-jisx0208.1983-*で.fvwm2rcのフォント設定を してみたのですけど、それでも文字化けをするのです。 なので、保存のときに特別な操作が必要なのかと思ったのです。
32 :
26 :2005/10/17(月) 00:15:01
.fvwm2rc の WindowFont,IconFont,MenuStyle,*FvwmButtonsFont,*FvwmIdentFont, *FvwmWinListFont,*FvwmIconBoxFont, を、順に一個づつ -*-*-*-*-*-*-*-*-*-*-*-*-jisx0208.1983-*から -*-*-*-*-*-*-16-*-*-*-*-*-jisx0208.1983-* に変更(秀丸を使ってSJIS保存)してみても、文字化け部分の 文字サイズが変わりません。 もしかして、この.fvwm2rc以外の部分が悪さしているんでしょうか。
34 :
33 :2005/10/21(金) 07:12:41
すいません、書き忘れがいくつかありました。 各ツールは configure、make、make install を binutils、gcc、newlib の順に 行おうとしています。 今回は、binutils についてはうまくいき、gcc の configure まではうまくいくのですが、 make で先ほどのエラーが出ます。 OS は WinXPです。
だめってことはないだろうけど… newlibが要らない気がする。 ターゲットOSは?
MinGWでunistd.h 絡みは使えなかったと思うんだが…。 unixのように使いたかったらcygwin使えと。
>>33 ビルドのgcc/MakefileのCOLLECT2の記述を消せばいい。
cygwin環境で-mno-cygwinつきでクロス環境構築したけど
collect2は作らなかったよ。
38 :
33 :2005/10/21(金) 22:41:02
お返事ありがとうございます。
>>35 ターゲットアーキテクチャは h8300-hms です。
>>36 やはり cygwin を使ったほうがいいんでしょうか・・・。
>>37 これからやってみます。
一回一回ビルドに時間がかかるので何度も試せませんが、
少しずつやっていこうと思います。
なんとかしてMinGWで、stdc++の代わりにmsvcp[5|6]0.dllを使う方法はないでしょうか。 msvcp60.dllからlibmsvcp60.aを作ってみたりしましたが、どうもstdc++が優先されてしまうようです。
-nostdlib とか?
>>40 C++のシンボル名規則が全然違うから、ムリ。
>>41 -nostdlib -lmsvcp60.a
試してみましたが、未解決のシンボルのせいでリンクが完了しませんでした。
>>42 どこかをいじって、なんとかできないものでしょうか。
>>43 間違えました。
-nostdlibを指定しても、libstdc++は勝手にリンクされるようです。
マングリ返せよ
cygwinで日本語表示ができません。 cygwinでコンパイルしたC言語のプログラムの中の printf("日本語") の日本語が正しく表示されません。 cygwin_jeをインストールすればいいのでしょうか? よろしくお願いします。
>>45 まんぐり返したらリンクは通るようになるかもしれんが
C++ABIが違うのでなかった? スレの最初の議論では結論がよくわからん。
>>46 どーうまくいかなかったんだね?
何も考えずに使うと、コンソールアプリはCP932(シフトJIS)に縛られるのでうまくいくはず。
>>47 レスありがとうございます。
meadowで書いたプログラムをcygwinで
gcc -o ~ ~
としてコンパイルした後、そのプログラムを
./~
で走らせると、
printf("日本語")
の部分が
B&?S+$
とかになってしまうんです。
ソースの文字コード
>>45 たとえまんぐり返しの整合性が取れても、
スタートアップルーチンの仕事内容とか、例外関係の違いもあるので、
gcc のソースを激しくハックする勇気がないとムリ。
53 :
52 :2005/10/28(金) 02:50:40
何度もすいません。 もしかして setup.exe でダウンロード先を ~.jp 以外のサイトからDLしたのがまずかったのでしょうか? それが原因なら再インストールするだけなんですが・・・。
cygwinかんけーねーよ エディタ見ろよ
とりあえず藻前しばらくMeadow使うのやめれ。 で、Notepadで同様のソース書いて試せ。
そしてNotepadでUnicode保存してしまう罠。
しかもsrc.c.txtという名前で保存
ここはnotepad使いこなしてるツワモノだらけだな。
まるでダメオは結局のところ何をしてもダメダメってところで
61 :
52 :2005/10/28(金) 05:15:19
meadowの.emacsの中のフォントを変更してみたら、
簡単に表示させることができました。
最初からcygwin内の問題だと思い込んでいたもので、
>>54 をみるまで、
みなさんのアドバイスを理解することができませんでした。
いろいろとお世話になり、ありがとうございました。
フォント!?
文字コードってフォントでどうにかなる問題だったのかよ。
なる問題だったんだよ で、ガッ
まあ、質問者の「meadowの.emacsの中のフォントを変更」というのさえ 信頼できない記述に成り下がるわけで、なにかの勘違いだろうなぁ、、、
66 :
52 :2005/10/28(金) 21:12:17
なんかまた勘違いしてたみたいですね。 正確に言うと、 .emacs 内の ;;; TrueType フォント設定 以下の文の ;; をとったらいけました。 あまり知識がないもので、誤解させてしまって申し訳ありませんでした。 そしてありがとうございました!
windowsでcygwinのgccで-mno-cygwin使ってmingw使ってんだけど ファイルをfread()とかposixのread()で読もうとしても全部読めない・・ ファイル途中なのにeofになっちゃう なぜだろう? cygwinはリンクされてないのでcygwin環境とは混在されてないんだけど ちなみに同じソースでcygwin環境でビルドすると問題なく読める
バイナリモードを指定せずにバイナリデータを読もうとしてるとか、かな?
不具合を再現する最小限のソースを示せばMinGWでコンパイルしてみるよ。
mingwのGNUコンパイラを使うと プログラムサイズがやけに大きくなるのはなぜでしょうか? C言語でのHello Worldが500KBにもなってしまいます C++だと1MBとか・・・ -Osをつけても効果がないんです
まずはソースをよこせ
-s も付けたら?
>>70 C++は、MSVCP*.dllを利用できないので、iostream等をインクルードした場合は
libstdc++を使わざるを得ず、またライセンスの関係でスタティックリンクするしかないため
サイズに関しては諦めるしかない。
・・・しかし、CのHelloWorldで500KBytesは異常。
>>71 ソースといっても・・・
>>72 -sオプションは知りませんでした
劇的にサイズが減りました
どうもありがとうございました
>>73 無駄なライブラリを引っ張ってきてるだろうなー
と思ってたらやっぱりそうみたいですね
ちなみに
-sなし
C:568,911 バイト、C++:1,055,359 バイト
-sあり
C:5,632 バイト、C++:264,704 バイト
でした
stripと無駄なライブラリとは関係ないわけだが
どちらかというとデバッグ情報のような気がするけど
意味も分からず-gを付けている予感
それだ
どこに質問するのが最適かわかりませんでしたが、
おそらく、ココかと思いまして質問させていただきます。
mpgtx
ttp://mpgtx.sourceforge.net/ というmpeg操作用ツールがあり、exeもダウンロードできるのですが、
Win32用はLFS(Large File Support)に対応できていないようです。
#ちょっとバージョンも古い
c++でLFSに対応させる方法はありませんか?
以下、自分でやってみたこと。
まずconfigureを見てLFS対応か判定するために一度サンプルをコンパイルする個所を発見。
LFSとMingwでググってみたら、次のサイトを発見。
ttp://gnuwin32.sourceforge.net/compile.html 環境構築:Mingw + MSYSな環境に上記gnuwin32を加えてLibGw32Cを足した
configure:ドキュメント通りのオプションになるようmpgtxのconfigureを書換えした
また-Iや-Lのパスも変更した。
サンプルのstdio.hはgnuwin32のstdio.hを参照するよう変更。
結果:サンプルコンパイル時にstdinが無い、と言われてしまいました。
gnuwin32にはCだけでC++が無いのでmingwのC++を使っているのですが..
古いgccで試すんだ2.95あたりまで
簡単そうなのはFSEEK,FTELLをWin32APIでラップ。 でもread,writeまでラップしないといけなさそうな。 ogg vorbis みたいにファイルアクセスが抽象化されてると楽なんだけどな。
82 :
デフォルトの名無しさん :2005/11/07(月) 00:26:57
MinGWにはvarargs.hなど、一部のヘッダファイルがないようで(ファイルはあるにはあるが、中身が空) 可変引数が使えないんですが、これは解決策はありますか?
83 :
82 :2005/11/07(月) 00:40:19
勘違いしてた。 Windowsではvarargs.hは要らないです。stdio.hだけでいけます。 スレ汚しでごめん。
違う方向にさらに勘違いしていそうだな。
varargs.hってANSI以前の? K&R嫁...って今の時代に新人以外に向かってこんなこと言う機会があるとはね。
>>83 ANSI-C では stdarg.h を使うんですよ。
mingw 以前に ANSI-C が分かってないので、勉強して出直してね。
87 :
82 :2005/11/08(火) 04:04:46
>>84-86 ありがとう。
ほんとに勘違いしてました。
勉強して出直します。
インストールが絶対に失敗する。 Download Incomplete. Try again? じゃねぇよおぉおお
別のサイトを選ぶとかいうくらいの誰でも思いつきそうなことは試したか?
90 :
デフォルトの名無しさん :2005/11/09(水) 22:01:23
大学の授業でCygwinをつかい、C言語でプログラミングをしているのですが、 rp4a.c:14: error: stray '\201' in program rp4a.c:14: error: syntax error at '@' token というエラーが消えません。 ソースの部分 printf("数字列判定プログラムです."); という単純な文です。 何処かほかの文に問題があるのでしょうか?
>>90 ぐぐれば出てくると思うけどな。
全角スペースがないかチェックしろ。
>>91 おお、消えました!
ありがとうございます!
>>89 うん、した。
ほかに何か考えられることは無いのですか?
俺なら次、ポートが開いてるか確認するかな。 そういえばcygsetupってIEの設定使うかどうかのチェックボックスもあったろ? それ付けたり消したりしてテスト。
>>88 LANが遅いとタイムアウトするっぽいから会社で拾ってるなら要注意。
#何度ダウンロードしなおしたやら。
96 :
デフォルトの名無しさん :2005/11/10(木) 11:08:04
GCC4.0のWindows版バイナリってないの?
98 :
96 :2005/11/10(木) 13:20:09
>>97 ありがとうございます。
これってMinGWのフォルダに上書きすればいいですよね?
99 :
デフォルトの名無しさん :2005/11/10(木) 17:09:56
MinGW Developer Studioって日本語使えるようにならないでしょうか?
作者に聞け 100
おしえてください。完全初心者です。 Cygwinを日本語化して、KTerm経由で学校のUNIXサーバに接続しています。 しかし、UNIX側がEUC、Cygwin側のはSJISで日本語化しているため、 文字化けしてしまいます。 そこで、".setenv"をいじってUNIXの方もSJIS化してみました。 それでも、漢字コードの送受信が文字化けします。 ただ不思議なことに、"ls"コマンドを打ち込むと、SJIS設定の日本語ファイル名 は正常に表示されるのです。ちなみに、"ls"コマンドには".alias"をつかって --show-control-charsをあらかじめ設定してあります。これがなくなると、 ファイル名も同様に文字化けします。 このようなことから、Kterm自体に日本語が表示できない…と言うわけではなさそう なのですが、どうすればよいのかがさっぱり分かりません 普通の送受信漢字コードに"--show-control-chars"のような設定をできれば よいのでしょうけれど、そのやり方がさっぱり見当もつかないのです。 分かりにくい説明で申し訳ありませんが、できれば解決の仕方を ご教授ください。
今まで文字化けしなかったのに何か追加でインストールしたら GCCまで文字化けするようになったんだけどそういう人いる?
>>101 Cygwinを複数起動してそれぞれSJISとEUCを表示できるようにしてみるとか。
>>102 >GCCまで文字化け
詳しく。
じゃなきゃ、そもそも日本語を使わないという選択肢
Cygwin放置してTeraTerm
cygterm経由でTeraTermなりputtyなり
>>103 GCCって全部メッセージは英語なはずなんだけど
Quaternion.h:26:7: キルケ・ no newline at end of file
とか変なのが出るんだよ。
これは最後に改行がないってことだってわかるからいいんだけど
全然わかんないのもあって困ってる。
友達に聞いたらおんなじ状態になってる人がいた。
彼はRubyを入れたらそうなったらしい。
警告: が化けてるんだろうなたぶん
>>108 > GCCって全部メッセージは英語なはずなんだけど
んなこたーない。一部は $LANG や $LC_ALL や $LC_MESSAGES で切り替わる。
開発者にとっては日本語より英語のほうが使いやすいような
Meadow+cygwin+MingW+gccでWindowsアプリを作って1年ぐらいだけど。 今のところ何とかなってるけど、例えば、印刷プレビュー実装とかって…自力じゃ殆ど無理だよねぇ。 あー言うのはやっぱMSのVC++とかMFCとか使って実装するのか? それとも現状の環境でもリンクできるライブラリとかあるのか? # 無料、有料は問わない マジレスキボーンヌ
工工エエエ(´д`)エエエ工工
wxWidgetsでもQtでも何でも使えや
印刷系ってあんまないよね texやpdfで終われって事なんだろうけど どっちもソース見て吐きそうになった
>>114 おいおい…あんなのしか無いの?
# MS以外まともな印刷プレビュ作れねぇ~って事かよorz
# それでも(MSのでも)臭いって言うのに
┐(´д`)┌
118 :
デフォルトの名無しさん :2005/11/19(土) 07:48:02
自己誘導で来ました MinGW-4.1.0とMSYS-1.0.10をインストールたのですが、 C言語ファイルのprintfに日本語があると実行したときに 文字化けしてしまいます 困っています。どうしたらいいでしょうか
>>118 ファイルにリダイレクトすればいいと思うよ。
そのファイルを適当なエディタで見れば化けない筈だから。
120 :
118 :2005/11/19(土) 19:08:21
え・・・それって根本的な解決にはなってませんよね・・・ どうやっても無理ということですか?
121 :
デフォルトの名無しさん :2005/11/19(土) 19:30:50
122 :
デフォルトの名無しさん :2005/11/19(土) 20:05:25
>>118 文字化けするところの直前に文字'\'または'¥'を入れると直るかも。
>>119 日本語文字をエスケープされて化けてるから、ファイルに書いても意味ないよ。
>>122 で対処するか、マルチバイト対応のコンパイラを使う。
ソースが日本語EUCならマルチバイト非対応コンパイラでも普通に通るので、
EUCで出力してnkf -sでShiftJISに変換するという手もないではない。
124 :
118 :2005/11/19(土) 21:10:59
>>122 最終的に全ての文字の間に入れてみたんですが、無理でした・・・
>>123 すいません。nkf -sがよくわからないのでちょっと調べてみます
>>124 '\'挟むのは、必要な場所だけ。
たとえば"表示"なんかは典型的に化ける文字列だけど、これは
"表"の2バイト目が'\'と同じ文字コードなので、"示"の1バイト目と
組み合わせてエスケープシーケンスとして処理してしまうことに起因する。
("\n"とかの類として、2文字1組として処理してしまうわけだ)
つまり、"表"の1バイト目+"示"の、3バイトの文字列として表示してしまう。
"表\示"とすることで、"表"の2バイト目+'\'='\'そのものの
エスケープシーケンスとして処理させれば4バイト全部揃うので、
意図通りに"表示"と表示される。
nkfうんぬんは半分冗談なので、あまり気にされるな。
>>124 ひょっとして、コマンドプロンプトじゃなくrxvt.exeを使ってるとか。
127 :
118 :2005/11/19(土) 22:19:19
>>126 118に書いているとおりMSYSを使ってます・・・
(゚Д゚)ハァ?
MSYSって日本語通るの?
んなこたない
131 :
118 :2005/11/20(日) 00:01:36
コマンドプロンプトなんかうまくいかないんです。 どうもパスが通ってないっぽくて・・・
cygwin.bat使えばいいじゃない
133 :
118 :2005/11/20(日) 00:10:12
コマンドプロンプトで gcc 使ってコンパイルしようとしてもできないです
はぁ
日本語使わなければコンパイル通る?
さあ盛り下がってまいりました!!!!!11
「コンパイルできない」と一言言えば全て通じると思っていた15の春。
138 :
118 :2005/11/20(日) 00:32:19
なんかできたっぽいです。 コマンドプロンプトを使うからと、MSYSをわざわざアンインストールしてからやってました MSYSでやってた時に出た不具合も起きません。MSYSってなんだったんだろう・・・ 本当に迷惑をおかけしましたm(_ _)m
ん?もう解決しちゃったの msys.batでフォント指定のCourier-12をTerminal-14等にすれば日本語表示できたのだけど
すいません。 もう一度別の質問させてください。 MSYSでやってた時は、コマンドのHISTORYが保存されてたのですが、 コマンドプロンプトでは保存されてません。 これはただ単にソフトウェアの違いからくるものなのでしょうか
そうでーす Shellの機能です
なんだかもう、ぐだぐだ。 環境の使い方をム板でやるなよな。
cygwinは環境とちゃうんやろか。
cygwinでのプログラミング技法≠cygwinの使い方
145 :
140 :2005/11/20(日) 18:20:28
ありがとうございます もう聞くことはないと思います・・・
GIMPスレからやってきました。 WinでGIMPをビルドできる環境を構築する方法を おしえてくだしぁ;; MinGW&Msysでお願いします しがない絵描きに愛の手を(*・ω・*)
MinGWでワイド文字使おうと思ったのですが、よくわからないので質問します。 1, L"日本語" が混じったソースのコンパイル通すにはどうしたらいいでしょうか? 2, wchar_tの内部表現は実装毎ということですが、MinGWは何を使っているのでしょうか? getwsやwscanfを使えば環境の文字コードを自動で判定してUTF-16に変換してwchar_t に入れてくれると思っていたのですが、GDBでp/xしてみたら、SJISのままでしかも ひとつのwchar_tに対して1バイト分しか入っていない状態でした。これが正しい動作 なのでしょうか?
>>147 MinGWはstd::wstringもリンクできないし…。
150 :
147 :2005/11/22(火) 20:44:37
setlocalでした・・・。Japanese_Japan.932を指定したら内部でちゃんとUTF16に 変換してくれるようになりました。。。ごめんなさい。 これで2と長文の疑問は解決しました。こんな事に一日無駄にした。。。 L"日本語" は諦めたほうがいいんでしょうか?
gccはUnicode文字列リテラル(L"~")をまともに使えないらしいので、 諦めて別の方法を考えた方がよさげ。
152 :
147 :2005/11/22(火) 21:51:55
質問です。 cygwin のパッケージ一覧を見ると、gcc 関連に cygwin 版と mingw 版が あるみたいなんですが、どちらを入れるのが吉なんでしょうか。 自前で Un*x 系のソース取ってきて make したりするなら cygwin 版、 そういうことしないなら mingw 版でいいのかな、とか推測してるんですが。
おおむねそんなところ。unix的な部分への忠実度が違う(cygwinの方が忠実)。 ディスクに余裕があるなら、両方入れておいても損はしない。 オプションで使いわけられるし。
155 :
153 :2005/11/23(水) 03:03:25
>>154 なるほど。
ありがとうございました。
> オプションで使いわけられるし。
調べてみました。-mno-cygwin ですね。
クロスコンパイルの環境を作りたいんだけど、 一般的には、 binutils のmake --target=<target> gcc のmake --target=<target> [g]libcのmake --target=<target> 必要なライブラリのmake --target=<target> の順番でFA?
>156 ソースからビルドするってことですよね? 順番だけならそれでよいけどパッチが必ず必要ですよ x86以外のtargetだとそれぞれにそこそこのパッチが用意されています それとcygwin/mingwでとなるとそれ用のパッチも必要となります どのパッチをどの順番で当てるかがキモです(結構ハマリます)
Cygwinのperl環境で、use IOを用いようとすると、 Patameterless "use IO" deprecated at ~(以下ファイル名) と返って来ます。 use IOは、perlに普通だったら入っているモジュールみたいなのですが…。 何か解決策を知っている方がいたらよろしくお願いします。
最近gcc使い始めたのですが、 gccってUnicodeリテラル( L"ふーばー" みたいなの)をまともに使えないのでしょうか。 マルチバイト文字のリテラルだと確実にヘンなことになります。 一度 char の配列に入れておいてから mbstowcs で変換するとうまくいくのですが。 これはそういうもんだと思ってあきらめるしかないんですかね? ※上記は gcc 3.4.4 で確認
>>161 L"\u3075\u30fc\u3070\u30fc"
みたいにUnicodeエスケープして gcc -std=c99 や g++ とかなら多少は動いたかもしれない…
# gcj だと --encoding=Shift_JIS とかで済むのだが…
163 :
161 :2005/11/30(水) 20:47:47
>>162 ありがとうございます。
> L"\u3075\u30fc\u3070\u30fc"
> みたいにUnicodeエスケープして gcc -std=c99 や g++ とかなら多少は動いたかもしれない…
gcc と g++ の両方で試してみましたが、文字列の末尾の文字が化けてしまうようです。
これでうまくいくならフィルタ書こうかとか思ったのですが…
あきらめて MBCS で書くことにします。
>>161 >>147-151 あたりでも触れてるが、gccはASCIIをUTFにするのと同じやり方
(つまり1バイト毎の頭に\0を付ける)でマルチバイトリテラルも処理してしまうので、
L"~"はマルチバイト環境では使い物にならない。
VC++あたりは元々マルチバイト対応してるから普通に使えるんだけどね。
165 :
161 :2005/11/30(水) 22:10:21
>>164 あ、すぐ上でガイシュツだったんですね。すみません。
VC++ では _UNCODE を define して L"~" (実際は _T("~") ) で書くのに
慣れているので、いまさら MBCS でやりたくないとか思いましたが、仕方ないですね。
-finput-charset -fexec-charset でどうにかなるもの? とりあえず cygwin で g++ -finput-charset=cp932 -fexec-charset=UCS-2 とかしてみたけど、 windows.h の extern "C++" がコンパイルできなくてテストできない。
167 :
161 :2005/12/01(木) 13:03:32
>>166 それはすでに試していましたが、どうにもなりません (もちろん、C で書けばコンパイルできます)。
-fexec-charset=UTF-16 でも同様です。
どの方法を使っても化けかたが同じなので、いかなる場合でも
>>164 さんが書かれている妙な処理方法は変わらないようです。
関係ないですが、ソースのコードページがどうであれ、内部的には UTF-8 で持ってるっぽいですね。
仕方ないのでこんなことしてみました。
class _T {
wchar_t *m_p;
public:
_T(const char *p) { int len = ::strlen(p) + 1; m_p = new wchar_t[len]; ::mbstowcs(m_p, p, len); }
~_T() { delete[] m_p; }
operator wchar_t*() const { return m_p; }
};
::_wperror(_T("ふーばー"));
バッファを余分に取りすぎる場合がありますが、短く書きたかったので。
168 :
168 :2005/12/01(木) 16:41:37
教えてください。 cygwinを使用していて/bin/以下で 「ls -al」と打つと、 「drwxrwxrwx+」 という文字が出てきますが、 最後の「+」ってなんですか?
コンソールに表示すると化けるんじゃないでしょうか? マルチバイト文字のリテラルの処理はgccはちゃんとやってるみたいですが...
>>168 スレ違い。
'+'はディレクトリに対して、その他の属性が指定されていると見なせることを示す。
どうやらcygwinの場合はNTFSの場合に'+'がつくようだ。
>>169 マルチバイト文字は別に問題ない。
今話題にしてるのはUnicodeリテラルの問題。
172 :
デフォルトの名無しさん :2005/12/01(木) 21:25:56
iconvを使ったプログラムをcygwin上で書いていて、それを-mno-cygwinでコンパイルしようとしたら iconv.hが見つからないというエラーメッセージが出るようになってしまいました。 gcc -H test.c で見てみると、インクルード先がmingwに変わっているので mingw用にiconvをインストールすればいいんだろうことはわかりますが、 それってどこで拾ってこればいいのですか?
>>173 助言助かりました。おかげで問題なくリンクまで出来ることを確認しました。
175 :
デフォルトの名無しさん :2005/12/01(木) 23:57:04
cygwinとmingwでどれくらいの実行速度の差ができますか?
ほとんどないです
>>175 単に計算させるなら同じで差がでるのはAPI.
cygwinがエミュレーションしてるPOSIXなAPIを使った場合同等の処理をWin32 nativeなAPI
を使うのよりほとんどの場合遅くなる.どのくらい遅くなるかは使うAPI次第なので一概に
どのくらい速度差がでるとは言えない.
質問お願いします。 バージョンの古いGCCで静的ライブラリ(lib***.a)を作ります。 より新しいGCCを使用してコードを書き、このライブラリとリンクすることを考えます。 GCCバージョン間のライブラリ形式の互換性によって、リンクができる場合と そうでない場合があるらしいですが、それは、どこを調べればわかるでしょうか? 「GCC リンカ 後方互換性 ライブラリ static library compatibility gcc version backward」 などで子一時間ぐぐってみましたが、 さっぱりわかりませんでした orz よろしくお願いします。
> ABI GCC
gcc(Cの部分)のABIは昔から変化してないよね、たしか。 g++は3の近辺に断絶があったと思ったけど。 前スレか、gcc関連のどっかのスレで読んだ覚えが。
181 :
178 :2005/12/04(日) 09:38:23
__________ /━━━━━━━━━ \ |┃| ̄ ̄|. 〇 〇 [大月]┃| |┃| ̄ ̄|| ̄ ̄ ̄ ̄ ̄ ̄|┃| プオーン!!! |┃|__||______|┃| |┃ JR ┃| |┗━━━━━━━━━┛| \('A`)/ ミ gccのコンパイル マンドクセ | ━━ ━━ ━━. | ( ) ミ | [中央.特快] | └└ミ | \_/ .| | 〇 ━━━ 〇 | |___________| │ │[=.=]| | └─────────┘
cygwinのコンソールアプリケーションででキーボードイベント(keyup, keydownなど) の取得はどうやればいいのでしょうか?
Win32コンソールにそんな概念あったっけ?
>>185 ありがとうございます。キーボードを鍵盤に見立てた電子オルガンを作れ
という学校の課題がありまして、ノートのオンオフにキーボードイベントが
使えないかと思ったんです。
getch()だとオンは取れてもオフの取り方がわからなかったので質問した
しだいです。
今はGLUTのキーボード関連のコールバック関数を使っています。
187 :
147 :2005/12/11(日) 13:17:07
L"日本語" -finput-charset=cp932 -fexec-charset=cp932 でやっと通った・・・。ちゃんと内部的にもUTF16になってるし。 亀レスだけど、161さんは、-fexec-charset=cp932で通るんじゃないかな?
188 :
147 :2005/12/11(日) 13:19:26
wchar_t ws[] = L"表示"; char mbs[] = "表示\0"; short *mbs_l = (short *)mbs; int i; setlocale(LC_ALL, "Japanese_Japan.932"); wprintf(L"%s\n", ws); printf("%s\n",mbs); for(i=0;ws[i] != L'\0'; printf("%hx ", ws[i++])); printf("\n"); for(i=0;*(mbs_l+i) != 0; printf("%hx ", *(mbs_l+i++))); return 0; 結果 表示 表示 8868 793a 5c95 a68e
ほおー リテラルも実は実装されていたのか。乙 >187
>>187 なるほど…
gcc はどのバージョンでしょうか?
191 :
161 :2005/12/11(日) 15:46:21
>>187 いえ、通りませんが。
gcc のバージョンを教えていただけませんか?
>>191 187 じゃないけどね。
手元の cygwin g++ 3.4.4 では -finput-charset=cp932 -fexec-charset=cp932 で
まともに動いてるみたい。
>161 で言う「ヘンなこと」と、
>187 のオプションをつけても「通りません」っていうのを
もうちょっと具体的に書いてみると、何かわかるかも。
193 :
161 :2005/12/11(日) 16:36:06
わかりました。_wperror だとダメなんです。 ---- std::setlocale(LC_ALL, "Japanese_Japan.932"); wchar_t ws[] = L"表示"; ::_wperror(ws); ::_wperror(L"表示"); std::wprintf(L"%s\n", ws); std::wprintf(L"%s\n", L"表示"); ---- -mno-cygwin -finput-charset=cp932 -fexec-charset=cp932 -fshort-wchar -D_WIN32_WINNT=0x0500 -D_UNICODE -DUNICODE -D_GLIBCXX_USE_WCHAR_T=1 でコンパイル 結果 ---- 表=: No error 表: No error 表示 表示 ----
194 :
161 :2005/12/11(日) 16:42:12
ちなみに、 _wperror だと「表示」のような '\' を含む文字列に限らず、 テストした限りではどんな文字列でも上記のように末尾が欠けます。 また同様に、wprintf ではどんな文字列でも問題ないようです。 _wperror は MSVCRT 固有なので引き渡しがうまくいっていないのかもしれません。 でも -mno-cygwin ですから、wprintf も MSVCRT 由来だと思うのですが…
195 :
147 :2005/12/11(日) 18:54:57
本当だ。
でも、wprintfで表示できてるんだから、MBS定数->WS定数展開は出来てると思う。
単純にwperrorのせいかと。
>>149 これまた亀レスですが、wstring自体は使えますよ?
wcoutがワイド文字対応のC関数が足りていないため使えないというだけで。
int main(){
std::setlocale(LC_ALL, "Japanese_Japan.932");
wstring str = L"wstringテスト";
wprintf(L"%s",str.c_str());
}
196 :
161 :2005/12/11(日) 23:50:39
>>195 > 単純にwperrorのせいかと。
あれからしばらくいろいろ試してみて、そんな気がしてきたところです(w
MBCS → mbcstowcs による変換 → _wperror に与える
でも同じ(まずい)状態になりました。末尾に文字列を連結する部分がうまくないのでしょう。
MBCS で言えばシングルバイト文字である文字だけで構成されている場合のみ問題が起きません。
他の非標準関数ではいまのところ問題を発見できていませんが、
MSVCRT 由来のものや Windows API では、なにか問題が起きることがあるかもしれません。
しかしgccのせいではないでしょう。
以前から -finput-charset=cp932 -fexec-charset=cp932 でのテストも
行っていたのですが、大半は _wperror を使っていたのが災いしました。
おかげで助かりました。どうもありがとう。
うほ、いけるのか・・・試した人GJ
198 :
デフォルトの名無しさん :2005/12/15(木) 13:07:49
g++ (GCC) 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125) を使っているのですが template <typename T> struct NumericTypeInfo {}; template <> struct NumericTypeInfo<int> { typedef long LongerType; typedef short ShorterType; }; template <> struct NumericTypeInfo<short> { typedef int LongerType; typedef char ShorterType; }; template <> struct NumericTypeInfo<long> { typedef long long LongerType; typedef int ShorterType; }; template <typename T> T TestFunc(T val) { #if 0 NumericTypeInfo<int>::LongerType tmp = val; // これは大丈夫 #else NumericTypeInfo<T>::LongerType tmp = val; // コンパイルエラーになる... #endif tmp << 8; tmp >> 8; return tmp; } これでコンパイルエラーになります。コンパイラのバグでしょうか?
>>198 -NumericTypeInfo<T>::LongerType tmp = val; // コンパイルエラーになる...
+typename NumericTypeInfo<T>::LongerType tmp = val; // コンパイルエラーになる...
200 :
198 :2005/12/15(木) 14:43:44
>>199 あ”~!typenameが必要だったんですね!!
どうみても 鳥山「ヤムチャ…?」 状態です。
本当にありがとうございました。
201 :
デフォルトの名無しさん :2005/12/21(水) 11:32:16
今までC中心で使ってきたのですが、 新たにJavaを勉強しようと思い、gcjを入れてみたのですが gcj -C Sample.java java Sample としても動きません。Hellow World!を表示させたいのですが・・・
202 :
ペンギン :2005/12/21(水) 13:34:05
cygwin上から startxコマンド実行 エラーメッセージ giving up. xinit: Connection refused (errno 111): unable to c xinit: No such process (errno 3): Server error. 以上のエラーメセージの回避策、ご教授御願い致します。
>>201 うちでは動きました。
Mingw GCC 3.4.2, VMはSunの1.5
>>201 >>203 SunのVM使うならわざわざgcj使う意味ねえだろ…
javac や jikes 使っとけよ…
205 :
201 :2005/12/21(水) 23:44:01
>>204 ありがとうございます
javac Sample.java
でやるとコマンドは認識されていませんと出るので
色々ぐぐって、gcjコマンドで試しにやってみたところ
コンパイルはできるのですが
java Sample
で実行すると
Exception in thread "main" java.lang.NoClassDefFoundError: Sample
と出て実行できません。.classファイルは出来ているのに・・・
>>205 mainクラスの指定が必要だった気がする。
--main=クラス名
こんな感じで。
>>201 javac を使えってのは Sun の JDK をインストールしてそこに入ってるjavacを使えってことだ…
この場合 gcj は必要ない.JDKのインストールや設定が載ってる解説本でも買って読め.
gcj を使って Sample.java をexeにして実行したいっていうなら
gcj --main=Sample -o Sample.exe Sample.java
って感じでコンパイル.できたら
./Sampple.exe
ってやって実行する.
208 :
203 :2005/12/22(木) 19:41:51
>>204 動かないって言うから試しただけなんだけどな・・・
>>205 でもってjavac使うならここは板違い
210 :
デフォルトの名無しさん :2005/12/24(土) 17:14:17
エディタを追加インストールして、emacsを使えるようにしたんですが、 ほかの主な機能は使えるのに、「Ctrl-X Ctrl-C」でファイルを終了させる 機能だけうまくできません。どうしたらいんでしょう?
うおっ -finput-charset=cp932 -fexec-charset=cp932 なんてあったんだ。 今までわざわざ自前のフィルター通してコンパイルしてたよorz
213 :
210 :2005/12/24(土) 20:28:32
214 :
デフォルトの名無しさん :2005/12/30(金) 22:26:58
cygwin で動く g++ は #include <stdexcept> などの ヘッダファイルをどこから読んでいるんでしょうか? /usr/include/c++/3.4/stdexcept とか見あたらないのですが・・・
%find -name・・・ 使って自力で探しませう。
216 :
デフォルトの名無しさん :2005/12/30(金) 22:33:17
/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/stdexcept に見つかりました。/usr 以下しか find してませんでした。
男はwin2kにVMware
>>201 hellow world!ってどんな世界か
ぜひとも見てみたいので今度連れて行ってください。
Hell low world で、日本の意
>>219 オオ!ジャパンノ コトデスカ~!
ツレテッテ クダサ~イ!!!
221 :
デフォルトの名無しさん :2005/12/30(金) 23:16:49
gcc でコンパイルしてもマクロ __GCC__ が定義されて いないような気がするんですが・・・・ Visual C++ でコンパイルするときと切り替えるために、 _MSC_VER と __GCC__ を見ているのですが、 それじゃだめなんでしょうか・・・
223 :
デフォルトの名無しさん :2005/12/31(土) 00:00:07
>>222 __GNUC__ でしたか・・
今 g++ -c -E -dD test.c ってやってみて確認しました。
__GNUG__ なんてものもあるんですね。
つーか、俺、なんで __GCC__ だって思いこんでたんだろ。
あと、この手のマクロって specs に書かれてるものもあるし
そうでないものもあるんですね。
224 :
__GNUG__ :2005/12/31(土) 00:01:36
The GNU C++ compiler defines this. Testing it is equivalent to testing (__GNUC__ && __cplusplus).
225 :
デフォルトの名無しさん :2005/12/31(土) 16:08:33
configureもmakefileもついてるのに分からんとは・・・
まともな脳味噌装備してなかったらそれでもわからんだろうさ
228 :
225 :2006/01/02(月) 16:55:06
makeしようとしたら >Colon expected >Command syntax error と出ました。
インストールの仕方もしっかり書いてくれてるのに
>> 225 げ、あっちとのマルチか。 一応言っとくと、ntl-5.4で試したが、doc/config.txt にやり方がちゃんと書いてある。 この手順でntl.aが生成できたし、make checkも動いたぞ。
231 :
225 :2006/01/03(火) 20:59:19
解決しました。
233 :
デフォルトの名無しさん :2006/01/05(木) 09:16:32
gcc の吐き出すエラーメッセージって Main.c:123: error... のようなフォーマットなんですが、これを D:\AVR\Project1\Main.c(123) : error... のようなフォーマットで吐き出させるようにできませんかね? 標準エラー出力を捕捉して sed などで書き換えるしかないのでしょうか?
>>233 コンパイルするときの入力にフルパス入れれば、
と思ったけど、行番号のフォーマットまで変えるのか。
置換しる。
いまring系のサーバってメンテナンス中?
つ[ICMP]
下記のコードをコンパイルしようとしたところ リンカに _inet_lnaof がないと怒られてしまいました。 何が問題なんでしょうか…… gccのバージョンは3.4.4-1 glib-develのバージョンは1.2.10-3 を利用しています。 #include <stdio.h> #include <arpa/inet.h> int main() { struct in_addr addr; inet_aton("192.168.0.1", &addr); inet_lnaof(addr); }
ライブラリが不足しているのでは?
cygwin でサポートされてないだけっしょ。 あっちゃこっちゃで言及されてるよ。
240 :
デフォルトの名無しさん :2006/01/08(日) 20:00:30
MinGW から UNLHA32.DLL を静的に利用したいのですが、 def ファイルの書き方がわかりません。 (MinGW(mingw-jp-20040224), UNLHA32.DLL(Ver 1.91g)) <やったこと> (1) def 作成。 >pexports UNLHA32.DLL > unlha32.def (2) ライブラリ作成。 >dlltool --def unlha32.def --dllname UNLHA32.DLL --output-lib libunlha32.a (3) コンパイル。 >g++ -c test.cpp >g++ test.o -o test -L. -lunlha32 ちなみにソースはこのような感じ void foo(void) { HARC harc = UnlhaOpenArchive(0, "test.lzh", 0); UnlhaCloseArchive(harc); } ここでエラーになります。 test.o(.text+0x21):test.cpp: undefined reference to `UnlhaOpenArchive@12' test.o(.text+0x9c):test.cpp: undefined reference to `UnlhaCloseArchive@4'
241 :
240 :2006/01/08(日) 20:01:00
(続きです) そこで、def ファイルに問題があると思い、 (4) unlha32.def を書き換え UnlhaCloseArchive UnlhaOpenArchive を以下のように修正↓ UnlhaCloseArchive@4 UnlhaOpenArchive@12 で再度 (2)(3) を行ったところ、今度はコンパイルが通りました。 しかし実行してみると、 test.exe - エントリ ポイントが見つかりません プロシージャ エントリ ポイント UnlhaCloseArchive@4 が ダイナミック リンク ライブラリ UNLHA32.DLL から見つかりませんでした。 というメッセージが出て終了してしまいます。 def の書き方が良くないのでしょうか? (長くてごめんなさい)
>>240 extern "C" しないとまずいんとちゃう?名前マングリングされるから。
243 :
240 :2006/01/08(日) 20:51:40
>>242 extern "C" は UNLHA32.H に入っております
dlltoolで-k (--kill-at)を付けたら?
245 :
240 :2006/01/08(日) 22:16:23
>>240 できました!
ありがとうございます。今夜はぐっすり眠れそうです。
246 :
240 :2006/01/08(日) 22:17:19
>>238-239 ありがとうございます
ヒントをいただいて、libc.aをobjdumpしたらinet_lnaofがありませんでした
cygwinは捨てることにします
ちょいと質問。 cygwin1.dllを使わないように-mno-cygwinつけるとnet関係を中心にコンパイルが通らなくなるけど、 これって要は、その辺(net関係)の関数の実体がcygwin1.dllに入っているってことなのかな? それと、GPLに準拠(つーかオープンソースライセンスか)するならcygwin1.dllを 配布(或いは利用者に拾ってもらう)してもよいと考えていいのかな?
まずcygwin1.dllってのはだな(ry
それでスタートアップルーチンからdll_crt0関数をだな(ry
もうソースだけ配布したら?
そろそろ 3.4.5 リリース
オフィシャルでは 3.4.6 が1末を目標に出てくるのに、3.4.5 が RC だなんて。。。 つか、RC ばっかりで正式版が出てこない最近の MinGW っていったい。。。
失礼1末は2末の間違え。
255 :
デフォルトの名無しさん :2006/01/19(木) 01:20:24
昨日からC言語を始めて初歩のプログラムを書いてます。 内容は /* MyC.c */ #include <stdio.h> int main(void) { printf("My C Program\"); return 0; } という簡単なものなのですが これをgccでコンパイルしようとしたところ No include path in which to find stdio.hと表示されてしまいます。 どうすればコンパイルできるようになるのでしょうか?
>>255 まずはコンパイルするためのコマンドラインを確認。
それだけのプログラムなら
gcc MyC.c -o MyC.exe
で MyC.exe が出来上がるはず。
それでもダメなら、
gcc -v -fsyntax-only MyC.c
とかやって、正しくインストールされているか調べて対応する。
┐(´ー`)┌
まあガンガレ
259 :
デフォルトの名無しさん :2006/01/19(木) 13:40:12
>>256 助言ありがとうございます。
> gcc MyC.c -o MyC.exe
>で MyC.exe が出来上がるはず。
とやってみたのですがやはりmyc.c:2: No include path in which to find stdio.hと表示されてしまいます。
> gcc -v -fsyntax-only MyC.c
>とかやって、正しくインストールされているか調べて対応する
とやってみたところ、Using bulitin spece.
gcc version 2.9-arm-000512
cpp -lang-c -v -jprefix(省略
GNU CPP version 2.9-arm-000512 (Thunb/elf)
#include ",,," search starts here:
End of search list.
myc.c:2: No include path in which to find stdio.hと表示されてしまいます。
と出てしまいます。
スレ違いでしたら誘導お願いします。
>>259 そのgcc、どうやってインストールしたの?
初心者がいきなりarmにthumbだって? お前ゲーム製作板に帰った方がいいんじゃねえか?
mingwの方が初心者にはいいような。
>>255 -printf("My C Program\");
+printf("My C Program\n");
264 :
デフォルトの名無しさん :2006/01/20(金) 00:19:28
「GCC コンパイラ 利用」でグーグル検索してそれらしいところを読んでインストールしました。
armとかはゲーム専用のコンパイラなのですか?
日本語で詳しく解説されている所がなかったのでとりあえず利用してしまったのですが・・・。
よく読んだらGBAの開発サイトでした。
で今度はBorland C++ Compilerを使うことにしました。
そのFQAをみてみたら同じような問題がありまして解決できました。
includeの場所を示すファイル自体が設定されていないのが原因だったようです。
>>260-263 皆さん色々とありがとうございました。
タイトルにあるコンパイラを使わなくなってしまったのでこれにて失礼いたします。
265 :
261 :2006/01/20(金) 02:07:01
予想していたことがそのままどんぴしゃで当たってたわけだな。 GBAプログラミング研究所のチュートリアルを見て入れたgccだろうと思って ああ書いただけであって、ARMはゲーム専用ってわけじゃない。 もう見ることは無いんだろうけど一応。
-Iでインクルードパス指定したらあかんの?
>>266 コンパイル通ってもできあがるのはARM用だからWindowsじゃ動かんし。
268 :
デフォルトの名無しさん :2006/01/20(金) 10:32:07
素人な質問をしてしまって申し訳ありませんが、 cygwin上でfortran90のコンパイルって可能なのでしょうか? g90みたいなものって存在しているのですか? マニュアルから-ff90なんていうオプションを付けてみたのですが 効果なしでした・・・。
cygwinの質問です。 まず、前提を書きます。 1.俺はXウインドウを使っていますが、それがどういう仕組みで 動いているか全く分かってない人間です。 2.cygwinが動作しているクライアントのIPはA.B.C.Dであるとし ます。(DOS窓のipconfigで確認した値) cygwinをフルインストールして cygwin\usr\X11R6\bin\startxwin.bat を実行したところ、Xウインドウっぽいウインドウが出ました。 そこで xterm & を実行すると、クライアントのxtermが正常に実行 されます。 次にrloginで別のUnix端末にアクセスし、 xterm -display A.B.C.D:0.0 & を実行したのですが、"ディスプレイ A.B.C.D:0.0 に表示できません" と言った旨のエラーが出て正常動作しません。 "startxwin.bat" 中の "run XWin -multiwindow..." の "-multiwindow" を削除し、ウインドウマネージャをtwm(fvwm2も試した)にしても状況は 変わりません。 同じクライアントに Exceed というXアプリケーションが入っていますが、 こちらはrloginでUnix端末にアクセスし"xterm -display A.B.C.D:0.0 &" しても正常に動作します。 cygwinのXWinで正常にUnix端末のxtermが起動しないのは、そういうものな のでしょうか? それとも何かの設定をいじる、もしくはxtermのオプショ ンを変える等で正常に動作するものなのでしょうか?
>>270 E.F.G.H.をリモート端末のIPとすると、ホストから
xhost +E.F.G.H
272 :
270 :2006/01/20(金) 20:20:30
>>271 すばやい回答ありがとうございます。助かります。
現在家から書き込んでいて270の環境にないので、月曜に確認し、
追って結果報告させていただきます。
スレ違いな報告はいらない。
274 :
268 :2006/01/21(土) 04:46:29
269様、 ありがとうございました。 おかげ様で gfc でコンパイルできるようになりました。 追加の質問で申し訳ないのですが、 コンパイラをgfcとした時に、 cygwin上でbig_endianでのin/outputを 扱いたいのですが可能でしょうか? 知ってるオプションetcは一応試したのですが・・・。
arigatou sawada
mingw と gcc 3.4.4 でコンパイルに挑戦しています。
対象はmutellaというコマンドラインのgnutellaサーバントです。
http://mutella.sourceforge.net/ 必要なライブラリは別途mingwPORTを用いてインストールしました。
実際にコンパイル作業に入ると ./configure で
checking for socket in libc... no
checking for socket in xnet... no
configure: error: We cannot live without socket() function!
と表示され処理が中断してしまいます。config.logを見ると
configure:7352: checking for socket in libc
configure:7377: g++ -o conftest.exe -g -O2 conftest.cc -lreadline -lz >&5
conftest.cc:32:26: sys/socket.h: No such file or directory
と表示されsocket.hが見つからないというメッセージが出力されていました。
どのようにしたら、コンパイルを成功させることができるかおわかりの方、
よろしくお願いいたします。
>>277 ソケットを使うプログラムだったら、そのプログラムがWindowsで動く
ように書かれていない限り自分でコードを書かずにMingwでコンパイル
するのは無理だよ。
Cygwinだったらできるかもね。
>>278 ありがとうございます。cygwinで試してみます。
Mingwでwinsock使うには何か特別なことが必要なんでしょうか? undefined referenceエラーがでてコンパイルできません。 gcc -lws2_32 -lwsock32 -omain main.c C:\DOCUME~1\xxxx\LOCALS~1\Temp/cccXaaaa.o(.text+0x5a):main.c: undefined reference to `WSAStartup@8' C:\DOCUME~1\xxxx\LOCALS~1\Temp/cccXaaaa.o(.text+0x6d):main.c: undefined reference to `gethostbyname@4' C:\DOCUME~1\xxxx\LOCALS~1\Temp/cccXaaaa.o(.text+0x1d4):main.c: undefined reference to `WSACleanup@0' collect2: ld returned 1 exit status
インクルードパスとライブラリパスのオプション位置はそこなんだけどねぇ。
>281 gcc -otest test.c -lws2_32 で通った。 thanks
284 :
280 :2006/01/23(月) 09:44:54
>281 gcc -otest test.c -lws2_32 で通った。 thanks
cygwin1から getreent.o、nl_langinfo.o、nanosleep.o、・・・とか、いくつかがめてきて、 msys-1.0.dllにリンクさせると恐ろしくサクサクになったぜ! 道のりは険しいが皆も試してみ!config.hでHAVE_*消しまくり
>>287 GJ!
本家にfeedback
てか msys update されないねえ…
すれ違いかも知れませんがちょっと質問させてください。 Lame9.72b2をMinGW+gcc3.4.2でコンパイルしたんですが、バイナリのサイズがrarewares等で配布されている ものと比べるとかなり大きく200kBに対して900kBぐらいの大きさになります。 rarewaresではICL4.5を使用しているみたいですが、コンパイラによってこんなにサイズが違ってくるものなのですか?
単に strip ?
>>290 stripオプション付けてコンパイルしたら306kBになりました。
ありがとうございました。
後は最適化の違いかな?
インライン展開とかかな。
単にupxだったりして。
MinGW+MSYS でicu3.8 のコンパイルとインストールを行った後に icu-config がライブラリが見つからない旨のエラーを出して使えない… MSYSでは無理なのかな。
>>296 レスありがとう。
調べてみたのですが作られるライブラリが.dllになっていて
icu-configに必要なlibicu*.a が行方不明のようでした。
一体どこに行ったのやら…。--staticつけてもダメみたいで
298 :
デフォルトの名無しさん :2006/02/04(土) 00:32:36
g++ (GCC) 3.4.4 (cygming special) を使ってます。 少しでも include 不足があったらコンパイルエラーにするようなオプションってありませんか? #include <cstdio> を忘れて printf を使ってコンパイル通るのが困るのですが…….
MinGWのCandidateにgcc3.4.5が上がっているけど、まだ手を 出さない方がいいかな?
>>298 -wallで出てきたウォーニング全て潰すのじゃ駄目なのか?
301 :
300 :2006/02/04(土) 05:58:32
おっと。 -Wall だった。 それと --fatal-warnings が使えるかもしれない。
-Werror-implicit-function-declaration はC++じゃ有効じゃねえかんねえ
そもそも、あるヘッダの中でほかのヘッダを #include してることがあるから、 完全にチェックするのは無理 違うコンパイラだとヘッダの依存関係が変わるから、 gcc で通ってもほかで駄目という移植性のないコードにならないよう、 必要なヘッダを網羅しているかどうか注意深くチェックするしかないと思われ
まずinclude漏れというのを定義すれ。 定義できたらそれをチェックするプログラムを自分で作れ。
/* include漏れchecker 1.0 */ #include <foo.h> #include <bar.h> // *.h 全部書く int main(void) {return 0;}
makedepend
>>299 3.4.4に3.4.5を入れて3~4MBのソースを再コンパイルしてみたけど
こちらでは特に問題なかったよ。
>>298 プロトタイプ宣言無しに関数が呼ばれたら、ワーニング出せって事?
イマイチ、言ってることが分からんのだが。
>>298 みたいな変な希望を無理矢理叶えるなら、全部インクルードした後に
#define printf std::printf
とするとか?
310の国語力の貧困さを救う役には立たないな。
312 :
309 :2006/02/05(日) 18:44:31
ん?いや、 309 の通りにしても 「#include <cstdio> を忘れて printf を使ってコンパイル通る」 という状況は解決しないだろ?
名前間違えた。ほんとは 310 。ゴメン。
314 :
デフォルトの名無しさん :2006/02/23(木) 06:32:34
gcc って、エラーメッセージの出力形式を 何か設定変えることでいじることって出来ましたっけ? 出来ればいじって Visual C++ 互換にしたいなぁ、と。 今、Visual Studio 2005 のメイクファイルプロジェクトで cygwin の make + gcc/g++ つかって開発してるんですが、 コンパイル結果からエラー該当行にジャンプすることが できれば便利だなぁ、と思って。
それくらいならgccのソースコードを書き換えるのも難しくないでしょ。
MinGW日本語版
https://sourceforge.jp/projects/mingw-jp Snapshot mingw-jp-20040224 2004-02-24 12:50
を使って
#include <stdio.h>
main()
{
printf("表示1\n");
}
を
gcc testgcc.c -o test.exe
とコンパイルすると
testgcc.c:4:8: warning: unknown escape sequence: '\216'
とwarningがでて、実行すると
侮ヲ1
と化けてしまいます。
どうすればきちんと"表示1"と表示させられるんでしょうか。
何かShiftJISを使うためのオプションや必要な環境設定があるんでしょうか?
317 :
316 :2006/02/23(木) 19:41:09
318 :
デフォルトの名無しさん :2006/02/26(日) 23:51:45
CygwinにPARI/GPを入れようとしてmake installしたら以下のようなエラー メッセージが現れました。どうすればいいんでしょうか? cd Ocygwin-i686; make install make[1]: Entering directory `/usr/local/pari-2.1.7/Ocygwin-i686' /usr/bin/gcc -c -O3 -DGCC_INLINE -Wall -Wno-implicit -fomit-frame -pointer -I. -I../src/headers -o mp.o ../src/kernel/none/mp.c In file included from ../src/headers/pari.h:73, from ../src/kernel/none/mp.c:23: ../src/headers/paricom.h:100: error: parse error before '/' token make[1]: *** [mp.o] Error 1 make[1]: Leaving directory '/usr/local/pari-2.1.7/Ocygwin-i686' make: *** [install] Error 2
cd pari-2.1.7 ./Configure make install
320 :
318 :2006/02/27(月) 21:05:43
>319 cd pari-2.1.7 ./Configure make install とすると318のエラーメッセージが出るんです。
どなたか dsp2make持ってないだろか 昔あったところがなくなってる yo
MinGW-5.0.2でSTLport-4.6.2のiostreamがビルドできないyo ググっても情報ないし、なんで俺だけ non-template 'rebind' used as template ってソースが間違ってるってことじゃないのか?
>>323 MinGW って gcc だろ。そうなると STLport を使う意味がわからん。しかも古いのを。
325 :
デフォルトの名無しさん :2006/03/11(土) 21:28:09
MinGWでDwarf2が有効なgccをビルドするにはどうすればいいですか
cygwinのgccにバージョン4.xが入るのはいつ頃なんでしょうか?
>>326 今からビルドすれば明日か明後日ぐらいには入るんじゃね?
自分の環境(AthlonXP-M 1800+)だと熱暴走しそうになるんで途中に30分の (団扇を振る腕の)休憩挟んで--enable-languages=c,c++で4時間って所だったか。
今の季節は外に出しときゃいいよ 静かになるしマジお勧め
TextSS のWindowsXP(Professional)64bit化おながいします もしくは64bitにネイティブ対応したテキスト置換ソフトありますか? そういや64bitにネイティブ対応している2chブラウザてありましたっけ?
333 :
デフォルトの名無しさん :2006/03/21(火) 21:52:19
334 :
デフォルトの名無しさん :2006/03/21(火) 22:12:17
335 :
デフォルトの名無しさん :2006/03/21(火) 23:56:39
4.xのクロスコンパイル環境の作り方は見かけない。 3.xは見かけるけど、古い。 newlibがないと大変かも? mingwなクロス環境を作る時は、cygwinの環境で作るほうが楽かもしれない。コツがあるけど。 cygwinな環境でmingwなクロス環境を作る時は、 newlibはシンボリックリンクはしないほうがいい。 時間と気力があれば、3.xの情報でなんとかなる。 あと、ターゲット書いてね。
337 :
デフォルトの名無しさん :2006/03/22(水) 14:16:35
コメントありがとう。 newlibが探したけど見つからない。 なんかマイコン毎に変わるみたいだから、どのみち自分ででっち上げないと駄目かも。 ポートアクセスにprintfとか使うのって違和感感じるので、それはそれで良いかも。
GetGnuWin32を使ってGnuWin32をインストールしようとしてるんですが、download.batを 実行すると sed.exe アプリケーションエラー "0x780109b3"の命令が"0x00492000"のメモリを参照しました。 メモリが"read"になることはできませんでした。 とエラーが表示され終了してしまいます。解決方法はありますか。
はい
341 :
デフォルトの名無しさん :2006/03/32(土) 15:24:24
どなたかアドバイスお願いします。 今、cygwinとperlを使って巨大なデータを処理しています。 データを処理する際に、grepコマンドを使っているのですが、 1つ目の処理するファイルではgrepコマンドは正常に動いているようなのですが、 次のファイルの処理に移ると、 「Usage: grep [OPTION]... PATTERN [FILE]... Try `grep --help' for more information.」 と返され、以後のファイルも同様の表示が出て処理できません。 パターンにマッチする文字列が多いから絞れってエラーだとは思うのですが、 データが巨大なため、grepで文字列の指定を増やすことはできません。 プログラムにバグはないです。 cygwinの設定を変えればいいのかな、とは思うのですが具体的にどうすればいいのかわかりません。 どなたかよろしくお願いします。
コマンドラインの文字数は有限だから、どうしようもないんじゃないの。
ともかくコマンド引数が正常になってるかを確認しれ
>>341 xargsを知ると道が開けるかも知れん。
345 :
339 :2006/03/32(土) 18:42:55
347 :
339 :2006/03/32(土) 22:30:34
348 :
デフォルトの名無しさん :2006/03/32(土) 23:01:33
俺も別人です。
使えねーよなUNIXのコマンド群て
>>349 そういう香具師に限って使いこなせてないことも多いものだということだね。
>>341 コマンドラインはココには書けないん?それだと、何が悪いか全然わからん。
352 :
341 :2006/04/02(日) 11:53:14
>>342 ,343,344,351さん
遅いですが、アドバイスありがとうございました。
データファイルの置き場?に問題があったみたいで、別のところへ置いて実行したら思い通り動きました。
どうやら、grepコマンドを実行するときは、そのディレクトリにあるファイル数が多すぎるとだめみたいです(とは言っても100ぐらいだったのですが(;´Д`))。
ありがとうございました。
>>352 だから、例えば'*'の展開でコマンドラインが長くなりすぎたんだろ。
それを制御するのがxargsだってばよ。
文字列に「表」という文字を入れると 「unknown escape sequence: '\225'」というエラーが出るのですが、これはgcc特有の問題なのでしょうか? それともC言語の仕様なのでしょうか?
>>356 バージョンが 3.4 以降なら -finput-charset 使え。
「質問にやさしく親切に答えてくれるスレ 2」に書き込んだところ見事にスルーされてしまったため、 こちらで質問させて頂きます。もしかしたらとんちんかんなことを言ってるのかもしれません……。 MinGW 5.0 で C++ を使っているのですが、 DLL に依存しない、というよりは CRT ライブラリをリンクしない方法はあるのでしょうか。 リンカオプションで「-nostdlib」やらを指定しても、 エントリーポイントが CRT ライブラリ内にあるようでそこから書かないとダメそうです。 なのでリンカスクリプトからごりごり書いてエントリーポイントだけアセンブラで、と思ったのですが、 参考になる資料、若しくはこういう方法のほうがいいよとか、やる意味ないよ、 みたいなことを教えてくれると嬉しいです。よろしくお願いします。
361 :
360 :2006/04/05(水) 15:47:49
書き込んでから気付いたのですが、意味がなくてもやりたいと思っております。
crt1を自前で用意すればいい。
363 :
デフォルトの名無しさん :2006/04/05(水) 19:36:44
誰か
>>325 わかるひといます?
MinGWのサイトでバイナリ公開されてるけど3.4.5
わたしは4系列が欲しいのです。
ない。バイナリがほしいなら、自分でビルドしろ。
だからそのビルドの方法を…
>>366 ありがとう。
でも展開してみましたがlongjmp式の例外でした。
Dwarf2というものを試してみたいので…。
>>362 お返事ありがとうございます。
ただ、そのスタートアップルーチンの作り方が分からないのです……。
簡単に出来るのでしょうか?
dwarf2ってバイナリの形式(つか埋め込む情報の形式)であって 例外の実装とは関係ないと思うが。
ある(らしい)んですよ、dwarf2-EHとかいって 例外を発生アドレスからの固定テーブル引きで飛ばせるようなのが。
>>368 mingw-runtimeだかのソースを見てみれば、そこに入っていると思う。
簡単かどうかは人によるのでなんとも言えない。基本的になれることだと。
372 :
339 :2006/04/06(木) 19:40:37
>>370 何を調べて何が分かったか、どこで躓いてるか書いてみれ。
>>373 調べたこと…なんかDwarf2 Exception Handlingとかいうのがあって
例外発生アドレスからの逆引きでハンドラを探すため
longjmpと違って関数呼出しごとのスタック登録なんかが不要で
zero-cost exceptionとも呼ばれることもあるらしい。
躓いているところ…ELFではデフォでDwarf2らしいが、
MinGWのようなそうじゃない環境で、どうやって有効にするかわからん。
以上です。
>>374 同じ関数が違うルートで呼ばれる場合もあるのだからスタックはやはり必要ではないか。
一箇所からしか呼ばれないものが対象?
えーと、どんな最適化がかかっていても、retで戻る限りリターンアドレスは 必ずスタックのどこかにあるので、スタックを可変サイズで確保とかやってないかぎり アドレスとスタック消費量の対応表があればどうにかなるんじゃないでしょうか? (100%想像)
binutils,gcc,newlib,gdbインストール時のconfigureのオプションで --target=○○-elfとか指定する話でしょうか? インストールしたコンパイラを使用する時のオプションでは -gdwarf-2とか指定したり、 あと、リンカスクリプトでも OUTPUT_FORMAT(bfdname) をelfで指定するんでしたっけ。 あ、objcopyのオプションにも -O bfdname とかありましたっけ。 あと他にも何かあったような。 勘違いでしたらすみません。 elf とか dwarf とか勉強したいんだけど。 どこか優しく解説したサイトってないものでしょうか。猫でも解かるような
378 :
360 :2006/04/07(金) 07:10:59
MinGW Runtime ソースやら Makefile やらを眺めて色々やったところ、 一応「-nostdlib」を指定した際の警告ととエラーは消え、無事にできたようです。ようなのですが、少し不安です……。 下にソースとコンパイルオプションを書きますが、 C ではなく C++ でコンパイルする(拡張子を .cpp にするか g++ を使う)と警告が出ます。 どちらでも一応動くようですし、ダンプしたら無駄がなくなっていた(と思う)のですが、問題はないでしょうか。 // main.c #include <windows.h> void WinMainCRTStartup() { MessageBox( NULL, "WinMainCRTStartup()", "Info", MB_OK); ExitProcess(0); } // gcc -o main.exe main.c -mwindows -nostdlib -s -Wall -lkernel32 -luser32 // g++ -o main.exe main.c -mwindows -nostdlib -s -Wall -lkernel32 -luser32 C:\Program_Files\MinGW\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.e xe: warning: cannot find entry symbol _WinMainCRTStartup; defaulting to 00401000
そのwarningはリンカーが出してる。動きそうな気がするけど?
>360 extern "C" void WinMainCRTStartup(); と宣言すればいいみたい
382 :
377 :2006/04/07(金) 21:28:02
>>381 私は
>>374 ではなく通りすがりですけど、感謝です。
便乗での質問だったのですが、私にはとても難しすぎでした。
Dwarfの前に、C言語から順序良く勉強を始めようと思います。
大変失礼しました。
>>381 感謝です。
でもMinGWで、Dwarf2-EHを「有効にする方法」を知りたいのです…。
Candidateの3.4.5と提示いただいたGCC with Dwarf2-EHの
ビルド手順の差(4.x系使いたいので)と後者の使い方、です…。
板違いなのかもしれないですが M$の Tool kitのスレでは反応が無かったので、質問させてください。 gdkはcygwinでコンパイルリンクした環境はデバッグできると思いますが、 Microsoft Visual C++ Toolkitのclとlinkでコンパイルリンクしたものもデバッグする方法ありますか?
>>380 おお、ありがとうございます。
一々拡張子やらを弄らずに無事コンパイル出来ました。
388 :
デフォルトの名無しさん :2006/04/20(木) 22:49:25
cygwinって実行結果の保存はどうやるのですか? script ファイル名 ENTER では駄目なので、どなたかご教授願います。
>
>>388 cygwinでもscriptは動くと思うので、インストーラで探してみたら?
#私の環境でもインストールされていなかった。
>>388 えと、
>>389 の意味はわかるよね?
表示しつつファイルに落としたいんなら、
コマンド | tee ログファイル名
か
コマンド 2>&1 | tee ログファイル名
地味すぎ?
inetd+sshd入れて、ttsshやputtyでlogとりながらlocalhostにloginする。
> script ファイル名 ENTER >では駄目なので、どなたかご教授願います なんでscriptがダメなの?入ってなかっただけ?
394 :
390 :2006/04/22(土) 14:12:02
>>393 取り敢えずディフォルトインストールには入っていないし、
それらしい項目もインストーラでリストアップされていない。
恐らく>388の環境でもインストールされていないと思われるのだが、
どこにあるのかまでは調べていない。
ディフォルトゆーな
デファゥルト
397 :
390 :2006/04/22(土) 17:33:12
>>395 あ、すまん。ちょっと耳元でディフォルト言う香具師がいたもんで、つられたようだ。
#普段はデフォルトと書くんだがなぁ……
>>396 発音を再現しようとする試みは適当なところで妥協するほうがいいと言う見本だね。
本気でカタカナ化したら ディフォールトゥ
必殺技みたいだな
util-linuxにscript入ってるよ
401 :
デフォルトの名無しさん :2006/04/23(日) 02:22:00
>>390 今度は全ての項目をインストールしたのですが、できませんでした。
>>391 まだプログラミング初心者なので、そちらのコマンドはよく理解できませんでした。
、、、すみません orz
とりあえず
>>400 で調べてみようと思います
404 :
デフォルトの名無しさん :2006/04/24(月) 21:36:43
cygwinでヘッダファイル読み込みのプログラムをコンパイルしたところ $ gcc Sample8-13.c -o Sample8-13 /cygdrive/c/DOCUME~1/Owner/LOCALS~1/Temp/cci9l7MR.o:Sample8-13.c:(.text+0x76): u ndefined reference to `_max' collect2: ld returned 1 exit status エラーが発生しました。これはどのようにして改善すればいいですか? (まだプログラミング初心者です。。。)
>>404 gcc に -Wall オプションをつけて、表示された警告を見て自分の間違いを知るといいよ。
406 :
デフォルトの名無しさん :2006/04/24(月) 22:54:38
それでも前と同じのがでます。 これってヘッダファイルを読み込んでいないこと ですかね?? 何か環境の設定がわるいとか??
>>406 100%いえるのはお前の頭がわるいってこと。
408 :
デフォルトの名無しさん :2006/04/24(月) 23:02:48
>>407 頭悪いって言っても昨日からプログラミングはじめたばっかだし。。。
知識不足なだけです
>>408 > これってヘッダファイルを読み込んでいないこと
そう思ったなら試せばいいのに。
あとは質問の仕方も学ぶことだな。
たいていの回答者にとって自称初心者は激しくウザイ。
自称初心者にMingWは向いてない。 というか、環境重要なC系は初心者には向いてない。 黙って何かスクリプト言語やっといた方がいいと思うよ。 PythonとかRubyとかPHPとか。
>>406 -Wallを付けたら、表示されるメッセージが変わってるだろう?
そのmaxがどのmaxかが問題だな。
gcc3.4.4で以下のようなプログラムを書いたらエラーが出たんだが class A {}; class B {}; class C {}; class T { public: void func(A&, const B&, const C&) const {} }; A getA() { static A a; return a; } B getB() { static B b; return b; } C getC() { static C c; return c; } int main() { T t; t.func(getA(), getB(), getC()); } main.cpp:14: error: no matching function for call to `T::func(A, B, C)' main.cpp:7: note: candidates are: void T::func(A&, const B&, const C&) const C++だと一時的なオブジェクトを暗黙的に作成して参照で渡してくれるもんじゃないの? int main() { T t; A a = getA(); B b = getB(); C c = getC(); t.func(a, b, c); } こう書かないとダメなもんかね…。
>>413 前に似たようなケースに出くわしたことがある。試してないけど多分
-class T { public: void func(A&, const B&, const C&) const {} };
+class T { public: void func(const A&, const B&, const C&) const {} };
じゃないかな?
規格にもあるんだろうけどとりあえず日本語D&EのP107で見っけた。 非constのリファレンスを非左辺値で初期化させることで生じる問題のお話。
416 :
413 :2006/04/25(火) 21:18:32
414,415 そういうことか、納得した! thx
int i; MinGW+MSYSで printf("input\n"); scanf("%d", &i); printf("%d",i); とやったときにinput\nが表示される前に入力を求められるんですけど何故? 同じ実行ファイルでもコマンドプロンプトやcygwinでは思ったとおりになります。
printf()の出力がバッファリングされている所為だと思われるので、fflush()してやればいいかもしれない。
extern __thread int thread_local_storage; を mingw で使う方法はありますか?
Cygwinの-mno-cygiwn環境でgdbリーダブルなcoreを吐く方法ってありますか? もしくは、WINAPIのMiniDumpWriteDumpで吐けるダンプを、 gdbに読み込ませるような方法があれば教えてください。
>>418 msysでやってるとfflushしてもなぜだかバッファから吐き出してくれないんだよねぇ。
422 :
デフォルトの名無しさん :2006/05/02(火) 14:51:08
SCRIPTできねぇえええええええええええええええ なぜだ!?母さん!
母さんパソコンとかわからないから、お父さんに聞いておくれ
msysのホームからじゃなくてコマンドプロンプトでautomakeすること 出来ませんか? プロンプトからだとg++でコンパイルは出来るのですがautotoolsが 使えないみたいなんです
>> 424 俺は sh automake みたいなバッチファイル作ってやってる。
426 :
デフォルトの名無しさん :2006/05/04(木) 18:19:04
父さん!なぜだ!!
CyGNOMEのインスコが特定のパッケージで止まる(´・ω・`)ショボーン MD5チェックは通過してるし…、setup.exeのバージョンが合わないのかな…?
>>425 sh automake
と1行にするのじゃだめなんか?
429 :
デフォルトの名無しさん :2006/05/09(火) 20:14:41
おしえてください。完全初心者です。 Cygwinのセットアップをして実行してみたところ bash.exe - コンポーネントが見つかりません cygintl-3.dllが見つからなかったため、このアプリケーションを開始できませんでした。 アプリケーションをインストールし直すとこの問題は解決される場合があります。 と出て実行できません。 ネットで調べて自分なりにやってみたのですが全く直る気配がしません。 できれば解決の仕方をご教授ください。
430 :
デフォルトの名無しさん :2006/05/09(火) 22:02:31
MinGW + GCC のライセンスってどうなの? 商用可能? よろしくお願いします。
2つ上の人、cygwinのsetup.exeに完全に身を任せてそうなるなら 一旦消して、選ぶところでprevってのチョイスで入れるといい 1つ上の人、詳しくないけど、がちがちのGPLでも商用は問題ないんじゃないの? 義務が課せられるだけで
>>429 bashだけを本家以外のところから取ってきた後、C:\Cygwin\binに
bash突っ込んだと見た。
たとえば日本語対応とか謳ってる奴とか。
私家版bashは古いDLL使ってたり何してるのかよくわからなかったりするので、
あきらめて本家の奴使うほうが良いかと。
あとMingw3.4.2 (g++使用) + W32api 3.6 + binutils 2.15.91で
StackWalk()、Syminitialize()のシンボルがみつからネと怒られるので鬱だ。
エロいひと逃げ道教えてくださいませ。
434 :
433 :2006/05/19(金) 07:38:44
コードはこんなかんじ(某所のソースを試しに打ち込んでみた感たっぷり) LONG StackTracer::WrappedExceptionFilter(EXCEPTION_POINTERS *Exception) { STACKFRAME TargetStack; BOOL WalkResult; PIMAGEHLP_SYMBOLImageSymbol; DWORDDistance = 0; ImageSymbol = (IMAGEHLP_SYMBOL *) malloc( (sizeof (IMAGEHLP_SYMBOL)) * MAX_STACKFLAME_LENGTH ); ImageSymbol->SizeOfStruct = (sizeof (IMAGEHLP_SYMBOL)) * MAX_STACKFLAME_LENGTH; ImageSymbol->MaxNameLength = ((sizeof (IMAGEHLP_SYMBOL)) * MAX_STACKFLAME_LENGTH) - sizeof(IMAGEHLP_SYMBOL); ZeroMemory(&TargetStack, sizeof(STACKFRAME)); // x86のプログラムカウンタを設定(MSDN「STACKFRAME / STACKFRAME64」参照) TargetStack.AddrPC.Offset = Exception->ContextRecord->Eip; TargetStack.AddrStack.Offset = Exception->ContextRecord->Esp; TargetStack.AddrFrame.Offset = Exception->ContextRecord->Ebp; TargetStack.AddrPC.Mode = AddrModeFlat; TargetStack.AddrStack.Mode = AddrModeFlat; TargetStack.AddrFrame.Mode = AddrModeFlat; SymInitialize(GetCurrentProcess(), NULL, TRUE);
while(1) { WalkResult = StackWalk(IMAGE_FILE_MACHINE_I386, GetCurrentProcess(), GetCurrentThread(), &TargetStack, NULL, NULL, SymFunctionTableAccess, SymGetModuleBase, NULL); if (!WalkResult || 0 == TargetStack.AddrFrame.Offset ) { break; } WalkResult = SymGetSymFromAddr(GetCurrentProcess(), TargetStack.AddrPC.Offset, &Distance, ImageSymbol); if (WalkResult) { printf("0x%8x %s()", TargetStack.AddrPC.Offset, ImageSymbol->Name, Distance); } else { printf("0x%8x \n", TargetStack.AddrPC.Offset); } } free(ImageSymbol); return EXCEPTION_CONTINUE_SEARCH; }
436 :
433 :2006/05/19(金) 07:40:41
g++ -Wall -g -LC:/Mingw/Mingw/lib -IC:/Mingw/Mingw/include -lstdc++ -lkernel32 -luser32 -lgdi32 -limagehlp -lpsapi -o "test.exe" callstack.o main.o test.o callstack.o: In function `ZN11StackTracer22WrappedExceptionFilterEP19_EXCEPTION_POINTERS': D:/sample/Win32_StackTrace/callstack.cpp:40: undefined reference to `_imp__SymInitialize@12' D:/sample/Win32_StackTrace/callstack.cpp:45: undefined reference to `_imp__SymGetModuleBase@8' D:/sample/Win32_StackTrace/callstack.cpp:45: undefined reference to `_imp__SymFunctionTableAccess@8' D:/sample/Win32_StackTrace/callstack.cpp:45: undefined reference to `_imp__StackWalk@36' D:/sample/Win32_StackTrace/callstack.cpp:55: undefined reference to `_imp__SymGetSymFromAddr@16' collect2: ld returned 1 exit status make: *** [build] Error 1 長くて申し訳ない orz
>>436 g++ -Wall -g -LC:/Mingw/Mingw/lib -IC:/Mingw/Mingw/include
-o "test.exe" callstack.o main.o test.o
-lkernel32 -luser32 -lgdi32 -limagehlp -lpsapi
438 :
433 :2006/05/19(金) 21:14:55
439 :
デフォルトの名無しさん :2006/05/25(木) 21:13:02
Win32APIで、C/C++の実戦的なアプリ開発、または、 勉強をしている方々、ぜひ、MinGW + GCC を、お試し下さい。 世の中、Windowsだけでないことが実感できます。 Linuxでのプログラミングにも役立ちます。GCCは、 一企業の枠内におさまらない、グローバル・フリーなC/C++処理系。
?
441 :
デフォルトの名無しさん :2006/05/25(木) 21:31:03
いや、MinGW + GCC を学んで、 Linux(Fedora Core 5)へ行こう。 そういう、意味です。悪しからず。
何の罰ゲームですか?
それをこのスレで言う意味がどれくらいあるのかと
444 :
デフォルトの名無しさん :2006/05/25(木) 23:23:43
あの無料のVC++EEでもWin32APIベースの開発は可能。 だが、あれは、NetFrameWork2.0を花粉としてあちこちへ 運んで欲しいという願いを込めてMSが配布したもの。 基本的に、あれでコンパイルした従来のWin32APIベースのソフトは、 NetFrameWork2.0がインストールされていないPCでは起動しない。 その点、MinGW + GCC はWin98でもWinXPでも、たぶん、Win2000でも、 NetFrameなんだらが、あってもなくても動く。 MinGW + GCC は、WinだろうがLinuxだろうが、垣根を越えて使える、 が、VC++系の処理系は、Windowsで閉じていて、なお、・・・。
GCC4.1.1がリリースされてるね. MinGWで使えるようにコンパイル中……
謎解きみたいな質問で申し訳ないのですが。 あるアプリケーション(ハードウェアのツールです)で外部ファイルとして dll を用意し、 そのアプリケーションで所定の手続きを行うと、用意したdll内部の関数を呼び出すこ とが出来ます。 このdllをmingwのgccで下記のように作成したところ正常に動作しました。 gcc -c -o hoge.o hoge.c gcc -shared -o hoge.dll hoge.o 全く同じ方法でcygwinのgccでdllを作成したところ正常に動作しませんでした。 上記の状況は何故起こるのでしょうか? 尚、Hellow world のような普通のアプリケーションはmingwでもcygwinでも、同じよう に正常動作します。
448 :
デフォルトの名無しさん :2006/05/26(金) 22:31:11
個人的に、MinGWとCygwinって別物って感じがするんだよね。 MinGWは商用利用可なのに、Cygwinは商用利用不可。 いまどき、Visual Studio 2005 Express Editionですら商用利用可なのに、 Cygwinの商用利用不可ってのは時代遅れなんじゃないのって言いたい。 やはりこれからの時代はMinGW。 ま、Cygwinもライセンスを緩めてくれたらそれでいいんだけどね。
GPLは商業利用を妨げてはいません。GNU/Linuxディストリを売ってる企業はたくさんある
別物じゃん。
正直c/c++コンパイラとしての機能だけが欲しいならば、cygwinを選ぶ 必要性は全く無い気がしますね。 cygwinの様々な価値はその点を補ってあまり得るとも感じますが。
すみません…今日cygwin2.510.2.2を入れたんですが、すべてデフォルト設定で入れたところ、 gccコマンドを使おうとすると bash : gcc : comand not found とでました。何を追加して入れればいいんでしょうか??
gcc
マジかよ
ワロス
>>451 そこでいう商用利用っていうのは、パッケージ製品のような
「ソース非公開でバイナリのみの有料頒布」といったケースのこと。
そもそもcygwin.dllはGPLだから、原理的にこういう配布形態を取り得ないので、
その回避手段として、非GPLなライセンスでも頒布してるよって話。
Qtなんかと同じこと。
GPLだから嫌なんだって話は別スレでやってね。
mingwはpublic domainといってるけど、日本の著作権法では
確かpublic domainという概念自体がないので、実際どうなるんだっけね。
まあ何やっても文句言われたりすることはないだろうけど、
素直にBSDとかMITのライセンスにすればいいのにと思うことはある。
459 :
デフォルトの名無しさん :2006/05/27(土) 20:18:53
STLport4.6.2というライブラリをcygwinでmakeしたいのですがリンクで失敗してしまいます
libcygwin.a(libcmain.o):: undefined reference to `_WinMain@16'とメッセージがでます
ttp://www.sixnine.net/cygwin/translation/faq/faq_3.html#SEC91 上記のサイトに対処方法が書かれていたのですが
-lmをうしろに置いたり何もしないWinMainをdll_main.cpp(STLportのソース)に書いたりしたのですが解決しませんでした
下記が失敗したコマンドとメッセージです
c++ -o ../lib/libstlport_cygwin.dll.4.6 -I../stlport -W -Wno-sign-compare -Wno-unused
-Wno-uninitialized -O2 -D_STLP_USE_DYNAMIC_LIB -Wl,-d
../lib/obj/cygwin/ReleaseD/dll_main.o ../lib/obj/cygwin/ReleaseD/fstream.o ../lib/obj/cygwin/ReleaseD/strstream.o
../lib/obj/cygwin/ReleaseD/sstream.o ../lib/obj/cygwin/ReleaseD/ios.o ../lib/obj/cygwin/ReleaseD/streambuf.o
../lib/obj/cygwin/ReleaseD/stdio_streambuf.o ../lib/obj/cygwin/ReleaseD/istream.o ../lib/obj/cygwin/ReleaseD/ostream.o
../lib/obj/cygwin/ReleaseD/complex.o ../lib/obj/cygwin/ReleaseD/complex_exp.o ../lib/obj/cygwin/ReleaseD/complex_io.o
../lib/obj/cygwin/ReleaseD/complex_trig.o ../lib/obj/cygwin/ReleaseD/complex_io_w.o ../lib/obj/cygwin/ReleaseD/string_w.o -lm
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libcygwin.a(libcmain.o):: undefined reference to `_WinMain@16'
collect2: ld はステータス 1 で終了しました
460 :
459 :2006/05/28(日) 17:51:09
461 :
デフォルトの名無しさん :2006/05/28(日) 21:30:00
>>460 stlportとのdynamic link成功してますか?
自分も460に書かれてる修正をほどこしてstlportのビルドには成功したのですが
helloworldでdynamic linkすると失敗しちゃいます(staticは成功
ほんらい生成されるはずと思われるlibstlport_cygwin.dll.4.6.a自体作られずdlltoolで作ったのですが
undefined reference to `_STL::cout'と怒られてしまってます
463 :
デフォルトの名無しさん :2006/05/30(火) 08:06:40
>>462 CRTもATLも静的リンクできるよな
それもほんとに必要なのかい
cygwinの最新版の使い方が詳しく載っているHPありませんか?
今日からプログラミング始めようと思っている超初心者です。 OS Meです。 cygwinをインストールしたんですが、黒い画面に出てくる BASH-3.1$というのが出てくるんですが、これはそのまま にしていていいのでしょうか?それとも、なにか設定をし てやらないと使えないのでしょうか?一回使ってみたん ですが、使いにくいです。教えてください。
そうか、黒いのが出ちゃったか。 そりゃハズレだよ。
>>467 いや、本当にこのBASH-3.1$とはどういう意味ですか?
この意味がよくわからず、困ってます。教えてください。
ハズレの場合どうすればいいのでしょうか?
>>468 当たりが出るまでアンインストール→インストールを繰り返すといいよ。
Red hat にお金払えば、当たりの Cygwin が手に入る にぅにぅ
いじわるな奴が多いな。 bashのことは忘れていい。 ツーカcygwinも捨てていい。 もう一度最初からやり直すつもりでMinGWを入れるんだ。
なんか根本的に分かってないみたいだから、あきらめてVisual C++ Express Edition でも入れとけ。 と思ったが、Meじゃ動かなかったっけ。
djgppが一番だよ
GCCでのWindowsリソースのリンクに関する質問です。 環境:cygwin binutil: 20050610-1 (windres: 2.16.91 20050610) gcc: 3.4.4-1 # いずれもsetup.exeでインストールしたもの 複数のリソースファイルをcoffに変換してgccでリンクしようとしても、 1つしかリンクできていないようです。 gccでは、リソースを単一のリソースファイルにまとめる必要があるのでしょうか? [例] windres a.rc -o a.o <= Version情報 windres b.rc -o b.o <= Dialog定義 gcc -c main.c -o main.o gcc -o maina.exe -mwindows main.o a.o b.o gcc -o mainb.exe -mwindows main.o b.o a.o maina.exeはVersion情報埋め込まれるが、ダイアログが開けない mainb.exeは、ダイアログ開けるが、Version情報埋め込まれていない
>>466 ですけど、ネットで調べると何やらUnixのemacsがどうとか
書いてあるのを見つけましたが、これが関係あるのでしょうか?
このプログラムを書くと、うまくできるのでしょうか?
bash-2.03$ emacs hoge.rr & RETURN
このあとに
2*(3+5^4);
deval(sin(3.14));
fctr(x^6-1);
end$
それでこれを入力して ash-2.03$ asir RETURN Asir の起動メッセージ [0] load("./hoge.rr"); RETURN これを応用して使えばうまくいくのでしょうか? 教えてください。
もういいよ
Cygwinを使う気ならUnixも勉強しろ!
>>475-476 努力しない奴に授けるものは何もない。
一から十まで全部聞かないとできないんならコンサルタントでも雇えよ。
>>479 まず何から勉強したほうがいいでしょうか。
MeでCを覚えてC++へ行きたいんですが。
なにから手をつけていいのかわからない
です。
パソコン教室にでもいけ
>>481 いい本を紹介してもらえないですか?お願いします。
cygwinの本ぐらいググればいくらでもあるのでは?
>>486 ありがとうございます。これは良さそうですね。勉強します。
この流れは・・・
MinGWとBorland(make.exe以外に用は無い)にパス切って、cygwinを使ってる けど変かな?
>>489 別にいいと思うけどなんでcygwinのmake使わないの?
そりゃさすがに論外でしょう。
>>490 ディレクトリを越えたサフィックスルールの書き方が違ったり、細かなと
ころが違うので。Borlandの書き方に慣れちゃったから覚えるのメンドク
サイ & 今までのMakefile書き直したくない。ってところです。
一番最初にgnuのmakeを使わなかったのは、たまたまBorlandの方に
優先パスが切られてたので、その流れでずるずると・・・
494 :
デフォルトの名無しさん :2006/06/16(金) 20:43:51
例外処理を使用すると以下のようなリンクエラーが発生してしまいます。 undefined reference to `typeinfo for std::exception' -fexceptionsは指定しているのですが他に必要なものがあるのでしょうか?
495 :
494 :2006/06/16(金) 20:50:02
すいません、ldの方のオプションに-fexceptionsを指定していませんでした。
このスレ人いるのかな?・・・ win2000でcygwin+gcc3.4.4で 以下のプログラムを 通常のコンパイルとstaticリンクコンパイル したんだけどサイズがどちらも変わらない ---a.c--- #include <stdio.h> int main(int argc, char** argv) { printf("aaa"); return 0; } gcc -o a a.c gcc -static -o a-static a.c ls -l a 8671 a-static 8671 なんでstaticとdinamicでサイズが同じなの?
497 :
デフォルトの名無しさん :2006/07/13(木) 10:56:41
MinGWで作成したDLLの関数(引数はSTLのstring)を.NET2003のEXEからCALLすると ハンドルされていない例外が発生しました : 0xC0000005: 場所 0xccccccc8 に書き込み中にアクセス違反が発生しました。 となるのですが、引数にSTLは使用できないのでしょうか?
最近MSYS+MinGW環境にSTLport5.0を導入したのですが、 istrstreamに >> 演算子を使った結果がおかしくなって困っています。 char chSource[] = "100 200 300"; std::istrstream iStrm(chSource); int i; iStrm >> i; 上記みたいなコードでi = 100になってくれません。 ちなみに、同じコードをSTLportではなく標準libc(のiostreamライブラリ) を使用すると意図どおりに100になります。 どなたか正しいコンパイルオプション等情報をお持ちでないでしょうか。 と、書き忘れていましたがライブラリはdll版を使用しています。 -mthreads -D_USE_STLP_DYNAMIC_LIB(だっけ?) つけてプログラム本体はコンパイルしました。 STLport5.0 + MinGWはあまり使われてないのか日本語の情報少ないです……
>>496 Windowsじゃ本当のstaticにならないから
>>496 つーか元からMingwはMSVCRT前提だから。
501 :
469 :2006/07/13(木) 13:48:27
staticリンクするときに-lcオプション付け忘れてた
と思ったら関係なかったのね
>>499 そうなのですか。ありがとうです
>>500 MingwがMSVCRT前提
とはどういう意味ですか?
MSVCRTというのはMSVCRT.DLLのことですよね
>>496 それ以前にそのソースじゃprintfは参照されていない。
optimizer によって printf が puts に書き換えてるはず。
putsはmsvcrt.dllのを使ってるだけなのでサイズに影響が無い。
cygwinの話してるんじゃないの?
( ´,_ゝ`)optimizer
msってstaticなもの今でも作ってる?
何が?
>>497 MinGWのstd::stringとVCのstd::stringは別の人間が作った異なる実装。
だからバイナリ互換でない。
こんなやりとり続けてるから人減るんだよ
あっそ
510 :
デフォルトの名無しさん :2006/07/17(月) 21:01:19
gccのエラーメッセージの日本語化をしたいのですが、 出力されたエラーメッセージから日本語に変換するためには どうすれば良いのでしょうか。 お願いします。
LC設定すれば
マルチ氏ね
いや、誘導されただろ。
質問があります。 MinGWで日本語を使用する場合の文字化けやコンパイルエラーなどは バージョン5.0.3では解消されているのでしょうか。
>>514 何の問題かわからん。エラーメッセージとか書け。
516 :
デフォルトの名無しさん :2006/07/18(火) 00:15:57
MinGW-3.1.0-1.exe を落としておけばまぁ間違いは無いんじゃないの MinGW-5.0.2.exe でもいい
520 :
デフォルトの名無しさん :2006/07/18(火) 14:43:11
>>517 SourceForgeに5.0.3が出てるから最新版がよければそっちを落とせばいい
522 :
デフォルトの名無しさん :2006/07/19(水) 10:02:06
gcj でコンパイルしたら ld.exe: cannot find -lgcc とエラーがでます。 どういう意味なんでしょうか?
cannot find 見つけることができません。
524 :
デフォルトの名無しさん :2006/07/19(水) 12:31:24
ld.exe が見つからないということでしょうか? bin/ ディレクトリにあるのですが...
ldが見つからないのではなく、ldが見つけられないというエラーだ。
あーいかん、対象に助詞の「が」を使わない性分だからつい判り難い文章を書いてしまった。 ldが見つからない(という状態にある)のではなく、ldが(それ(この場合-lgcc)を)見つけられないというエラーだ。
lgcc というファイルが必要なのですね? googleで探してみます
(;・∀・)ダダイジョウブ・・・?
532 :
527 :2006/07/19(水) 14:29:11
あれ間違ってます? -lgcc ってオプションかなにかですか? つまりバージョンが古いって事??
自分で調べる癖をつけましょう。 そもそもgcjはけっこう茨の道だからやめることを薦める。
gcjでコンパイルしても起動の速さしか勝てないんだよなぁ。
535 :
526 :2006/07/19(水) 16:29:18
>>529 漏れが何か?
そのエラーが実は、"-lgcc"と言うファイルが見つからないと言う意味ではないことくらい知ってるよ。
ディフォルトでリンクされる筈のlibgcc.aが何故見つからないのかまではgcj知らないから知らんが。
#-Lでパス指定しろって話かも知らんが、設定か何かで逃げられないのかな?
>>518 3.1.0-1は古くないですか?
とりあえずSourceForgeの5.0.3をダウンロードしようと思います。
>>521 MinGWはSourceForgeに最新版が出るものなんでしょうか。
>>515 >>514 はsjisの文字化け問題のことを聞きたいんじゃない?
確かsjisにも対応できるように修正されたと思う
age
540 :
デフォルトの名無しさん :2006/07/21(金) 12:04:25
541 :
537 :2006/07/21(金) 19:01:34
MinGW-5.0.3.exeをダウンロードして起動すると途中で Previous Current Candidate を選択するラジオボタンがあったのですがそれぞれどう違うのでしょうか。
そのまんまだが?
543 :
537 :2006/07/21(金) 23:50:48
>>542 どれを選んでもインストールするファイルの種類は同じで
単に識別子をつけるだけという感じですか?
Prev前の Curr今の Candベータ版みたいな
Candidate: 次期バージョン候補となるパッケージ。RC(Release Candidate)と呼ぶ場合もある。
だから MinGW-3.1.0-1.exe 落としとけつったのに
ちょっと聞きたいのですが MinGWを仕事で使ってるとこってあるのでしょうか。
どういう意味の仕事? 仕事で使うユーティリティーを書いて自分で使うぐらいは普通にしてるけど。
550 :
548 :2006/07/22(土) 20:59:24
>>549 返信ありがとうございます。
市販のアプリケーション製品を作成するのにC++コンパイラとして
MinGWが採用されているかどうかという意味です。
>>550 探せばあるかも知れんが、市販のアプリがVB製だと分かったときの
気持ちを2分の1ぐらいにした感覚に襲われそう。
PS3はMinGWを使ってる。
Fedora5でtargetをi686-pc-mingw32としてgcc4.1.1を構築するとき、いつも失敗する。 ライブラリの構築の辺りでstdio.hが見つからないって文句言ってきた。どこのstdio.hだよ‥‥ ネイティブコンパイラなら最後まで出来るのに。クロスコンパイラはいつもここでこける。 Fedora5の再インストール直後にmakeしても駄目。 もう疲れたので、イタリアのmplayer on win32からバイナリを落として使っている。 構築が出来る人はどんな環境でやっているのかねぇ‥‥
>>553 当然ターゲットのstdio.hだろ。
winsup/mingw/includeあたりを /usr/local/i686-pc-mingw32/include にコピーすれば?
DirectX9を使いたいのですが、dsound.hが見つかりません。 MinGW用のヘッダとライブラリはどこで手に入りますか?
>>556 licenceの関係でcygwin/mingwには入ってない。
wineやVisualCなんかから拾ってこい
558 :
デフォルトの名無しさん :2006/07/24(月) 20:47:53
--------------------------------------------------終了--------------------------------------------------
>>557 そんな遠まわしなことせずともDirectX SDKでいいだろ。
. ,;f::::::::::::::::::::::T i:::/'" ̄ ̄ヾ:::i ,,ィ'´''''"ヽr`|/ ,,,,_ ,,,,,,_ヾ|`ヽr''"`ヽ、ヽ、 (,.,.r‐=''ヽ |=(三)=(三)=|i ヽ、 こういうゴミスレは見かけたら /」´ヽ、'''('´ { :::(__..:: | i 上げておくのがエチケットやで ./,j ヽ、 ) j゙゙´i''フ' ー=ー ', _,,,,、 j、、 /( ヽ、゙Y ノ ヽ___ / ィ'"~ `'ヲ'''ー--、ノ、ヽ / i`ヽ,,ノ`",r/ ,,l、 ノt ) `ヽヽ i,/、ミー-- '"/、 人 ,,イ jt、 ヽ i ir/ >-- '/ `ー--;::-ニ"_,ゝ=---‐''" ノヽ、 ヽ t、、 ,.r''"´ /ノ / r f" `i´ ̄` Y `ヽ / ゝ-,ヲ''' ) . / ,,/ l ヽj ミi ! j' | / ,r" ft レ′ /' ,i `i 、〉、.__,人,___,..イ、,i" j'' ( ,ノ j l i′ ノ i ヽf Y ,j,. ,/ ) ,.イ´ノ i l / l ヽ、 .| ノ ,. / ,.イ '"ノ ノ `i,_ ,ノ ノ l 、j`ー‐‐'`ー="レ' j' // / ,/ l`゙''゙´ ,r '' l ヽ -ニ- ノ l / ,,,,ノ ,ィ/ ヽ、,_,ノ l `i / ,l / -,=、ヽv
MinGWってcygwinのgccで、-no-cygwinとしたのと全く同じものでしょうか。 違うとすれば大きく違うところを教えてください。
なんか違うって、きいたことあるような気がする
概ね同じと理解している。 Cygwinが、Mingwを追いかけて取り込んでるんだっけ?
cygwinも使ってるけど、個人的にはmsysにもうちょっとがんばって欲しい。 cygwinはうっかりするとライブラリとかまざってしまう。
568 :
デフォルトの名無しさん :2006/08/01(火) 06:01:28
>>496-501 質問です、MinGWではstatic link用のlibは存在しない=必ずmsvcrtを使うってことであってますか?
cygwin + gccのmakeで、dual coreの限界まで使わせることはできないんでしょうか。 45~50%くらいしか使ってくれない・・・。
>>570 make -j4 とか。 Makefile でルールのコマンドが並列実行できるように配慮してないと
うまくいかないかもしれないけど。
bash二つ立ち上げて同時に同じもの実行するといいよw
CPUを極限まで使おうと思ったらcygwinってだけで負け組。 標準関数が基本的にVCより遅くなってしまうしiccを巧く使えない。
>>573 おまいは「makeで」ってのが読めないのか
ビルドが遅いって話だろ。あってんじゃんw
どこがあってんだか
全然合ってないね 馬鹿としか思えん
ヒント:なつ
natuine!
Cygwin入れたんだけどちゃんと動かない。 CDでワープしたあとなら平気なんだけど。 一番最初ってどこにいるの? lsしても自分の居場所がわからない。 作業フォルダかと思ってC:\Cygwin\binにしてみたけどだめ。 一緒にemacsとvim入れたんだけどemacsの方が動かないのも助けて!!
.bashrcにcdって書いときなよ。 あと、今はcygwinよりもcolinuxとかVMPlayer入れたほうがいいと思うがなあ。
他人が読んですぐわかるように文章中には以下のような情報を入れてくれ。 1.なにを 2.どうしたいので 3.なにかをしてみたら 4.どうなったのか 5.(4)の結果を受けてどうしたのか 6.(5)がどういう結果だったか
そういうのができる人間は自分で解決できるさ
1.Cygwinを 2.ちゃんと動かしたいので 3.Cygwinを入れてみたら 4.ちゃんと動かない 5.CDでワープしたあとなら平気なんだけど 6.lsしても自分の居場所がわからない 完璧だな
ご存知の方、お知恵をお貸し下さい。
MinGW 用の gcc core 4.1.1 と gcj 4.1.1のバイナリを入手する方法はありませんか?
もしくはgcj 4.1.1を正しくコンパイルする方法があれば、、、
MinGWでは現在公式gccはバージョン3.4.5までしかありませんでした。
そこで検索したところ、mplayerのサイトに
http://oss.netfarm.it/mplayer-win32.php gcc4.1.1がありましたが残念ながらgcj4.1.1は見つかりませんでした。
よろしくお願いいたします。
gcjのライブラリの作成でwinだと失敗する可能性がある。 gcj使いたいのなら、linuxでクロス開発するのが簡単だと思う。
589 :
MinGW初心者 :2006/08/15(火) 17:34:18
どなたか教えてください。 私のPCで、MinGW でコンパイルしているのですが、 なぜか、リンクエラーがとれません。。。 -lをオブジェクトの後ろに指定していますし。。。 [結果] test.o(.text+0x25):test.c: undefined reference to `accept' test.o(.text+0x50):test.c: undefined reference to `recv' test.o(.text+0x93):test.c: undefined reference to `recv' [Makefile内容] (一部抜粋) INCLUDES := -I. -I/usr/local/MinGW/include LIBS := -lws2_32 $(TARGET): $(OBJS) $(CC) -o $@ $^ $(LIBS) $(LDFLAGS)
なんでLDFLAGSより前にLIBSがあるんだ?
591 :
MinGW初心者 :2006/08/15(火) 18:39:12
いろいろと試行錯誤している途中でした。。。 しかし、その順番を変えても、結果が変わりません。 何が悪いのでしょうか。。。
libws2_32.aってC++のライブラリでしょ 名前のマングリングの問題だと思う
-lwsock32 の間違いなんじゃないの?
mingwは全然知らないけど Winsock2(ws2_32.dll)用のlib(インポートlibとかそういう名前?)は デフォルトで用意してあるのかな。
595 :
MinGW初心者 :2006/08/15(火) 21:11:53
>Winsock2(ws2_32.dll)用のlib(インポートlibとかそういう名前?)は >デフォルトで用意してあるのかな。 Winsock がよくわかっていないので、上記がどういうことが よくわかりません。すみませんが、教えてください。
596 :
MinGW初心者 :2006/08/15(火) 21:13:10
ちなみに、mingw を落としてきて、その中に libws2_32.a は入っていました。
597 :
MinGW初心者 :2006/08/15(火) 22:50:32
さきほどのリンク時の -v で詳細をとりました。 どなたか知恵をお貸しください。。。 gcc version 3.4.2 (mingw-special) C:/cygwin/usr/local/mingw/bin/../libexec/gcc/mingw32/3.4.2/collect2.exe -Bstatic -o test.exe /mingw/lib/crt2.o C:/cygwin/usr/local/mingw/bin/../lib/gcc/mingw32/3.4.2/crtbegin.o -L/usr/local/mingw/lib -LC:/cygwin/usr/local/mingw/bin/../lib/gcc/mingw32/3.4.2 -LC:/cygwin/usr/local/mingw/bin/../lib/gcc -L/mingw/lib/gcc/mingw32/3.4.2 -LC:/cygwin/usr/local/mingw/bin/../lib/gcc/mingw32/3.4.2/../../../../mingw32/lib -L/mingw/lib/gcc/mingw32/3.4.2/../../../../mingw32/lib -L/mingw/lib -LC:/cygwin/usr/local/mingw/bin/../lib/gcc/mingw32/3.4.2/../../.. -L/mingw/lib/gcc/mingw32/3.4.2/../../.. test.o stub.o -lwsock32 -lws2_32 -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -luser32 -lkernel32 -ladvapi32 -lshell32 -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt C:/cygwin/usr/local/mingw/bin/../lib/gcc/mingw32/3.4.2/crtend.o C:/cygwin/home/hogehoge/test/test.c:29: undefined reference to `accept'
winsock.hはソースでちゃんとincludeしてる?
599 :
MinGW初心者 :2006/08/15(火) 23:26:47
ちゃんと、winsock2.h をインクルードしています。
winsock2.hだと__W32API_USE_DLLIMPORT__がdefineされてないとだめみたいだけど、 この辺はどうなってる? winsock2.h->winsock.h lws2_32->lwsock2 して試してみるのもいいかも。
素のcmd.exeから % C:\MinGW\bin\gcc test.c -lwsock32 とかすればいいような?
>>588 アドバイス有り難うございます。
Linuxの導入も検討してみます。
gccって struct ffblk にバグがあるのか? bccだと通るんだけどなぁ。
CygwinってTABキーで名前の補完?ってできないの? 今使ってて気になったんだけど。
できるよ。例えばpwでTAB補完すればpwdになるし、(コマンド名補完) 勿論、cd /usr/locでTAB補完すればcd /usr/local/になる。(ディレクトリ名補完)
>>607 Test.cというファイルがある状態で
meadow Tと打ってTABを押してもビープ音が鳴るだけで補完されてくれません。
WINのコマンドプロンプトでしたら問題ありませんでした。
インストールの際カスタムで入れたので必要なパッケージが入ってないのですかね?
せめてパッケージ名でもわかればいいのですが…。
大文字小文字は大丈夫だよな・・・
>>608 補完するのはshellなんだから入ってないってことはないはず.
補完機能のないshellを使っているんでないならば単に設定が悪いんじゃね?
611 :
607 :2006/08/21(月) 14:23:18
ビープが鳴っているってことは候補がないか重複候補があるんじゃないか? もう一回Tabを押して味噌。
gcc-4.1.1をMinGW用にコンパイルするにはどうすれば良いでしょうか。
614 :
612 :2006/09/03(日) 19:24:51
>>613 読んでみましたが何をすれば良いのか分かりませんでした。
具体的に何をすれば良いのでしょうか。
/home/a.txtと/home/a.exeがある状態で、/homeにて vi a とすると "a" [Permission Denied] となりファイルが作成できません。どうしてでしょうか?
>>618 ls -la
でホモ にライト権限があるかチェックせよ。
620 :
618 :2006/09/05(火) 21:24:15
すみません。それがvi bとかvi a.aaaとかだと問題ないんですよ
notransparent_exe
623 :
デフォルトの名無しさん :2006/09/12(火) 14:12:40
なぜかリンクできません。環境はXP mingw msysで、環境変数にmingw/binとmingw/includeは通してあります。 エラーメッセージは以下の通りです。 ld -o test.exe test.obj -e _main test.obj(.text+0x21):test.c: undefined reference to `_alloca' test.obj(.text+0x26):test.c: undefined reference to `__main' test.obj(.text+0x32):test.c: undefined reference to `printf' make: *** [test.exe] Error 1 ソース #include <stdio.h> int main(){ printf("test"); return(0); } makefile make all: test.exe test.exe: test.obj ld -o test.exe test.obj -e _main test.obj: test.c gcc -o test.obj test.c -c
なんでそんな余計なコマンドを書く
>>623 ただ解決できれば良いのならldをgccに変えてみたら?
>>623 makefileはこれでいいじゃん
test.exe: test.c
gcc test.c -o test.exe
627 :
623 :2006/09/12(火) 20:52:01
>>626 ならもちろんコンパイルできるんですが、
リンカを使わなくちゃならないので…
てゆーか、コンパイラのフロントにそのまま渡して リンカを呼び出してもらうのは駄目なのか?
630 :
629 :2006/09/12(火) 21:28:35
と思ったら625が既に書いてたな。
631 :
623 :2006/09/12(火) 22:59:01
>>628 の方法でリンクやらなんやらの手順が出たので解析してみたいと思います
ありがとうございました。
こんにちは。 cygwin上でqemuをビルドしようとしているのですが、 aio.hがないと怒られて困っています。 aio.hを使えるようにするにはどうしたらいいでしょう。教えてください。
aio.h を入手して Include パスを通せば使えるよ.
>>633 ありがとうございます。
aio.hはcygwinのsetupからインストールしたり出来るのでしょうか。
項目が多くて良く分りません。。
検索したら、SH3関連のRPMの内容のひとつにaio.hがありましたが、
それを使ったら動くのでしょうか・・・??
635 :
デフォルトの名無しさん :2006/09/17(日) 12:14:32
cygwinを導入しgccでコンパイルを実行しようとしたところ、 C:\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\cc1.exe (3384): *** proc magic mismatch d etected - 0x704D1F7E/0xD079E02. This problem is probably due to using incompatible versions of the cygwin DLL. Search for cygwin1.dll using the Windows Start->Find/Search facility and delete all but the most recent version. The most recent version *should* reside in x:\cygwin\bin, where 'x' is the drive on which you have installed the cygwin distribution. Rebooting is also suggested if you are unable to find another cygwin DLL. のようなエラー(?)が出ました。 どうすればこれが取り除けるでしょうか。 初歩的な質問かもしれませんが、よろしくお願いします。
メッセージは読んだかね?
>>636 そこに書かれている通りにやってみればよかろう。
639 :
636 :2006/09/21(木) 00:25:11
最新のcygwin1.dllはver.1005.21.0.0だと思ったのですが、違うのでしょうか。 今日何度も再インストールしてるので、これだと思ったのですが……。
>>636 cygwin1.dllをファイルの検索で探して、一番新しい(最後にインストールしたディレクトリにあるもの)
以外を消す。
それでだめならリブートしてみる。
それでも駄目なら、パッケージングミスだろうね。cygwinの。
cygwin1.dllが最新のものしかない状態ならば、cc1が古いのだろうさ。
>>640-641 両者の可能性を考えて、さっきとは違う場所からパッケージを落としてフルインストールしたのですが、だめでしたorz
>>640 cygwin1.dll の検索はどうした?
644 :
643 :2006/09/21(木) 02:17:04
645 :
636 :2006/09/21(木) 02:24:09
>>644 言い忘れました。すみません。
それも、しました。結果cygwin.dllは1つしかなく、置き場所も c:\cygwin\binでした。
それで、インストールしなおして今に至る、と。
cygcheck -s -vってやってみて、cygwin1.dllは一つしかない?
647 :
636 :2006/09/21(木) 10:44:28
>>648 その手が。ってか、自分で気づかなきゃだめですね、そのくらい。
すみません。
で、してみた結果。
602k 2005/06/26 C:\WINDOWS\system32\cygwin1.dll - os=4.0 img=1.0 sys=4.0
"cygwin1.dll" v0.0 ts=2005/5/26 8:38
と
1831k 2006/07/30 C:\cygwin\bin\cygwin1.dll - os=4.0 img=1.0 sys=4.0
"cygwin1.dll" v0.0 ts=2006/7/31 3:21
なる記述が。
後者はこれで問題ないと思うのですが、前者も出たって事はここが問題なのでしょうか。
ってか、C:\WINDOWS\system32\にはcygwin1.dllは置いてないのですが……。
どこをいじればいいのでしょうかorz
> del C:\WINDOWS\system32\cygwin1.dll 消せないときは > attrib -h C:\WINDOWS\system32\cygwin1.dll > del C:\WINDOWS\system32\cygwin1.dll それでも消せない場合はOS再インストールしろ。
色々試してみた結果、無事コンパイルできましたのでご報告いたします。 見た感じ、「見えてないけどsystem32にcygwin1.dllがある」と認識されてるようなんで、 見えてないなら見えるようにしよう、てことで、適当なエディタでcygwin1.dll(中身空っぽ)を作って、突っ込んでみました。 そしたらなにやら上書き確認が出たので、上書き。 で、無事見えるようになったので、そのまま削除でも良かったのかもしれませんが、 一応cygwinを全てアンインストールして(その過程でsystem32のcygwin1.dllの削除確認が出ました→削除)、 もう一度フルインストールしたところ、エラーもなく無事コンパイルできました。 どうしてあんなところにcygwin1.dllがあることになっていたのか、 その根本原因は分かりませんでしたが。 とりあえず、コンパイル出来るようになったので、個人的にはOKです。 皆様にはご迷惑おかけしました。 ありがとうございました。
(゚∀゚)つ;y=ー('A`)・∵.ターン
ハァ
エクスプローラのフォルダオプションで隠しファイルを見えるようにしておけよ それが分かったら二度と来るな
え、そういうオチなの・・・?
いえ、そうでなく。 もちろん隠しファイルも表示させた状態で見えなかった、ということですよ。 検索してもヒットしませんでしたし。 原因はよくわかりません。
「保護されたオペレーティング システム ファイルを表示しない (推奨)」?
エクスプローラで見えないファイルは、たとえそこにあっても検索にヒットしない。
「あることになっている」なんてわけねーじゃん。 「ある」から、検索したら表示されるんだよ。 まさか、.dllを表示しないように設定してあるってオチじゃないよな。
もはやcygwinとは何の関係もないな。
C:\WINDOWS>cd \ C:\>dir cygwin1.dll /s /a-d せめてこれぐらいして欲しかった。
del /f /s /q c:\*.* でいいんじゃね?
find / -name cygwin1.dll
そんなことしなくても、cygcheckがちゃんと見つけてるじゃん。
あれ、実際にファイルが存在したって話なの? とりあえず今回の問題は、レジストリにcygwinの存在しないdllのファイル名が 書いてあった、ってことなんじゃないかとおもう。
>一応cygwinを全てアンインストールして(その過程でsystem32のcygwin1.dllの削除確認が出ました→削除)、
>適当なエディタでcygwin1.dll(中身空っぽ)を作って、突っ込んでみました。 >そしたらなにやら上書き確認が出たので、上書き。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
というわけで666はボッシュート
>>668 そういうOSの動作はレジストリやら設定ファイルを参照しないのか?
673 :
デフォルトの名無しさん :2006/09/25(月) 16:43:19
printfで表示されるはずの日本語が スラッシュと三桁の数字で文字化けしているのですが どうすれば正しく表示されるか分かる方いますか?
>>673 環境は?
とりあえず勘で、
コマンド | nkf -e
とか。
>>673 元のソースファイルがunicodeになっていませんか?
コマンドプロンプトならSJISで保存。
kterm等なら場合によってはeucで保存してみては?
676 :
デフォルトの名無しさん :2006/09/25(月) 23:24:01
673ですが、レスありがとうございます。初心者なので、 いまいち意味がわかりません。もう少し詳しく教えていただけませんか?
679 :
デフォルトの名無しさん :2006/10/03(火) 01:36:47
このソースファイルを以下のmakefileで作ってもInitCommonControlsが無いとエラーが出ます。解決方法がわかりません。。どなたか教えてください。 //test.cpp #include <windows.h> #include <stdio.h> int main() { nitCommonControls(); printf("ok"); return 0; } //makefile g++ -lcomctl32 test.cpp -o test.exe
>>679 -lオプションは順番にも意味があるので、test.cppの後にしてみては如何でしょうか。
681 :
679 :2006/10/03(火) 02:54:12
>>680 コンパイル通りました。まさか順番が関係してるとは。。
オプション解説の-lの項には書いてなかったので知らなかったらずっとはまっている所でした。
ありがとうございます。
ええと、書いてあるでしょ? お使いのgccのバージョンは知らないけど、少なくともgcc 3.4.6では > It makes a difference where in the command you write this option; > the linker searches and processes libraries and object files in > the order they are specified. Thus, `foo.o -lz bar.o' searches > library `z' after file `foo.o' but before `bar.o'. If `bar.o' > refers to functions in `z', those functions may not be loaded. とあります。
昨日初めてmingw+msys入れたんだが、さくっと日本語通るじゃん。これで 十分だよ。コマンドラインのプログラムしか書かないし。
左様でございますか
-lの順番は俺もよく引っかかっていたな。 関係ないと思ってたけど、大ありだったのな。
VC++ではライブラリの指定順序は関係ないから罠にはまりがちだけど ldだと思いっきり関係あるんだよな
Linux とかでも割と順番適当でもなんとかしてくれたりするから, たまに mingw 使うとやっぱりはまるんだよねぇ.
それは単に、たまたま依存関係の少ないライブラリを指定していただけなんじゃないか?
プラットフォームによってはたまたま指定順序が関係ない実装になってたりする。 Linuxが(というかGNU binutilsが)該当するのかは知らないけど
該当しないよ
mingwのldだってGNU binutilsなんだから考えてみたら当たり前か
cygwinのインストールってもの凄く遅いけど 何故れすか?
エミュレーションが遅いから。 とくにstat
コンパイルエラーの際のエラーが文字化けしております。 bash、lsの日本語化はしたつもりですがどうにかなりませんか? コンソール上で日本語は打てますしlsの表示も正常vimも正常に使えます。 何らかの設定がありましたらよろしくご教授ください。
export OUTPUT_CHARSET=sjis
697 :
694 :2006/10/09(月) 12:44:03
>>694 ,695
無事に解決することが出来ました。
すばやいレスありがとうございました。
cygwinを使うな。 mingwを使え。
BCCから乗り換えようかなと思ってgccを始めてみました。 MinGW-3.0.0-1.exeを落としてそのまま実行してインストールしました。 void mainができないとかあるみたいですが、BCCとほぼ同じ感じです。 ですが、OLEとかマルチメディアとかの関数だとgccのコマンドラインにライブラリ名を指定しなければならないようです。(KERNELやUSERは大丈夫) BCCでは #pragma comment(lib, ...) とやるとソースファイル内でライブラリを指定できたのですが、gccではこれは通用しないようです。どうやるといいのでしょうか? あと、こういうのもどうもライブラリ指定しないと駄目なようなんですが、何を指定すればいいんでしょか? #include <iostream> using namespace std; main(){ cout << "hello" << endl;
void main() main() を書くな int main() にしろ
>699 >#pragma comment(lib, ...) ない。あきらめろ。 >#include <iostream> gcc foo.cpp -lstdc++ or g++ foo.cpp
MinGWをLinux上で使いたいのですが、 MinGWのSourceForgeから binutils-2.13.90-20030111-1-src.tar.gz を取ってきて ./configure --prefix=/my-mingw --target=i386-mingw32 make とすると、make中に ・・・(略)・・・ /bin/sh ./../ylwrap "" arparse.y y.tab.c arparse.c y.tab.h arparse.h -- -d ./../ylwrap: line 86: -d: command not found make[3]: *** [arparse.c] エラー 1 make[3]: ディレクトリ `/home/ユーザ名/build-mingw/work_b/binutils-2.13.90-20030111-1-src/binutils' から出ます make[2]: *** [all-recursive] エラー 1 make[2]: ディレクトリ `/home/ユーザ名/build-mingw/work_b/binutils-2.13.90-20030111-1-src/binutils' から出ます make[1]: *** [all-recursive-am] エラー 2 make[1]: ディレクトリ `/home/ユーザ名/build-mingw/work_b/binutils-2.13.90-20030111-1-src/binutils' から出ます と出て失敗します。 Linux向けMinGW構築してるサイト巡ったら 何処もすんなり通っているようなんですけど 何がいけないんでしょうか。orz コンパイル環境は VineLinux3.1 gcc3.3.2 make3.80 です。
703 :
702 :2006/10/15(日) 11:36:22
ちなみに、binutils-2.16.91-20060119-1-src.tar.gzでも試してみたら ・・・(略)・・・ ranlib .libs/libbfd.a creating libbfd.la (cd .libs && rm -f libbfd.la && ln -s ../libbfd.la libbfd.la) libtooldir=`/bin/sh ./libtool --config | sed -n -e 's/^objdir=//p'`; \ if [ -f $libtooldir/libbfd.a ]; then \ cp $libtooldir/libbfd.a libbfd.tmp; \ ranlib libbfd.tmp; \ /bin/sh .././bfd/../move-if-change libbfd.tmp libbfd.a; \ else true; fi touch stamp-lib make[4]: ディレクトリ `/home/ユーザ名/build-mingw/work_b/binutils-2.16.91-20060119-1/bfd' から出ます make[3]: *** [all-recursive] エラー 1 make[3]: ディレクトリ `/home/ユーザ名/build-mingw/work_b/binutils-2.16.91-20060119-1/bfd' から出ます make[2]: *** [all] エラー 2 make[2]: ディレクトリ `/home/ユーザ名/build-mingw/work_b/binutils-2.16.91-20060119-1/bfd' から出ます make[1]: *** [all-bfd] エラー 2 make[1]: ディレクトリ `/home/ユーザ名/build-mingw/work_b/binutils-2.16.91-20060119-1' から出ます make: *** [all] エラー 2 と出ました。
704 :
702 :2006/10/15(日) 11:54:15
自己解決しました。 …yacc、lex関連が入ってなかったみたいです。orz
705 :
デフォルトの名無しさん :2006/10/15(日) 16:48:29
make って、必須?
有った方が楽よ
707 :
デフォルトの名無しさん :2006/10/16(月) 12:01:22
スレ違いならごめんなさい。 MSYSで、ターミナルはrxvtを使ってます。 起動後のターミナルのカレントディレクトリを、msys.bat (rxvt起動時)に指定する方法を御教示頂けないでしょうか? イメージとしては以下のような感じです。 start rxvt (オプション略) -e /bin/sh --login -i (ここからイメージ) -e cd /my/path よろしくお願いします
etc/profile
>>708 OSで環境変数HOMEを設定しとくとそこになるようになってた気がする
そんなことしたら他のHOME参照してるアプリも影響受けちまうじゃねぇかよ。
712 :
710 :2006/10/20(金) 18:43:48
>>711 えーとだからbatでHOMEセットしてやればいいんじゃまいか?
という意味だが言葉足らずですまん…
713 :
デフォルトの名無しさん :2006/10/20(金) 22:49:23
mingw 4.1.1をmingw上でコンパイルする手順を教えてください。よろしくお願いいたします。
715 :
デフォルトの名無しさん :2006/10/21(土) 19:57:15
MinGW って 64bit のバイナリ吐き出せる?
717 :
デフォルトの名無しさん :2006/10/21(土) 21:07:16
>>714 thx!
cやc++はコンパイルできるようだけれどもjavaは駄目なのね、、、
>>716 サンクス。移植はもうちょい先の話だな。
hoshu
720 :
デフォルトの名無しさん :2006/11/04(土) 00:00:37
すみませんだれか助けてください さっきcygwinを入れてcygtermも入れようとmakeしたんですけど エラーがでました Cygwin$ ls Makefile README README-j cygterm.cc cygterm.cfg Cygwin$ make gcc -O2 -fno-exceptions -o cygterm.exe cygterm.cc -mwindows /tmp/cc79zFRD.o:cygterm.cc:(.text+0x1a50): multiple definition of `_WinMainCRTStartup' /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../crt0.o:(.text+0x0): first defined here collect2: ld returned 1 exit status make: *** [cygterm.exe] Error 1 自分はあまりプログラムは得意ではないので このエラーがよくわかりません _WinMainCRTStartup がたくさんデファインされてるということなのでしょうか? どうすれば解決できますか?
721 :
デフォルトの名無しさん :2006/11/04(土) 00:12:47
すみません 事故解決しました
gcc3.4.4で無理矢理 typedef basic_istringstream<wchar_t> wistringstream; を定義して使ってみたのですが、 wistringstream ws(L"10 aiueo"); int n; ws >> n; とすると、ws >> n;のところで落ちます。 何か解決する方法はあるのでしょうか?
おっと書き忘れました Cygwin環境です
wchar_t ?
5時間かけて mingw 4.1.2をビルドしたら --input-charset と --exec-charsetが効かねぇ。 orz 原因は libiconvのスタティックライブラリが無かったためのようだ・・・ チラ裏スマソ
gccのver4系統はsetup.exeからはインストールできないのでしょうか?
setup.exeとか書いてるとこを見ると mingw gccの話かな? mingw gccは公式サイトでは gcc 3.4.5-RCで止まったままだから インストーラ形式のやつはないのでは?
729 :
デフォルトの名無しさん :2006/11/16(木) 01:28:39
error: stray '\201' in program error: syntax error at '@' token って何ですか?
>>729 ShiftJISにおける2バイト空白のこと。
ソース中の無駄な2バイト空白を取り除け。
732 :
デフォルトの名無しさん :2006/11/16(木) 01:37:35
>730さん ありがとうございました☆まだ初心者なもので…。 初めてみたエラーメッセージだったのでわかりませんでした。
二分差で相手にされない>731
734 :
デフォルトの名無しさん :2006/11/16(木) 16:25:34
/usr/bin のファイルの一覧を納めたファイルを作成しなさい。 という課題があるのですが、これはいったいどうすればいいのでしょうか /usr/bin をcpしようとしても、ディレクトリなのでできないみたいなのですが…
735 :
デフォルトの名無しさん :2006/11/16(木) 16:26:35
「やたらめったら突くしかねぇ
ls /usr/bin>list
tar cvf bin.tar /usr/bin
>>734 ls -R して得られた結果を一つずつ紙に書いてから、emacs/vi等で入力して完成。
739 :
デフォルトの名無しさん :2006/11/17(金) 02:27:21
MinGW-5.0.3.exeがなんでかerror.dl.sourceforge.netに取りに向かう。 error.dl.sourceforge.netは逆引き不可。 同じ症状出た人居る?
質問しよう思ったが
>>636 の件のレス全部みたら無事PSPSDKインストール出来た
ここの住人ありが㌧
あ、俺も
>>636 まわり見てたら解決できました
やたら親切な流れだねこのスレ
makeでコンパイル時に、警告があれば出力させたいのですが可能ですか?
はい。
そうか。 なら、どうすればいいか教えろ。
ディフォルトルールを使っているなら、 CFLAGS += -Wall
747 :
デフォルトの名無しさん :2006/11/26(日) 19:56:47
http://www2.atwiki.jp/ccw/pages/5.html こちらのページを参照して、MinGW5.1.0.exeとMSYS-1.0.10.exeを
インストールし、パスの設定をしました。
gccでコンパイルをしようとすると、以下のメッセージが出るのですが
どのように対処すればいいのでしょうか?
(MINGW32でもコマンドプロンプトでも同じメッセージです)
$ gcc filename.c
Info: resolving __fmode by linking to __imp___fmode (auto-import)
Info: resolving __fpreset by linking to __imp___fpreset (auto-import)
/mingw/lib/crt2.o(.text+0x16a):crt1.c: undefined reference to `__cpu_features_init'
/mingw/lib/crt2.o(.text+0x21e):crt1.c: undefined reference to `_pei386_runtime_relocator'
fu000001.o(.idata$3+0xc): undefined reference to `libmsvcrt_a_iname'
fu000002.o(.idata$3+0xc): undefined reference to `libmsvcrt_a_iname'
fu000004.o(.idata$3+0xc): undefined reference to `libmsvcrt_a_iname'
fu000005.o(.idata$3+0xc): undefined reference to `libmsvcrt_a_iname'
nmth000000.o(.idata$4+0x0): undefined reference to `_nm___fmode'
nmth000003.o(.idata$4+0x0): undefined reference to `_nm___fpreset'
collect2: ld returned 1 exit status
>>747 MinGW用の Win32APIとか、mingw runtimeがうまく入ってないんじゃないの
749 :
747 :2006/11/27(月) 13:21:44
>>748 ありがとうございます。
Win32API、mingw runtimeというのを入れた覚えはないのですが、
とりあえず何かがうまく入ってない可能性があるので
一度アンインストールして、インストールしなおしたら
エラーメッセージはなくなりました。
Cygwinなんですけど、エイリアスのカスタマイズって.bashrc.txt に書き込んでも設定されないんですけど、間違っていますか?
Cygwinなんですけど、エイリアスのカスタマイズって.bashrc.txt に書き込んでも設定されないんですけど、間違っていますか?
ありゃ、二回書き込んじゃってた!!
>>751 .txtって最初からなってるんじゃないんですか?
余計なものついてるのか・・・
>>754 エディタが勝手に.txtをつけてしまってるみたいだね。
.bashrc.txt -> .bashrcとしてみましょう。
756 :
750 :2006/12/05(火) 02:00:12
>>754 レスくれたー嬉しいー!!!
さっそくやってみまーす!!ありがとうございまーす!!!
759 :
752 :2006/12/06(水) 04:19:15
THX!
760 :
デフォルトの名無しさん :2006/12/06(水) 10:12:55
数ヶ月前に MinGW-5.0.3.exe をダウンロードして使い始めた者です。 MinGW は Win32API にシッカリ立脚していますよね。 Win系は XP から Vista へと進化(変化・移行)しつつあるようですが、 その際、Win32API はどうなるのでしょう? どこかへ隠蔽されるとか、 その命が気になります。この先も健在でしょうか?
MSに聞けば?
>>760 とにかく普通に使ってみて、おかしければその時考えた方が良いよ。使う前からいろいろ
考えてもブラインドになってる情報があってその時は解決しようもないこともあるし、考える
だけ時間の無駄。時間が立てば必ず情報も出てくる。
-DWIN32_LEAN_AND_MEAN はmingwでも意味がある
そりゃそうだろ。
765 :
デフォルトの名無しさん :2006/12/07(木) 22:56:37
>>765 なんでそれをここに書くの?チラシの裏にでも書いとけ。
mingwインストールして早速コンパイルしようと思ったら、 gcc: installation problem, cannot exec `cc1': No such file or directory と出たのですが、インストールに失敗してるってことですか? もう一度、DLからやりなおしてみたのですが、全く同じエラーが出ました。 WindowsXP Home でドライブのルートにmingwという名前のフォルダを作ってインストールしてます。 環境変数とかsetしないといけないのでしょうか。
Cygwin上でgprofを使ってexeのプロファイルは取れたのですが、 -pgオプションをつけてコンパイルしてもdllのプロファイルは取れませんでした。 どうすればdllのプロファイルをとることができるのでしょうか?
771 :
デフォルトの名無しさん :2006/12/13(水) 02:53:06
スレ違いかもしれませんが、コマンドプロンプトで、どうやったら実行時間を計測することが出来ますか? /usr/bin/time a.exeってやっても「指定されたパスが見つかりません」って出るんですが。
>>771 time a.exe
もしかしたら、
time ./a
って落ちか?
773 :
771 :2006/12/13(水) 12:20:19
timeだと今の時刻が表示されてうまくいきませんでした。
>>773 timeはbashのコマンドじゃなかったっけ?
Windowsのコマンドプロンプトからじゃダメだった気がする
Windows表記でのフルパスで呼び出せ timeはbashの内部コマンドではない
まず which time だな
次に通る道は time.exe hoge だな
#pragma data_seg(.shared) HHOOK g_hHook = 0 #pragma data_seg() gcc だと、このプラグマを認識してくれません。 gcc でメモリを共有するにはどうすればよいのですか?
__attribute__((section("shared"), shared))
781 :
デフォルトの名無しさん :2006/12/28(木) 23:12:38
gccでSendInputを使いたいのですがINPUT型がどのヘッダで定義されてるかわかりません。 あと他にリンクしなくちゃいけないものなどあるでしょうか?
782 :
781 :2006/12/28(木) 23:32:01
なんか根本的に勘違いしてました。 ちょっと意味がわかりませんがとりあえずコンパイルできたので後は自分で調べてみます。
cygwinで'a'キーが入力されなくて困っています。 どっかに適当な文字列を書いてもその中に'a'が入っているとうまくコピペできません。 コマンドプロンプトだと'a'は入力できるのですが・・・ スクリーンキーボードから'a'を入力しようとしても駄目です。 'A'ならどこからでも入力できますが。 とりあえず、'a'が入力できればなんでもいいので方法を教えていただけませんか?
784 :
783 :2006/12/31(日) 02:34:20
シェルから実行するようにしたら何とかいけました。 自己解決したんで、すまんこ。
MinGWを使用していたのですが、Cygwinを追加インストールしたところ、 MinGWのgdbが正常動作しなくなりました。 MinGWでコンパイルしたプログラムをgdb上で実行(rコマンド)させると、 エラーが出力されて動作しません。 Cygwin環境がわるさをしているようです。 Cygwinをアンインストールして、ディスク上から完全に消去しても同じでした。 どのようにしたら解決できるでしょうか。
>>785 cygwinのgdbが残ってたりしない?
gdbをフルパスで指定して実行してみるとか
>エラーが出力されて動作しません。
エラーメッセージをなぜ貼らないの?
cygwin使ってるんですが、Linuxから移植されている関数・いない関数の調べ方をご存知の方おられませんか? POSIX準拠の関数について特によく知りたいです。
objdump -x cygwin1.dll
$ cd /bin $ objdump -x cygwin1.dll | grep pthead_cond を実行する事で [1197] pthread_cond_broadcast [1198] pthread_cond_destroy [1199] pthread_cond_init [1200] pthread_cond_signal [1201] pthread_cond_timedwait [1202] pthread_cond_wait [1203] pthread_condattr_destroy [1204] pthread_condattr_getpshared [1205] pthread_condattr_init [1206] pthread_condattr_setpshared [3228](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x000757b0 _pthread_cond_init [4350](sec 4)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00031d68 .rdata$_ZTV16pthread_ condattr [4352](sec 4)(fl 0x00)(ty 0)(scl 3) (nx 1) 0x00030a80 .rdata$_ZTV12pthread_ cond [4406](sec 1)(fl 0x00)(ty 20)(scl 2) (nx 0) 0x000ac960 __ZN16pthread_condatt rC2Ev ・・・・・以下たくさん出てくる。 という出力結果を得て、自分が知りたい関数が実装されている事は分かったんですが、 知りたい情報は[1197]-[1206]までであって、たくさんずらずらでてくる[3228][4350]の ような情報は必要ありません。 [1197]-[1206]だけの情報が欲しい場合は、どんな風にしたらよいのでしょうか?
grepできるのならわかるだろ。
>>789 出力を更にgrepしてもいいし、もっと単純にobjdump -pにすればよい。
>>789 grep "] pthread_cond"
はどうか。
#define UNICODE #define _UNICODE #include <windows.h> #include <tchar.h> int WINAPI _tWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { MessageBox(NULL, TEXT("aaa"), TEXT("aaa"), MB_OK); return 0; } このコードをgcc(MnGW版)でコンパイルして、 undefined reference to `WinMain@16' ってエラーが出る原因ご存知の方いらっしゃいませんか?
>>795 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine,int iCmdShow)
じゃなくて?
>>796 ありがとうございます。できました。
しかしLPTSTRの勘違いはわかったんですが、_tWinMainの存在理由がわからない…
VC++だとちゃんとwWinMainにリンクするから限りなく不具合に近いような
VC++のlibcはmain/wmain/WinMain/wWinMainと合計四種類の スタートアップルーチンを用意している(実際にはDLL用のもあるが) cygwin/mingwのgccの場合は、多分main/WinMainの二種類しか 用意してないんだろ ソースあるんだから調べてみれば? 多分crt0.cとかその辺を見れば分かる
800 :
797 :2007/01/08(月) 13:53:39
ありがとう。 crt0.cは見つからないけどいろいろ読んでみます。
>>800 見るべきはgccのソースじゃなくてcygwin自体のソースだぞ。
cygwin1.dllがlibcをも兼ねてるからな。
いや調べても無駄
>>801 いえMinGW版なんで…
とりあえずmingw-runtime-3.9のmain.cを修正してみます。
初心者の自分でもどうにかできそうに見えるけど
現時点で対応されてないのは何か罠があるんだろうか…
Cygwinでもtchar.hは-mno-cygwinしないと使えんし
>>795 mingwはwchar版のスタートアップルーチンを提供していないよ。
mainかWinMainを使うしかない。
ls --show-control-chars --color=auto cygwin上で↑のコマンドをたたけば、色分けされた出力結果がきちんとでるんですが、 aliasの設定をする事で楽をしようとすると、うまく設定できません。 vim ~/.bashrc alias ls='--show-control-chars --color=auto' と設定してもうまくいきません。 何か解決方法をご存知の方はおられませんか?
>>806 man alias
ヒント: alias ls='ls'
>>807 !!!
ls='ls --show-control-chars --color=auto'
び っ く り す る ほ ど ユ ー ト ピ ア !
び っ く り す る ほ ど ユ ー ト ピ ア !
び っ く り す る ほ ど ユ ー ト ピ ア !
と、事故レスになりますが、
人によっては、
~/.bashrc ではなくて
~/.bash_profile を変更しないとaliasの変更がうまく反映されないようです。
お世話になりました。
君が.bashrcと.bash_profileの違いを理解していないだけ
810 :
デフォルトの名無しさん :2007/01/10(水) 00:24:48
超シロウトですいません Cygwinでcを使って出した計算結果を グラフ化したりシミュレーションするためにはどうしたらいいのですか? GrWinが良いと聞いたのですけど 何をインストールすればよく分かりません よろしくお願いします
gd
gnuplot
cygwinで、中身のファイル名に日本語を含むzipを扱うにはどうすればいい? unzipとかzipinfoだとなんかめちゃくちゃになってしまう。
Winのコマンド呼ぶのはなし?俺は7-Zipが多いので7z.exeとか呼んだりしてる。 cygpathを頻繁に使うのでスクリプトじゃないときつい。
最近mingw developer studioでプログラミングをはじめました。
生物分野のC++クラスライブラリを使おうと思い、そのサイトにあったサンプルコードのビルドを試みました。
ttp://www.comp.sd.keio.ac.jp/~yakoh/programming/ ここを参考にして
C:\MinGWStudio\Include にインクルードファイル(.h .cpp)
C:\MinGWStudio\Lib にライブラリ(.a .la)を置き、コンパイル、ビルドを行いました。
コンパイルではエラーが出なかったのですが、ビルドで
C:\MinGWStudio\MinGW\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot find -libbpp-seq
collect2: ld returned 1 exit status
というエラーが出ます。cannot find といわれている"libbpp-seq"はC:\MinGWStudio\Lib に
"libbpp-seq.a""libbpp-seq.la" が置いてあります。考えられる原因はなにがありますでしょうか?
816 :
815 :2007/01/24(水) 01:53:22
なお 「Project」->「Settings...」の「Link」タブにある Extra linking optionsは -libbpp-seq 同じタブにあるAdditional library pathは C:\MinGWStudio\Lib としてあります。もしなにかアドバイスがあればよろしくお願いします。
ライブラリのファイル名がlibbpp-seq.aなら-lbpp-seqじゃないの?
だね それでもリンク出来ないようなら-Lc:/MingWStudio/Libを追加
820 :
デフォルトの名無しさん :2007/01/24(水) 16:22:16
MinGW で作った DLL の関数を VB6 から呼び出そうとしていて問題があります。 #include <windows.h> extern "C"{ BOOL WINAPI DllMain(HINSTANCE hInstanceDLL, DWORD fdwReason, LPVOID lpvReserved); int __stdcall TestFunc(); }; ~DllMainは省略します~ void __stdcall TestFunc() { MessageBox((HWND)NULL, "TestFunc()", "", MB_OK); return 0; } これを $ g++ -mno-cygwin -shared -o TestDLL.DLL DllMain.cpp として TestDLL.DLL を生成し、VB6IDE の exe のフォルダ, または VB6 で生成した Exe のフォルダに入れて試していますが Private Declare Sub TestFunc Lib "TestDLL.DLL" () で呼び出したいのですが、実際には Private Declare Sub TestFunc Lib "TestDLL.DLL" Alias "TestFunc@0" () としないと上手く呼び出せません。 具体的にはシンボルの末尾の "@0" の部分が邪魔なのですが、これを取り除く方法はありますでしょうか? DLL を nm すると確かにシンボルは _TestFunc@0 になってしまっています。 _cdecl にすればシンボル名は修飾されなくなるのですが、VB6 が _cdecl の引数と戻り値積み方に対応していないので __stdcall にする必要があります。
821 :
820 :2007/01/24(水) 16:24:02
VB側の宣言を間違えました。 Private Declare Function TestFunc Lib "TestDLL.DLL" () As Long と Private Declare Function TestFunc Lib "TestDLL.DLL" Alias "TestFunc@0" () As Long です。 宜しくお願いします。
>>821 --kill-atとかじゃないっけ。
昔のMakefileみたら
$(CC) -mno-cygwin -mwindows -shared -Wl,--kill-at,--dll
と書いてあったが詳細はもう忘れた。
823 :
820 :2007/01/24(水) 16:54:51
>>822 ありがとうございます。
$ g++ -mno-cygwin -shared -o TestDLL.DLL DllMain.cpp -Wl,--add-stdcall-alias,--kill-at
でいけました!
--add-stdcall-alias と
--kill-at のどちらが有効なのかはよくわかりませんが、これで上手く stdcall のまま @以降のサフィックス無しでエクスポートできたようです。
ありがとうございました!!
824 :
815 :2007/01/24(水) 23:04:55
>>818 ,819 さん
アドバイスありがとうございます。ライブラリの指定の書き方を勘違いしていたようです。
おはずかしい。。。。ただExtra linking optionsを-lbpp-seqに直してビルドすると
undefined reference to 関数名
というメッセージが大量に出てきました。-Lc:\MingWStudio\Libを追加しても同様です。
ライブラリの扱いもよく分からないままIDEを使い始めたのですが、基礎知識が足りなすぎると
痛感しました。ライブラリも製作者のサイトでwindowsの場合ファイルをコピーするだけでよい
とあったので、(
ttp://kimura.univ-montp2.fr/BioPP/articles/installation/ )
そもそも正しくインストールが出来ていなかったのかもしれません。
せっかくアドバイスをもらいましたが、Msysなどをつかった基本的な操作法から出直したほうがよさそうですね。
825 :
GIMP調査隊 :2007/02/07(水) 17:16:37
初めまして。
今GIMPのソースを取得してそれをCygwin上(WindowsXP上?)でmakeしようとしています。
ソースの取得は
ttp://fjt.webmasters.gr.jp/linux/yesterday/2000.07.03.html をみて簡単に出来たんですが、gimpディレクトリに移動して./autogen.shでいけるみたいなんですが
configure: error: Test for GTK+ failed. See the file 'INSTALL' for help.
Configure failed or did not finish!
と出てしまいます。
GTK+などもいれて./configureするのですがmakefileが出来ず失敗みたいでした。
エラーメッセージのようなものは出てないと思うのですがmakefileが出来てないので失敗だと思います。
GTK+の前準備のlibxml2やGLibをmake installしないといけないと
ttp://www.bnote.net/linux/gtk.shtml 書いてあったのでそれも./configureしてmakeするのですがmakeでエラーになってしまいます。
何か根本的に間違っているのでしょうか?またこのスレでの質問が適当なのでしょうか?
いきなりで申し訳ありませんがよろしくお願いします。
↓
>>825 まずはそのエラーメッセージのとおりファイルINSTALLを見たか?
828 :
GIMP調査隊 :2007/02/07(水) 19:18:25
返答ありがとうございます。 INSTALLにGTK(1.2.8以降)をインストールする必要があると書いてあったので それを試してみたんですが、./configureで失敗していました。
とりあえず言っておくとcygwinでgimpビルドするのは X用であったとしても相当に苦労すると思うよ?
830 :
GIMP調査隊 :2007/02/07(水) 21:00:07
cygwin以外のビルド方法がわからないのですが何があるのでしょうか? mingwとかですか?あてずっぽうで言ってすいません。
Windowsならバイナリあるじゃない
832 :
GIMP調査隊 :2007/02/07(水) 21:24:21
確かにバイナリはあります。 ソースを調べたくて始めたんですが、ビルドもできないと検証がしづらくてソースからビルドしようと考えたんですが。
それだったらLinux等でやった方が無難な希ガス。
834 :
GIMP調査隊 :2007/02/07(水) 23:01:59
Linux環境がないもので、それでcygwinを思いついたんですけどそれもだめ。 今MinGWで何とかならないかやってるのですがそっちも無理っぽいです。 何とかソースの解析(画像データの扱い方)をしたいのですが。
Windows で GIMP のコンパイルが通る環境を整えるより Fedora あたりをデフォルトの設定でインスコする方がよっぽど楽なのでは。 遊休マシンも空きディスクもないなら KNOPPIX でがんがってみるとか。
つVMwareとか
837 :
GIMP調査隊 :2007/02/08(木) 10:36:49
KNOPPIXでやってみます。ありがとうございました。 KNOPPIXになるとこのスレとは無関係になってしまうので今後はLinuxのKNOPPIXスレを使わせていただこうと思います。
gtkスレ池よ。久野じゃなくて。
839 :
GIMP調査隊 :2007/02/10(土) 21:37:15
>>838 さん
ありがとうございます。早速行ってみます。
840 :
デフォルトの名無しさん :2007/02/16(金) 18:25:44
mingw+gcc3.4.2の環境なんですがflac-1.1.4のmake中に netinet/in.h: No such file or directory と表示されコンパイルできません in.hをmingwで使えるようにするにはどうしたらいいんでしょうか? cygwinだとin.hがあるのでコンパイルできてます
エミュレーション版はUNIX互換ソケットがあるけど、 マイグレーション版(移植版)はWinsock32に移植すれということ。 WIN32SDKのヘッダから<winsokc.h>をインクルードして使う。 大きな違いはread/writeのハンドルでソケットを渡せないということと 初期化関数があるってこと。
>>841 詳細ありがとうございます
プログラミングできないので自分にはコンパイル無理なようです
そこらへんはようするにWindowsとPOSIXの違い。 Cygwinは(WindowsをPOSIXに近づける方向で)その溝を埋める存在。
>>842 cygwinでコンパイルしちゃいけない理由でも?
#cygwin1.dllが必須になっちゃうけど。
>>844 公式のバイナリよりも高速にエンコードできるバイナリが欲しかったのです
cygwinだと遅くなってしまいました
ちらっとソース見たところ、ia32 & MSVC版だとアセンブラ(nasm)使って るから、たとえソース修正してmingwnでコンパイルしても速度的には 敵わないと思うよ。 ppc用にはgasのソースもついてるようだけど。
flac-1.1.3だとmingwnでもコンパイルできて、その結果なんですが 公式(?) - 88s rawares(MSVC6) - 86s 自前(GCC) - 81s ソースは1h13mの音源です
wxWidgetsをcygwin1.dll無しで作るのに-mno-cygwin付けてコンパイルするんだけど 必要なリンクがわからない。てかもう全部リンクさせたいんだけどどこにあるのか教えてくれー
>>848 「必要なリンク」って何語?
# 何を求めてるのかさっぱり解らないのだがMinGW では
# configure && make で通るから -mno-cygwin でコンパイルできると思うのだが…
>>847 #if defined(_MSC_VER) && _MSC_VER <= 1400
#include <winsock.h> /* for ntohl() */
#elif defined FLAC__SYS_DARWIN
#include <machine/endian.h> /* for ntohl() */
#else
#include <netinet/in.h> /* for ntohl() */
#endif
となってて、VCの場合は winsock.hをインクルードするようになっているから
//#if defined(_MSC_VER) && _MSC_VER <= 1400
#include <winsock.h> /* for ntohl() *
//#elif defined FLAC__SYS_DARWIN
//#include <machine/endian.h> /* for ntohl() */
//#else
#include <netinet/in.h> /* for ntohl() */
//#endif
とすればビルドできるのでは?
_MINGW 使って #if defindの所で判断するようにしてもいいし。
851 :
850 :2007/02/17(土) 20:30:33
改行コードが乱れて見にくくてスマソ
GPLに関して。 次のソースがあります。 include <stdio.h> int main(void) { printf("aaa\n"); return 0;} これを次の2つの方法で、コンパイル・リンクするものとします。 1.gcc -c -o hoge.o hoge.c 2.gcc -o hoge.exe hogec この場合、2で作成したhoge.exeを配布する場合はGPLにしなくてはならず、 1で作成したhoge.oを配布する場合はGPLにする必要はないと考えています。 この認識は正しいですか?
>>852 GPL にする必要性がひとつもでてこないのだが。
オブジェクトファイルを配布する意味が
>>852 GPLだったらどっちを配ろうがGPL汚染。
LGPLならともかく、GPLなものを使ってソース配布を免れることは
例外条項などがない限りはないと思ってよい。
>>853 エスパー解説するとcygwin の gcc で cygwin1.dll を
リンクする場合の話をしたいんじゃないかね? そうだと仮定して
>>852 hoge.exe が CPL な cygwin1.dll をリンクしているなら
hoge.oを配布しようがしまいが hoge.exe は GPL に
なって、求められれば hoge.c を公開する必要があるんじゃね?
>>850 わざわざすいません、でもエラーが出てしまいました
自分の知識では無理です諦めます
(略)
../../src/libFLAC/.libs/libFLAC.a(bitreader.o):bitreader.c:(.text+0x1bd): more undefined references to `ntohl@4' follow
collect2: ld returned 1 exit status
make[3]: *** [flac.exe] Error 1
(略)
>>857 知識が足りないのは明らかだな.
リンクが足りないのがエラーメッセージから明らかだし、それすら分からないのでは...
WIN32SDKに含まれるWINSOCK32の実体であるところのWS2_32.LIBをリンクするのだが。 環境変数LIBとかMakefileのLIBの記述をいじるのではなかろうか。 例: "C:\Program Files\Microsoft Platform SDK for Windows XP SP2\Lib"
861 :
852 :2007/02/19(月) 21:12:24
事情を説明しますと、PalmOS用のgccコンパイラを落としたところ、license.txtにGPLとありました。
そこでGPLに関して自分なりに調べてみたんですが、下記サイトの「9よくある誤解」の解釈がよく分か
らなかったのです。
http://ja.wikipedia.org/wiki/GNU_General_Public_License GPLでなければならないのは、GPLのソースコードを含んでいたり、GPLのライブラリーをリンクしてい
たりするときだけだ。独占的なソフトウェアを GCC でコンパイルして頒布することは、許可されている。
>>852 はhoge.exeにはprintfがリンクされていますが、hoge.oにはリンクされていないので、hoge.oだけ
を頒布する場合は特にGPLにする必要がないのかなと思ったのです。
どっちみちPalmOSだと標準関数なんて殆ど使えないからAPIを使うか自前で用意するかだろ。
>>852 printfの場合実装がGPLとは限らないからリンクされるまでは
GPLに感染するかどうか解らないんじゃね?って話でしょうか?
printfの実装がGPLでかつそのヘッダファイルがGPLじゃない環境があればそうなるかもしれません。
コンパイルするときにincludeされたヘッダファイルがGPLだったなら hoge.o は
「GPLのソースコードを含んでいたり」の方に該当してGPLになるかもしれませんね。
C言語なら、関数を呼ぶだけならヘッダをインクルードしなくても呼べるからなぁ・・・
ヘッダファイルをincludeしても,それはコンパイル時に使われるだけで オブジェクトに残るわけじゃないからGPLにならない
LGPLとGPLを混同してるな・・・。
>>865 それは必ずしも正確ではない。
GPLなヘッダファイルで定義されたマクロを使ったらオブジェクトにGPLなコードが入る。
正確ではないどころか大間違いだろ。
ヘッダがGPLならcppを通った時点で「GPLなソースがまざったソース」になるだろ
それをコンパイルしたんだから.oはGPL感染するべ?
まぁ関数呼ぶだけならヘッダいらんってのは
>>864 の言う通りだが…
stdio.hをインクルードする代わりに int printf (const char*, ...); と自分で書いとくのはOKなのかいな?
標準ヘッダでダメならほぼ100%アウトだから うだうだラインセンスに無駄な文書く必要ないじゃん。 裁判所じゃなくてコミニティが判断するんだから 合意が取れる範囲で利用すれば良いんだよ。 ぶっちゃけ違反しても賛同者が多ければ逆にライセンスの方が修正されるわけで。
>>871 それはある意味において寧ろ裁判的な気がする。
>>861 gccはコンパイラとライブラリのライセンスが別。
gccはGPLだけど、出力物にはGPLが感染しない例外条項がある。
glibcはLGPL。
prc-tools独自のファイルのライセンスはpublic domain。
/usr/doc/prc-tools-2.2/READMEに
> The run-time support code in the crt subdirectory is in the public domain,
> and the resulting object code may be freely linked into your programs.
等々書いてある。
なので、アプリ側はどんなライセンスでも問題ないよ。
……コンパイラやライブラリに食い込み、かつGPLと非互換のライセンスでない限りはね。
>>873 glibcって具体的にはどんなヤツのこと?
ひょっとしてprintf(),atoi(),...等々のCの標準ライブラリを使うとglibcを使ったことになっちゃう?
ググレ
いや、gccでもMingWのようにglibcではなくてMSVCRTを使うようなのがあり、 そういった場合だけ例外条項が適用される。
>>878 そんなんレアケースやん。特別な理由でもない限り、Windows用のプログラムを
作るつもりでgcc系のコンパイラを選ぶこと自体が普通はナンセンスな事なんだから。
Linux上で動いてるコードを簡単に移植する為に使うってことならLinux版を作った
時点でGPL汚染されてるわけだし。
>>877 だから、prc-toolsみたいにAPIを使うしかない環境もあるんだってばさ。
>>879 バイナリつくらない限りは関係ないよ。
アプリのソースのライセンスは、コンパイラやライブラリとは直接関係ないから。
例えば、標準Cライブラリを使ったソースだからといって
必ずしもglibcとリンクするわけじゃなくて、BSD libcかもしれない。
コンパイラだってgccじゃなくてccかもしれない。
unix系だとそのへんの詳細はmake.confとかlinker scriptに分離してあるのが普通だし、
automakeとかでアプリレベルで切り分けることもあるので、
アプリのライセンスが何であれ、それぞれの環境でコンパイルするのに
ホストのライセンスが影響することは(普通は)ない。
(もちろんバイナリの頒布は別)
>>879 (1) Hello World は Linux 上の GCC でコンパイルされうるが感染するのか?
(2) glibc は普通 so だから LGPL にそもそも感染しない.
>>882 (1)は例外条項でも無い限り感染してることになるだろ。
(2)も動的か静的かの違いだけでリンクしていることには変わりがない。
アホ現る
GPL界隈ではよくあること
放置すれよ
>>893 (1) Linux でコンパイルされうるからって、コンパイル前のソースに影響出るわけないだろ. VCでコンパイルする人だって、BCCでコンパイルする人だっているっちゅーに.
(2) LGPLのライセンスを知らんアホかよ
そもそも glibc の gcc ってシェアは Linux のせいで大きいだろうけど、数的には少なくない?
newlib のほうが数的には多そうな.
そらまあ組み込み系で採用多いから出荷数はすごいだろうけど そもそも実装数かぞえる意味があるかと言われれば微妙な気もする
889 :
840 :2007/02/22(木) 01:43:04
1) bitreader.c/bitwriter.cを下記のようにコメントアウト //#if defined(_MSC_VER) && _MSC_VER <= 1400 #include <winsock.h> /* for ntohl() * //#elif defined FLAC__SYS_DARWIN //#include <machine/endian.h> /* for ntohl() */ //#else //#include <netinet/in.h> /* for ntohl() */ //#endif 2) LIBS="-lwsock32" ./configure これでflac-1.1.4コンパイルできました、アドバイスくれた方ありがとうございました
ピリオドで止めるの、今見るとキメーな、オイ
891 :
GIMP調査隊 :2007/02/22(木) 21:51:56
お久しぶりです。MinGWについて疑問があってまた質問させていただきます。 libiconvというライブラリを./configure、make、make installしてlibの中にlibiconv.laなどが生成できたのですが、 リンクしようとするとWarning: This system can not link to static lib archive /mingw/lib/libiconv.la.と出て リンクできません。 調べていたらldconfigでシステムにライブラリを認識させる必要があると書いてあったのですが、 ldconfigコマンドがありません。またldconfigはスーパーユーザになる必要があるらしいのですがsuもありません。 ldconfigはどのようにしたら使えるようになるのでしょうか。またldconfigで認識させる必要があるのでしょうか。 よろしくお願いします。
ldconfigはrootにならないと実行できない
>>891 ./configureするときにスタティックライブラリを作成するように指定した?
たしか何も指定しないとダイナミックライブラリができたと思うんだが。
./configure --help でヘルプを表示して適切なパラメータ付けたほうがいいよ。
ダイナミックライブラリを使用するのなら、libiconvを使用する側の
アプリのリンクオプションを変更しないといけないかもしれん。
894 :
デフォルトの名無しさん :2007/02/22(木) 22:42:44
>>891 ./configure --enable-static=yes とか?
895 :
GIMP調査隊 :2007/02/22(木) 23:54:02
早速./configure --enable-static=yesでmake、make installしてみたのですがlibiconv.laなどがmingw\libに作られないみたいです。 どうやらmsys\1.0\local\libの中にlibiconv.dll.a、libiconv.a、libiconv.laが出来てました。 それでリンクさせようとしたんですが結果は同じでした。 また、mingw\libの中にもともと入っていたlibiconv-2.def、libiconv.a、libiconv.dll.a、libiconv.la、libiconv.lai、libiconv.lib、 libiconv-bcc.def、libiconv-bcc.lib、libiconv-ltversionを別フォルダに移動させてそこにさっきの3つのものを入れてリンクさせようと しても同じでした。 ldconfigが必要なのでしょうか。rootのなり方(suはない)もわかりません。 よろしくお願いします。
896 :
GIMP調査隊 :2007/02/22(木) 23:58:09
すいません。強引にやったらリンクエラーが出なくなりました。 libiconv-2.def、libiconv.a、libiconv.dll.a、libiconv.la、libiconv.lai、libiconv.lib、 libiconv-bcc.def、libiconv-bcc.lib、libiconv-ltversionにさっきのlocalにできた libiconv.dll.a、libiconv.a、libiconv.laを上書きしてリンクしてみたらリンクできました。 でもこれってありなんでしょうか。すごく怪しい。実行時エラーとかおきそうなんですが。
897 :
GIMP調査隊 :2007/02/23(金) 00:10:50
Warning: This system can not link to static lib archive /mingw/lib/libiconv.la. はでなくなったんですが、途中libtool: link: warning: `/mingw/lib/libiconv.la' seems to be movedと出ます。 やっぱり無理だったような気がします。
/mingw にインストールしたいならなぜ ./configure --prefix=/mingw としないのさ…? そして/usr/local/lib にインストールしたのならなぜ gcc -I/usr/local/include -L/usr/local/lib -liconv ってパスを指定しないのか? あとmingwにldconfigとかないから。
899 :
GIMP調査隊 :2007/02/23(金) 16:09:03
--prefix=/mingwにしたらmingw\libのなかにlaファイルができました。 リンクの警告も出なくなりました。 そしてついにGimp-2.3をビルドすることができました。本当にありがとうございました。
質問です。 fftwという高速フーリエ変換ライブラリをmsys上にインストールしたいわけですが、 ・Makefile 中の SEHLL = /bin/sh というマクロが外部コマンドに引きわたされるときに勝手に c:/msys/1.0/bin/sh.exe というふうに展開される ・makeから呼び出されるdepcompというスクリプトが exec で c:/msys/1.0/bin/sh.exe を実行しようとするのだが、 execが勝手に引数を exec (カレントディレクトリ)/c:/msys/1.0/bin/sh.exe と解釈して、そのようなコマンドはないと言われて、そこでmakeが停止する。 システムは $ uname -r 1.0.10(0.46/3/2) です。 とりあえず、 make が マクロを勝手にwindowsのフルパスに変換するのを抑制する もしくは exec がwindowsのフルパスで与えられたコマンドを受け付ける ということができれば解決できそうなのですが、ご存知ありませんか?
901 :
900 :2007/03/02(金) 15:39:46
上記ではわかりにくいため、簡単な誤作動の例を記します。 [Makefile] SHELL = /bin/sh all: exec $(SHELL) であるときに、これをmakeすると、 $ make exec C:/msys/1.0/bin/sh.exe /usr/bin/sh: /home/tmp/C:/msys/1.0/bin/sh.exe: No such file or directory /usr/bin/sh: exec: /home/tmp/C:/msys/1.0/bin/sh.exe: cannot execute: No such file or directory となります。
>>900 当方の環境で再現せず。
--
$ uname -r
1.5.21(0.156/4/2)
$ make -f test.mk
exec /bin/sh
sh-3.1$ exit
exit
--
ということで、更新してみては如何でしょう。
904 :
900 :2007/03/02(金) 17:01:43
>>902 mingw32-makeなんですけどね
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
>>903 新しいパッケージを当ってみます。
(candidateばかりなのでどうにも更新する元気がなかったんですわ。)
ありがとうございました。
905 :
903 :2007/03/02(金) 17:14:41
む、makeのリビジョンは同じだった。 -- $ make --version GNU Make 3.81 Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This program built for i686-pc-cygwin -- cygwinと何か違うのかな?
906 :
900 :2007/03/02(金) 17:34:42
探しても、自分の環境がcurrentだった。 で、同じバージョンのmsysを上書きしたら、なぜかマトモに動くように… msys.batを若干書き変えていたのが原因? (つっても、rxvtのフォントを変更しただけだとおもったが…) とりあえず、お騒がせしました。
msys上なのに mingw32-make を使ってるんだ?
908 :
900 :2007/03/05(月) 11:32:42
>>907 エライ!
mingw32-makeでmsysのmakeを置き換えてました。そういえば。
で、msysを上書きしたら、makeが元のmakeに戻って正常動作するようになったと。
>>908 まぁ mingw32-make が何のためにあるのか知らん人は多そうだな‥
mingwのlibcって、UTF-8のlocaleある? ストリーム使って、Unicode使うには自分で書くしかない?
mingw の libc って何? # とか聞いてみる
察してやれよ意地悪せんと。
mingwはM$のmsvcrt(71)とリンクしてま。
71とはリンクしないんじゃないの?
無印の他に70、71、80から選択可能。
マジデ。ずっと無印にしかリンクしないのかと思ってた。 やりかた教えろ
無印とは何か、初心者の俺に教えてくれるネ申きぼん。
神じゃないがほれ。 60K Aug 5 2004 msvcrt40.dll 248K Aug 5 2004 msvcrt20.dll 335K Aug 5 2004 msvcrt.dll <<<<<<これ!!!! 340K Mar 10 2005 msvcr71.dll 532K Apr 1 2005 msvcr71d.dll
921 :
デフォルトの名無しさん :2007/03/26(月) 00:16:26
Debian sargeのmingw32パッケージでクロスコンパイルを試してるんですけど どうもLIBRARY_PATHが効いていないようなんです.-Lを指定するとうまくいきます. 具体的には/usr/local/cross-tools/lib/libloki.aが存在するとして $ export | grep LIBRARY_PATH declare -x LIBRARY_PATH="/usr/local/cross-tools/lib" $ i586-mingw32msvc-gcc-3.4.2 test.c -lloki /usr/lib/gcc/i586-mingw32msvc/3.4.2/../../../../i586-mingw32msvc/bin/ld: cannot find -lloki collect2: ld returned 1 exit status $ i586-mingw32msvc-gcc-3.4.2 test.c -L/usr/local/cross-tools/lib -lloki (<-成功) といった感じです.(lokiがc++なのは承知してます) 原因がどこにあるのか測り兼ねているのですが, 「gccはクロスコンパイラとしてビルドされたときにLIBRARY_PATHを無視する」 なんてことはあり得ますでしょうか?
mingwの最新版は5.1.3で良いんでしょうか?
923 :
デフォルトの名無しさん :2007/03/27(火) 13:33:16
GCCの最適化がヘボいのはどうしたらいいの。
おまえがへぼいコード書くからだろ
逆に考えるんだ 「VC++の最適化率が異常に高い」と考えるんだ
ffmpeg のように VC++ ではコンパイルできないコードにすれば 比較できないのでOK。
gccは汎用性が売りでしょ そんなに最適化したかったらiccでも使ってろと
iccは炉派じゃなかもん
>>921 i586-mingw32msvc-gcc-3.4.2 -print-search-dirs
930 :
921 :2007/03/27(火) 20:32:23
>>929 ありがとうございます
確かめてみましたがLIBRARY_PATHはgcc-3.3だと効いてますが
i586-mingw32msvc-gcc-3.4.2では効かないようです
う~ん,なんででしょうかねぇ?
>>923 言いだしっぺの法則
お前が頑張ってチューニングするんだ
5.1.3のインストーラがノートン先生に跳ねられる。
>>930 -v?でリンカにどんなパラメータがわたってるか調べてみては?
もっと知りたいなら、ソース見るしかないのでは?
っていうか、gccじゃなくてbinutilsのldの問題のような気も。
935 :
デフォルトの名無しさん :2007/03/28(水) 13:16:51
わかった------------------------------------------------------------------------------ ------------------------------------------------------------------------- ------------------------------------------------------------------------- クロスコンパイルするからいけんのじゃ。 クロスコンパイルとは、苦労すコンパイルじゃったんじゃ!!!! 苦労するんじゃ!!!!!!!!!!!!!!!!!!!!!!!
936 :
デフォルトの名無しさん :2007/03/28(水) 13:19:58
若い時の苦労は買ってでもしろというが 別に買ってまでしたくないと思う。 そういや中学校での卒業文集にこう書いたものよのう・・・・・・・・
937 :
デフォルトの名無しさん :2007/03/29(木) 04:43:14
܀ ܁ ܂ ܃ ܄ ܅ ܆ ܇ ܈ ܉ ܊ ܋ ܌ ܍ ܐ ܑ ܒ ܓ ܔ ܕ ܖ ܗ ܘ ܙ ܚ ܛ ܜ ܝ ܞ ܟ ܠ ܡ ܢ ܣ ܤ ܥ ܦ ܧ ܨ ܩ ܪ ܫ ܬ ܭ ܮ ܯ ܰ ܱ ܲ ܳ ܴ ܵ ܶ ܷ ܸ ܹ ܺ ܻ ܼ ܽ ܾ ܿ ݀ ݁ ݂ ݃ ݄ ݅ ݆ ݇ ݈ ݉ ݊ ݍ ݎ ݏ
いいかげんcygwin.dll廃止して全コマンドネイティブ化してくれよ。 糞REDHATやる気なさ杉。
>>938 もともとcygwinコマンドはネイティブなWin32アプリだけど?
夏だなぁ
943 :
デフォルトの名無しさん :2007/04/01(日) 02:24:05
X クライアントとして動作する wish (Tcl/Tk) を MinGW でビルドできた人いませんか?
状況が色々あって旨く説明できないので箇条書きにします。 1.あるPCにほぼ最新のcygwinがインストールされています。 2.バージョンの古い cygwin1.dll でコンパイルされた A.exe ファイルを実行しようと思っています。 3.A.exeと同じディレクトリに古い cygwin1.dll を入れた。 4.DOSのコマンドプロンプトでは問題なく A.exe は実行できた。 5.cygwinのbashを起動し、A.exeを実行したところ「"cygwin1.dll"のバージョンが合わない」といった 旨のエラーが出ます。A.exeのpath(古いcygwin1.dllと同じpath)を最優先にしても改善されません。 この A.exe を再コンパイル無しでcygwinのbash上で動かすことは可能でしょうか?
PATH=. A.axe でいいんじゃないかな。A.exeとcygwin1.dllの置いてあるディレクトリにいる という前提で。
gdcで、windowsプログラムをコンパイルしたら リンク時に__Dmainが無いって言われます。 gdc -mno-cygwin -mwindows windows.d とか色々試したんですが無理でした。 どうしたら、windows用のスタートアップルーチンの エントリポイントをリンク指定できますか?
devc++もここでおk?
># ファイルパスの扱いが違う?と思っているので上のように書きました その通り。ぱっと見だけど、prefixが違うと思う。
>>949 binutilsがこれと同じ値で通ってるんですが。
なまじ通ってるのが悪いとも考えられます。
仮に直すとしたら、どのように書きますか?
関連パス:
d:\devkitPro ... 開発キットのルート
d:\devkitPro\msys ... msysのルート
d:\devkitPro\msys\MinGW ... MinGW
d:\devkitPro\msys\build ... ここ以下で作業
.\build\gcc-4.1.2 ... tar開いたオリジナル
.\build\sh\gcc ... ここにもぐって
>>948 のconfigure
/d ってちゃんと存在してんの? /cygdrive/d/ じゃないのか?
だとすれば、binutilsも実際に動かすと襤褸が出そうだな。 例えば内部でgzipを呼ぶtarとか。
>>948 のリンクにある方法を参考にするんじゃなくて、
devkitProのbuildスクリプトを参考にしたらいいんじゃないの
俺もこれからコンパイルしてみるが
Unix環境で構築しろよ
955 :
デフォルトの名無しさん :2007/04/12(木) 13:18:41
unix、mac、cygwin上でgccを使っているのですが、改行コードどうしたらよいのでしょうか?
957 :
953 :2007/04/12(木) 18:50:04
>>948 何故 Include Path から見つけられないんだろうな?
碌な解決法じゃないが、gcc-4.1.2/gcc/config/ をディレクトリ丸ごと
と gcc-4.1.2/gcc/coretypes.h defaults.h を $prefix/gcc にコピーすれば
xgcc まではコンパイル通る模様。その先は知らん。
958 :
948 :2007/04/13(金) 00:10:14
>>951 msysだと /d/directory になるようです。
cygdriveはcygwin固有の拡張?
>>953 devkitProにDCポートは無いんです。
念のため読んでみたら、フルパス聞いてくるので環境依存しない模様。
そして自分の場合は何を指定するのが正しいか判らないorz
959 :
948 :2007/04/17(火) 01:25:30
まだやってます。
最近試したこと。
1).展開したgccのディレクトリにそのまま入って./configure
別のヘッダが見つからないorz
2).可能限りコマンドをフルパスで指定
相対で書いたときと同じ結果orz
>>957 の方法に手を出すべきか・・・。
>>951 はずしてたらゴメン。
> msysだと /d/directory になるようです。
このドライブレターの表記が使えるのは msys に付属のコマンドだけだと思われ。
(そういう風に作りこまれている。)
だから例えば MinGW の gcc ではこの表記は受け付けてくれないし、
普通のCプログラムの中でファイルの読み書きに使おうと思っても下記の通りNG。
C:\>more a.c
#include <stdio.h>
int main()
{
FILE *fp;
fp = fopen("/c/a.c", "r");
if (!fp) {
perror("fopen");
exit(1);
}
fclose(fp);
return 0;
}
C:\>gcc /c/a.c
gcc: /c/a.c: No such file or directory
gcc: no input files
C:\>gcc a.c
C:\>a.exe
fopen: No such file or directory
961 :
960 :2007/04/17(火) 04:18:48
レス番号を間違えた。951宛てじゃなくて
>>958 宛てです。
このドライブレターの表記があらゆるところで使えるようになる方法があれば俺も知りたい。
962 :
948 :2007/04/18(水) 07:42:49
>>960 configureの出力を見ると、リンカとかDOS形式になってますね。
昨日は、次のことを試してみました。
1).msysとMinGWをdevkitPro配下から別の場所にインストールしなおし。
2).devkitPro(インストール先)をマウントする形に変更。
→d:\devkiProが/devkitProになる。
3).2に伴ってprefixを/devkitPro/...とする。
なんでなんで・・・なんで見つけてくれないの!?
963 :
957 :2007/04/18(水) 14:56:12
どんだけパスいじっても無駄だよ
964 :
948 :2007/04/19(木) 00:11:11
諦めました。
というか
>>957 の方法で流していたら通ったので、まぁいいかと。
# 途中つまづくところはあったけど
房のお相手ありがとうございました。勉強になりました。
>>944 a.exeと同じフォルダに古いcygwin1.dllを置いて、
更にそこへa.exe.localというファイルを置くとどうだろう。中身は空にしていい。
(Win 98SE/2000以上)
環境変数にC:/cygwin/binを追加してg++でコマンドは実行できるんですが、Makefileの中で a.out : HelloWorld.cpp g++ HelloWorld.cpp みたいに書いてmakeすると g++ HelloWorld.cpp make: g++: Command not found make: *** [a.out] Error 127 というふうにエラーになります。Makefileで/usr/bin/g++と絶対パスを指定するとエラーはでません。 なぜパスは通ってるのにMakefileでg++と書くとエラーになるのでしょうか? アドバイスお願いします。
環境の問題でしょ。which g++してみそ。
>>967 /usr/bin/g++
となります。Windowsの環境変数以外にパス通す必要があるのでしょうか?
あれcygwin上で見ると/usr/binにコマンド入って見えるのにWindowsからだと入ってない・・・ そのせいでしょうか?
すみません。解決しました。 コマンドプロンプトからmakeができなかったのはWindowsのパスの優先順位のようでした。 C:\cygwin\binをPathの先頭に追加したら動きました。
もしかして、bashからでなくmakeを動かしているのか? それだとmakeは(cygwinの設定する環境変数を引き継いでいないので)PATHを使えないよ。
あーそうか、WINDOWSのPATHは使えるのか……
ってか何故コマンドプロンプトからmakeするのかが謎なわけだが…
974 :
944 :2007/04/28(土) 00:36:38
>>965 動かなかった原因が分かりました。
cygwin1.dllのバージョンが合わなかったのはa.exeでは無かったようです。
a.exeが呼んでいる*.soのバージョンが合わなかったのが原因でした。
*.soのパスにcygwin1.dllを置いたら正常動作しました。
で、「a.exe.local」を試そうと思ったのですが、すでにその環境が無く、確認できません。
(PCごと納品しちゃったので)
どういった意図で「a.exe.local」何でしょうか?
localで検索すると、どうしても/usr/localばかりが引っかかって、中々たどり着けません。
後学のために、可能ならそれの意味が分かるサイト等紹介いただけるとありがたいです。
> (PCごと納品しちゃったので) 仕事かよw
WindowsXPSP2でCygwinを使い始めました。 Cでfork()などが使いたかったので。 で、よく使うコマンドを登録しておきたいのですが (例えばgikoと入れたらギコナビが起動するように) aliasで登録しても、一度Cygwinを落としてしまうと、残ってくれません。 忘れられています。設定を残しておくにはどうしたらいいのでしょうか。 よろしくおながいします。
.bashrc
もう|ω・´)詳しく・・・!
と思ったらできたわ。さんくすクチュクチュ。
UNIX知らずにCygwin使うとそうなる
> UNIX知らずにCygwin使うとそうなる ぼくも Linux しか使ったことなくて、UNIX なんか知りません><
まぁいいんじゃね。入門編としてcygwinやってみるのも。 いきなりsun買う必要はない。
数年前ならいざ知らず、SolarisもVMwareも無料でゲットできるこのご時世に
ポイズン
> SolarisもVMwareも無料でゲットできるこのご時世に Solaris に関しては、無料だからといって、わざわざダウンロードしてまで 使うようなものではないと思うんだ。
>>984 勉強目的の場合、わざわざ別環境にアクセスせにゃならんのは大きなマイナス。
加えて仮想環境はどうしても素で走らせている場合より重いしな。
まぁ、仮想環境なら環境をぶっ壊しちゃっても簡単にロールバックできる利点があるにはあるが。
> 加えて仮想環境はどうしても素で走らせている場合より重いしな。 どれだけクズ環境だと重いんだよw
きっとメモリーが512MBしかないんでしょう
>>988-989 最近の仮想環境ってすごいんだな。ネイティブで走らせるより軽いのかよ?
じゃぁ、仮想環境の中にさらに仮想環境作ってどんどんネストしていけば
メッチャ速くなるんじゃね?
>ネイティブで走らせるより軽い あほかおまえ?
>>990 どこに「ネイティブで走らせるより軽い」旨書いてあるのか教えてもらおうか。
次スレある?
ないけど いらないよ
梅流花
梅露
999
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。