07/12/26 18:27:51
>>379
どのツールのビルドした?
あとmsysDVLPRだが、以下に書く手順であってるか知りたい。
MinGW5.13、msys1.10.11、msysDTKをインストーラからインストール。
msysDVLPRをtar -zxvf msysDVLPR-1.0.0-alpha-1.tar.gzでmsys/1.0直下から展開。
それと.profileを
if [ $MSYSTEM == MINGW32 ]; then
export PATH=".:/usr/local/bin:/bin:$PATH"
else
export PATH=".:/msys/bin:/usr/local/bin:/bin:$PATH"
fi
といじって、そのごmsysdvlprシェルを起動して白いmsysコンソールからビルド。
違うところがあったら教えてくれ。
383:デフォルトの名無しさん
07/12/26 19:05:38
はっきり言ってチョーウザイ。
日記はmixiでやれって言ってんの。
おまいには無理、それでいいだろ。
384:デフォルトの名無しさん
07/12/27 09:57:36
>>382
念のために書いておくけど、ちゃんと
./configure
してからmakeしてるよな?
まぁ基本的なことだから大丈夫だとは思うが。
それから msysDVLPRを MinGW5.13の上に上書きするのはちとマズいかもな。
msysDVLPRにも gcc及びライブラリが入ってるから。
385:デフォルトの名無しさん
07/12/27 10:16:22
もちコース。./configure、make、make installぐらいは知ってるぜ。
msysDVLPRはmsysの方に入れてるんだがこれって間違い?
MinGWiki読むとmsysの方に解凍してるみたいだが。
386:デフォルトの名無しさん
07/12/27 10:18:12
でもbashのビルドはINSTALL.MSYSにしたがって、一応msysrlsbldっていうスクリプトやってるけどな。
中身は結局configure、makeみたいな感じだ。
387:デフォルトの名無しさん
07/12/28 23:45:45
Mingwでソケットを使おうとしたら使えない!
インクルードファイルがみあたらないのですがなんででしょう・・・。
388:デフォルトの名無しさん
07/12/29 01:14:53
MinGWなんだからwinsock使えよ…
389:デフォルトの名無しさん
07/12/30 02:43:17
基本的過ぎる質問だと思うのですが
検索してもわからなかったので書き込ませて頂きます
cygwinのgccを使ってC,やC++の開発を行うときのライブラリは
やはりcygwinのそれっぽいのをとってくるんでしょうか?
それとも別のIDEからライブラリ部分を持ってきたりするんでしょうか?
windows.h 関係が欲しいのですが
通常はどこで手に入れるものなんでしょう?
390:デフォルトの名無しさん
07/12/30 02:53:46
w32api
391:デフォルトの名無しさん
07/12/30 08:17:47
>>390
ありがとうございます。適当に必要なものとどこからでも良いので
とってくればOKなんでしょうか?
とりあえずcppunitとw32api(3.9-1)をcygwinのsetup.exeからインストールしたんですが
cygwin\lib\w32api 配下に windows.h が存在せず
どこから手に入れればよいのか困っています
「普通はここから持ってくる」そんな場所はありますか?
392:デフォルトの名無しさん
07/12/30 08:27:55
どんなオプションを選んだかなんて覚えていないけど、
特に何もしなくても<windows.h>をインクルードできるし、
特にライブラリ指定しなくてもWin32 API使えている。
393:デフォルトの名無しさん
07/12/30 10:50:40
$ find /usr/include -name windows.h
/usr/include/w32api/windows.h
394:デフォルトの名無しさん
07/12/30 11:05:03
>>391はなんでヘッダファイルをlib配下でのみ探したのだろう
395:389
07/12/30 17:38:53
>>392
何が違うんでしょうか…? 俺にはさっぱりです
>>393-394
それは>>389がアホだからに他ならないわけで…。
…ありがとうございました
わからなかったのでPSDK入れようとしてました。
結局こんな感じでコンパイルしたら動きました
g++ test.cpp -I/usr/include -I/usr/include/mingw -v
includeされているパスが色々出てきて
それらがどこで設定されてるのかがイマイチわかっていませんが
おいおい調べていくことにします
396:デフォルトの名無しさん
07/12/30 17:57:30
>>395
/usr/include と /usr/include/mingw を一緒に使うのはどうかと思う…
ってかこの辺は解り難いとこなんだけど cygwin の gcc には使うlibcに応じて
2つモードがあるんよ.
- cygwinの提供するPOSIX APIを使う通常の cygwin のモード
- POSIX の API を使わずに Win32 API だけを使ってプログラムを書くための MinGW モード
gcc に -mno-cygwin オプションを付けると後者のモードになって /usr/include/mingw
ってのはその場合に使われるヘッダが入ってるのね。なので両方参照する必要はないはずなのよ?
それぞれのメリットやデメリットは…まぁ適当にぐぐってくださいね。
397:389
07/12/30 19:07:24
>>396
なるほど解説ありがとうございます。
初めに /usr/include だけを使った所 windows.h が読み込めて
その後に #include <tchar.h> する必要があったので /usr/include/mingw を読み込んでました。
/usr/include/mingw のみ -I すればコンパイルできました。
-mno-cygwin をつけるだけでもOKなのも確認しました。
クロスコンパイルやらなんやらの問題みたいですね。
とりあえず色々眺めてみることにします
398:デフォルトの名無しさん
07/12/30 20:04:19
>397
POSIX API を使うつもりがなくいなら -mno-cygwin を付けた方が
cygwin1.dll をリンクしないでいい分ライセンスとかいろいろ楽。
作りたいアプリケーションに応じて選んでくれ。
399:デフォルトの名無しさん
07/12/30 20:20:31
POSIX APIを使わないつもりがなくいときはどうしたらいいでしょう。
400:デフォルトの名無しさん
07/12/30 20:43:54
gccでデバッグオプション(-g -O0)を付けてコンパイルしたいのですが、
いったいどうやればいいのでしょうか?
いまのところはMakefile.amのINCLUDE変数に'-g -O0'を追加しているのですが、
明らかにおかしいので正しいやりかたを教えていただきたいのです。
環境はubuntu + gcc + autotoolsです。
(Linux板も探したのですが、適当なスレが見つけられなかったため
こちらに質問させていただきます)
401:デフォルトの名無しさん
07/12/30 21:02:09
大抵のMakefileなら、CFLAGS辺りに書けばよさそうだが。
402:デフォルトの名無しさん
07/12/30 21:35:22
autotool なら環境変数から引っ張ってきてるよね
CFLAGS="$CFLAGS -g -O0" ./configure
俺はこうして使ってるけど
403:デフォルトの名無しさん
07/12/30 21:35:26
>>400
この場合 Autoconf/Automake/Libtool スレあたりが適切かな…?
404:デフォルトの名無しさん
07/12/30 21:49:40
>>401
そうですよね
>>402
CFLAGS="$CFLAGS -g -O0" ./configure
のやりかたでできました。
ありがとうございました。
>>403
すいません。次から気を付けたいと思います。
405:デフォルトの名無しさん
07/12/31 02:00:32
よくあるのは configure に --enable-debug 付けると
デバッグオプションが付くように作ってあるとかかなぁ
406:デフォルトの名無しさん
08/01/01 20:05:29
wxWidgetsをリンクするために
'wx-config --cppflags'の出力されたものを
作成ファイルのMakefile.am内オプションに追加したいのですが
いったいどうやればいいのですか?
何度か同じことをする必要があるので
共通の変数か何かに設定できるとうれしいのですが。
(他のスレでも聞いたのですが、全く反応が無いのでマルポしています)
407:デフォルトの名無しさん
08/01/01 20:42:20
>>406
wc-config の出力結果を Makefile.am に書いたら意味ないだろw
configure.in を書いて configure 実行時に wc-config を実行してその結果
がMakefileの変数CXXFLAGSやLIBSに展開されるようにしてやればいいんじゃね?
あと autotools の使い方を基本から勉強しなおしてくれ。
そもそも autotoolize する必要があるのかってところから見直すといいかもしれん。
408:407
08/01/01 20:43:27
wc-configってなんだ… wx-config ね
409:デフォルトの名無しさん
08/01/01 23:42:35
>407
ありがとうございます。
> Makefileの変数CXXFLAGSやLIBSに展開されるようにして
これはいったいどうやればいいのでしょうか?
configure.inに
WXCXXFLAGS = 'wx-config --cppflags'
AC_SUBST(WXCXXFLAGS)
とやってもなしのつぶてで全く効果がありません。
あとautotoolsに関してなのですが、自分はもともとVCを使っていて
linuxでコンパイルする必要が出てきたので最近になってautotoolsを使い始めました。
なので残念ながらautotoolsをほとんど知りません。
これを使っているのは、いろいろなプロジェクトで
configureファイルを見かけるからなのですが
これを使わないとしたら他にどのようなツールが考えられますか?
自分はmakeをそのまま使うかbjamなどが思いつくのですが、
どれを選ぶにしろ大変そうで困っています。
ある程度ポータブルで分かり易いツールであればなんでもいいのですが、
良さそうなものがあれば紹介して頂きたいくらいです。
ちなみに、このプロジェクトのコンパイルに必要な手順は
1、プロジェクトに添付された(小さめの)外部ライブラリのソースからスタティックライブラリを生成
(この際、wxWidgetsが必要になるものもあります)
2、それらとライブラリのソースから一つのダイナミックライブラリを生成
3、最後に、メインプログラム(というかテストプログラム)をDLLをリンクして生成
と少し複雑です。
410:デフォルトの名無しさん
08/01/02 01:29:31
他のスレでもって、wxスレでもautoconfスレでも見かけなかったなぁ
まぁ別にどこでもいいんだけど
411:デフォルトの名無しさん
08/01/02 09:11:52
探したら スレリンク(tech板) にいた…
>>409
基本的に広い範囲で移植性を確保しようと思ったら大変なのはどのツール使っても同じなの
はその通りなんだけど、どの程度の移植性が欲しいのかってところかな?
autotools使うなら本でも読んでじっくり取り組んでくれ。
- URLリンク(www.amazon.co.jp)
あまり出来のいい本でもないけど…
412:デフォルトの名無しさん
08/01/02 09:30:35
>>411
基本的には
Windows(cygwin), Linux, FreeBSD, Mac
あたりで使えれば嬉しいのですが。
あまりマイナーな環境に対応するのは大変ですしね。
いい環境が見つかるまでは、マニュアルと本でがんばりたいと思います。
413:デフォルトの名無しさん
08/01/02 10:20:29
WXCXXFLAGS="`wx-config --cppflags`"
・・・ではないのかな 試してないけど
俺なら AC_PATH_PROG で wx-config あるかチェックするかな
414:デフォルトの名無しさん
08/01/02 15:12:07
>>413
ありがとうございます。ただ、それでもダメでした。
(>>409のWXCXXFLAGSはWXCPPFLAGSの間違いでした。すみません)
Makefile.inを見ると変数自体はちゃんと出力されているのですが
その中身がどうも空のようです。
Makefile.amではどちらか分からないので
一応@WXCPPFLAGS@と$(WXCPPFLAGS)の両方の形式で出力させています。
415:414
08/01/02 16:27:37
テストプログラムを作成しました。
原因の分かる方いましたら、是非教えてください。
URLリンク(www.uploda.org)
416:デフォルトの名無しさん
08/01/02 17:00:06
>>415
configure.ac の中身
WXCPPFLAGS=`wx-config --cppflags`
- 変数と'='の間にスペースは入れない
- 展開はバッククォート
普段UNIXライクOS使ってないならアレだがシェルスクリプトの基本を勉強する必要があるかも
417:デフォルトの名無しさん
08/01/02 17:02:34
>>415
そうそう Makefile.am の方は @WXCPPFLAGS@ でよくて $(WXCPPFLAGS) はいらない
418:デフォルトの名無しさん
08/01/02 22:37:44
>>416-417
できました!
やっとコンパイルに取りかかれそうです。
ありがとうございました。
419:デフォルトの名無しさん
08/01/04 07:52:12
>>418
Net BeansIDE V6 R3を実装し、C/C++コンポーネントのアドイン指定をし、
Cygwin言語処系gmake,g++,gcc等をインストールし、 Net BeansIDEを起動
することにより、自動でビルド環境が出来るじゃん。
まあ、autoconf automake の勉強するつもりならこんなやり方は為にならんが。
まあ、学生さんだったら時間あって勉強がてらハンドでやるのも良いんだろうけどw
よく考えたら、正月だったのか。じゃあ時間作れそうだな。
420:419
08/01/04 07:58:25
こっちの方が正確だったな
URLリンク(ja.netbeans.org)
Net BeansIDE V6 R3→表記ミス
組込系なら制約が有るかもしれんな。
ま、その辺り臨機応変にな。
人間がやるより早いぞ。
421:デフォルトの名無しさん
08/01/04 09:54:43
>>419
本人はVC使ってて他の環境(LinuxやFreeBSD)で容易にコンパイルできるように
autotoolize してるって書いてあるだろ…
そこで Cygwin + NetBeans 勧めても…
422:デフォルトの名無しさん
08/01/04 21:04:54
>>421
奨めないとPGままだろ?
ソフトウェア開発技術者とPGは違うぞ。
コンポーネントプログラミングの妙技も味わって貰わないとなw
423:デフォルトの名無しさん
08/01/04 21:21:17
>>421
autotoolizeって何?
スペルミスするくらいならオーソライズって書けよw
424:デフォルトの名無しさん
08/01/04 21:25:18
>>423
autoconf/automake 使って
./configure && make all && make install
って, やればインストール出来るようになってる
という意味ではないのか?
425:デフォルトの名無しさん
08/01/04 21:45:50
>>424
個人の造語を空想で断定しては恥かくだろう?
俺はレスの文脈からオーソライズと認識したまで。
何ならそのスペルで英和辞典なりコンピュータ用語事典を
探して見たら良い。
一生掛かっても見っからないことは断言できる。
ま、そんなチンケな話で揉めても仕方ないのでここで
ペンを置く。
426:デフォルトの名無しさん
08/01/04 22:07:03
うるせーよググれカス
427:デフォルトの名無しさん
08/01/04 22:08:42
>>425
レスの文脈からautotool-izeとしか認識できなかったがな。
オーソライズってのはauthorizeのことか?だとしても意味が通らんな
もっと文脈読まないと恥かくぞ?
428:デフォルトの名無しさん
08/01/04 22:11:01
>>417
その情報は古い。
Makefile.amでは、$(WXCPPFLAGS)と書くのが今風です。
Makefile.inでよきに計らってくれるので。
そうすると、$ make WXCPPFLAGS="-I/anotherdir/include"
なんかが使えます。
429:デフォルトの名無しさん
08/01/04 22:13:26
>>427
ふふ、暇なオジンやな?
本件にレスして道ズレにしようちゅう魂胆かなw
まあ、おまえが口べただと言うことは良く解った。ググった上でのレスだw>>426
430:デフォルトの名無しさん
08/01/04 22:22:17
冬休み学生のへたくそな煽りにわざわざ釣られるなよ…
431:デフォルトの名無しさん
08/01/04 23:13:08
>>423
これほど「プギャー(AAry」を貼りたくなったレスは初めて見た希ガス。
432:デフォルトの名無しさん
08/01/05 01:06:06
世代間ギャップだろw
433:デフォルトの名無しさん
08/01/05 01:14:29
>>425
この辺を理解して出直してこい
URLリンク(www.catb.org)
434:デフォルトの名無しさん
08/01/05 02:27:02
↑この粘着馬鹿きも
435:デフォルトの名無しさん
08/01/05 08:05:03
お前も十分粘着だよ。
436:デフォルトの名無しさん
08/01/05 10:25:14
ageてる人はわかりやすくて良いな
437:デフォルトの名無しさん
08/01/05 13:13:44
4+3=7
438:デフォルトの名無しさん
08/01/05 17:53:22
新年から運営バイト乙
さくらも必要だからな2ちゃんにはw
車 寅二郎
439:デフォルトの名無しさん
08/01/05 18:17:23
To you cotton I dead no death she.
440:デフォルトの名無しさん
08/01/06 10:13:59
最近気づいたんだけど、速いCPUでCygwinのgcc使ってコンパイルするより、
遅いCPUでLinuxのgcc使ってコンパイルしたほうが速いのね・・・
体感的にはCygwin@X2 3800+ < Linux@CelD 2.4GHz, Cygwin@CelD 2.4GHz < Linux@P3 900MHzくらい
-pipeつけたらちょっとマシになったけど、それでもやっと同じくらい。
やっぱstat(2)とかが効いてるのかね?
441:デフォルトの名無しさん
08/01/06 10:39:27
Windowsはプロセスの起動が遅いうえに
Cygwinでエミュレートまでしてるからかなり遅くなると思うよ
442:デフォルトの名無しさん
08/01/06 11:50:41
cygwinと比較してる時点でバイアス満載。
443:デフォルトの名無しさん
08/01/06 12:14:27
MinGW使え
444:デフォルトの名無しさん
08/01/06 12:29:43
普通は、fgetc()をループで回してもfgets()やfread()を使っても(I/O速度で制限されるので)大差ない時間で処理できるが、
cygwinに限っては、fgetc()版は遥かに遅くなってしまうからね。
445:デフォルトの名無しさん
08/01/06 15:35:36
なんで?
446:デフォルトの名無しさん
08/01/06 18:02:26
エミュレートしているからでしょ。
447:デフォルトの名無しさん
08/01/06 18:26:53
それはfgetcが遅くてfreadが遅くない理由にならなくね?
448:デフォルトの名無しさん
08/01/06 19:02:11
>>447
なんでそう思う?
449:デフォルトの名無しさん
08/01/06 19:13:11
cygwinはファイルの読み書きは特に重いよね。MinGWにすると凄い速くなる。
450:デフォルトの名無しさん
08/01/06 19:35:46
>>447
freadも遅いがエミュレート+ループでfgetcが遥かに遅い理由にならなくね?
451:デフォルトの名無しさん
08/01/06 20:47:21
fread()一回では、エミュレートのオーバーヘッドは1回分であることが期待できる。
多くても、BUFSIZごとに1回だろう。
fgetc()では、毎回の呼び出しごとにオーバーヘッドが発生する懸念がある。
ungetc()のために毎回余計に読み込まなくてはいけないと言う事情がこれに拍車を掛けるだろう。
452:デフォルトの名無しさん
08/01/06 21:18:40
そゆのってオーバーヘッドのかからない層で
バッファリングすると思うんだけど・・・。
453:デフォルトの名無しさん
08/01/06 21:21:49
いや、そうじゃないからこそ、cygwinのエミュレーションは問題だといっている。
454:デフォルトの名無しさん
08/01/06 22:18:45
MinGWのgccやg++は、標準ヘッダの検索パスをどこで決めているんでしょ?
c:\mingwにインストールしたときはbinのpathを通すだけでコンパイルできたソースが、
j:\!repos\softwares\mingwにインストールしたときはbinのpathを通すだけだと、
no include path in which to search for stdio.hとか言われる。
C_INCLUDE_PATHやCPLUS_INCLUDE_PATHを設定すればいいみたいだけど・・・。
455:デフォルトの名無しさん
08/01/06 22:19:31
>>443
MSYSもいっしょに
456:デフォルトの名無しさん
08/01/07 03:31:02
>>451
ソースを読んでどこが悪いとか具体的に確信を持って言ってる?
なんか勘違いしてる気が…
457:デフォルトの名無しさん
08/01/07 05:35:00
そのへんを計測してみた人どこかにいないかな
458:デフォルトの名無しさん
08/01/07 06:23:28
なんかどっかのスレでも書いた気がするけど
俺のVista(HPx64)でMSYSちゃんが上手く動いてくれない
459:デフォルトの名無しさん
08/01/07 10:14:15
XPならHomeでもおk
460:デフォルトの名無しさん
08/01/07 10:27:17
MSYS1.0.10に1.0.11の何か上書きしたらイケましたわ。
461:デフォルトの名無しさん
08/01/07 13:00:45
使いもしないツールを多く含んだメタボ気味なコンパイラ使うより
いいかもね
462:デフォルトの名無しさん
08/01/09 00:20:59
少しスレ違いかもしれませんが質問させてください。
環境は、
MinGW 5.1.3
MSYS 1.0.10
自前のC++ソースをビルドしようとすると、
こんな感じのシンボル未定義のメッセージが並んでリンクエラーになります。
foo.cpp:(.gnu.linkonce.t._ZNK11foo16hogeERKSt6vectorIdSaIdEEj+0x14a) : undefined reference to `_cxa_begin_catch'
nmで見るとlibstdc++.aが必要なようですが、-lでばっちり指定しています。
./libstdc++.a:eh_catch.o:00000000 T ___cxa_begin_catch
./libsupc++.a:eh_catch.o:00000000 T ___cxa_begin_catch
何が原因なんでしょう。。打つ手なしっす。
463:デフォルトの名無しさん
08/01/09 00:33:27
-lの方が先に指定されていたりはしないよね?
464:462
08/01/09 01:08:24
>>463
-lstdc++を一番後ろに置いてます。
not foundが出るわけではないのでライブラリは見つけてるはずなのですが、、
コンパイラのインストールからやり直すべきなのでしょうか?
465:デフォルトの名無しさん
08/01/09 01:13:59
g++コマンドでリンクすりゃ、libstdc++を明示する必要はないはずだが。(勝手にリンカに適切なオプション渡してくれる)
466:デフォルトの名無しさん
08/01/09 01:31:54
>>465
一度g++に切り替えて試したときもlstdc++を付けたままで、まったく同じエラーが出ました。
早速明日外してやってみます。
467:デフォルトの名無しさん
08/01/09 01:52:52
>>462
アンダースコアの数が違うからリンクできるように見えない。
マップファイルとかアセンブリのソースとか確認しないとわかんないね。
468:デフォルトの名無しさん
08/01/09 21:12:22
バージョンが合ってないとか
469:デフォルトの名無しさん
08/01/10 22:14:59
C/C++の開発環境を整備:MinGWとEclipse CDT
URLリンク(builder.japan.zdnet.com)
470:デフォルトの名無しさん
08/01/13 16:32:21
UACが有効なVistaでcygwin使うとき、sudoみたいに管理者権限を動的に(必要なときに)与えるようにしたいんです。
ここで間違えないで欲しいのは、実行したユーザーが属するAdministratorsが保有するACL管理下の権限であって、Administratorの強制執行権限ではありません。
引数をコマンドとして実行するだけのプログラムにマニフェストを組み込んでもcygwinから実行するとNo permissionでキャンセルされます。
runasではadministratorでの実行は可能ですが、条件に合いません。
何かいい方法は無いでしょうか?
471:デフォルトの名無しさん
08/01/13 20:36:11
VisualStudio, gcc, vim, Cygwinで開発しています。
MinGWというのは使ったことがあるのですが、メリットがよく分かりませんでした。
上記の開発ツールに加えてMinGWも使うとしたときのメリットにどんなものがありますか?
472:デフォルトの名無しさん
08/01/13 21:46:31
Cygwinというのは苦肉の策であって、
例えばパス名の区切りがスラッシュになるなど、環境との親和性に問題がある。
VisualStudioはアクチがあり、法外に高額で、
かといってラーニングやスタンダードはライセンスにいろんな制約がある。
ただしカネがあるなら最適化他の面で圧倒的に有利だ。
gccってNTリソースパックのgcc?
NTのPOSIXサブシステム用はOSの汎用性がない。
MingWは完成度さえ高ければ素晴らしいのだがw
ハローワールドで数メガとか恐ろしいことになったりするw
473:デフォルトの名無しさん
08/01/13 22:18:13
>>471
その列挙の意味がよく分かりませんが、VSとcygwin上のgccとvimを併用してると解釈します。
URLリンク(ja.wikipedia.org)
↑cygwinとmingwの比較です。2つは哲学が異なります。
cygwinはmingwに比べwindowsシステムとの互換性が低い(パスとか)のでwindows向けの開発であれば避けた方がいいかもしれません。
しかし、cygwinにmingwが包括されています(詳しい位置づけはよく分かりませんが)。
dllの不要化やWindows APIの利用も可能です。cygwinとmingwを併用する利点はあまり無いと思います。
474:471
08/01/13 22:58:52
>>472
ありがとうございます。
Win32を使ったアプリを作らないせいか、環境とし親和性はあまり意識いたことないです。
やはり、Win32APIを使うと問題になってきますか。
VS Express 2005のフリー版を使っています。
gccはCygwin上のgccです。
>>473
リンクありがとうございます。
> VSとcygwin上のgccとvimを併用してると解釈します。
そうです。わかりにくくてすみません。
> しかし、cygwinにmingwが包括されています
それは初耳です。cygwinを使っていれば、mingwと同じかそれ以上の
ことが出来るということですか。
> cygwinはmingwに比べwindowsシステムとの互換性が低い(パスとか)ので
> windows向けの開発であれば避けた方がいいかもしれません。
windows向けの開発をする予定があるので、今からVSを使って慣れておこうかと思っている次第です。
windows向けであればcygwinよりmingwがいいんですか。
あるいは、windows向けであればビジネス的にはVSが圧倒的シェアかと思いますが、
個人的使用(趣味のプログラミング)であればVisualStudio2008などは高額で敷居が高いですね。
個人向けであれば、mingwが最適なのかなと思って、最近mingwが気になりだした次第です。
475:デフォルトの名無しさん
08/01/13 23:20:30
素直にVS使っとけ。どうせ2008も無償版が出るんだから。
POSIXを意識しないならWindows上でまでgcc使う必要はない。
476:デフォルトの名無しさん
08/01/14 01:43:18
>>472
ハローワールドで数メガとかならねーよw
# あ…Javaで書いてgcjでコンパイルとかしたらなるか
477:デフォルトの名無しさん
08/01/14 02:33:08
デバッグ情報てんこもりとか
478:デフォルトの名無しさん
08/01/14 03:08:49
[Test.java]
public class Test {
public static void main(String[] args) {
System.out.println("Hello, world.");
}
}
> gcj -O2 --main=Test -o test Test.java
> ls -lh test.exe
-rwxr-xr-x 1 hoge none 6.1M Jan 14 03:04 test.exe*
> strip test.exe
> ls -lh test.exe
-rwxr-xr-x 1 hoge none 2.1M Jan 14 03:06 test.exe*
うはwww
479:デフォルトの名無しさん
08/01/14 14:10:45
>>471
VS と MinGW の両方でコンパイルできるコードが割と簡単に書けるところが MinGW のメリット。
MinGW では基本的に Win32 API を使う。
スレッド、WinSock2、DLL のロードなどは Win32 API を利用するので
VS 用と MinGW 用のコードの差分は小さくなることが多い。
コンパイラ依存の部分を #ifdef で分ければ大半のコードを共用できる。
Cygwin は使ったこと無いのでパス。
480:デフォルトの名無しさん
08/01/14 14:43:38
逆に、cygwinだとWinSockを使わないでソケット周りを書けるのが魅力。
要は、Linuxと同じソースでいける可能性が高い。
481:デフォルトの名無しさん
08/01/14 22:47:17
>>474
windows用のソースをwindows用にコンパイルするのがmingw、勿論VSも
linux用のソースをwindows用にコンパイルするのがcygwinのgcc
cygwinでもwindows用のソースをコンパイルする事はできます、そこで使われているのがmingw
このcygwinのmingwが本家と同一なのかどうなのかはよく知りませんが。
gcc --target-help の最初の10行程を見てみてください、参考になるかと思います。
482:デフォルトの名無しさん
08/01/15 04:56:41
一部のファイルをインクルードすると
failure to convert cp932 to UTF-8
というエラーが発生するんですが
これは何が原因なんでしょう?
別のエディタで文字コードをUTF-8にして保存しても直りませんでした
483:デフォルトの名無しさん
08/01/15 05:46:45
改行コードかも
484:デフォルトの名無しさん
08/01/15 06:25:37
>>483
阿呆ですか。
>>482
--input-charsetは?
485:デフォルトの名無しさん
08/01/15 07:23:08
いやまじであるぜ?
改行コード
486:デフォルトの名無しさん
08/01/15 14:22:35
>>482
「一部のファイル」ってのを明確すると話が早かったりするかも。
boostだったりしない?
487:本田
08/01/17 17:40:38
>COMプログラマの解説書
>Crispin Goswell
>Microsoft Office Product Unit
>1995年 春
>1995年9月13日改訂
URLリンク(msdn.microsoft.com)
>抄録
>この解説書は、
>Microsoft(r) OLE Component Object Model(COM)オブジェクトを作成し、
>効果的に使用する方法を説明しています。
>例文はほとんどCで書かれていますので、実際に何が行われているかが、大変分かりやすく示されています。
>プログラマの中には、オブジェクトを実行するためにC++を好んで使用する人もいるでしょう。
>C++プログラマの観点からCOMの概念および基本的な使用法を論じているのは
>Kraig Brockschmidt著のInside OLE (第2版)(MSDN Library(Books))です。
>COMとは何か、またその設計や哲学の後ろにある動機付けをより理解する事に興味がある読者なら、
>Component Object Model Specification(MSDN Library(Specifications))の最初の2章を読んでください。
>第1章には簡単なイントロダクションを、第2章では徹底的に概要を解説してあります。
>この解説書ではInside OLEとCOM Specificationにある情報を、
>COMオブジェクトを実装する良い方法をいくつか示しながら解説するようにしてあります。
488:デフォルトの名無しさん
08/01/17 18:01:35
>>482
input-charset を CP932 として使っていながら、欧州由来のコードで
CP932的に不正なものを含むソースをコンパイルしたんだと思う。
ffmpegの何かのヘッダとか。
489:デフォルトの名無しさん
08/01/20 14:26:15
エクスプローラーを使っているときに
今見ているフォルダでCgywin窓を開きたいのですが
どうしたらいいですか?
490:デフォルトの名無しさん
08/01/20 15:01:59
アドレスバーからコピーして、cdすれば?
491:デフォルトの名無しさん
08/01/20 15:39:29
>>489
cygwin hereでググれ
492:デフォルトの名無しさん
08/01/20 19:41:55
俺はこうしてる
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\WinHandPrompt]
@="Zsh(&C)"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\WinHandPrompt\command]
@="cmd.exe /F:on /K \"cd %L&&zsh\""
493:デフォルトの名無しさん
08/01/21 21:47:51
窓の手の流用か
494:デフォルトの名無しさん
08/01/22 02:51:02
あれ、なんでばれたんだろう?
、と思ったら書いてあったねハッキリと
495:デフォルトの名無しさん
08/01/26 01:51:09
MSYSからgetchとかkbhitを拾うのはどうしたらいい?
コマンドプロンプトではできることが
MSYSでは上手くいかないことが意外に多い
printfは必ずfflushも書かないと表示されないし・・・(TT
496:デフォルトの名無しさん
08/01/26 05:18:27
毎回のようにfflushするくらいならsetvbufに_IOLBFしとけ。
で、getchやkbhitはC/C++にもPOSIXにも準拠していないし、Win32にも無い。
強いて言えば、DOSのデファクトスタンダードだったので残してある、というだけ。
Win32APIを使わないとするなら、
conio.hじゃなくてcursesとかを使うんじゃないの?知らないけど。
497:デフォルトの名無しさん
08/01/26 11:11:00
>>495
>printfは必ずfflushも書かないと表示されないし・・・(TT
リダイレクトする用途を考慮しなくていいなら、printf()ではなくfprintf(stderr, ...)したまえ。
498:デフォルトの名無しさん
08/01/26 15:58:13
いま操作しているPC(ネットワーク上でのコンピュータ名はPC1)のcygwin(以下cygwin1)から
sshでほかのPC(ネットワーク上でのコンピュータ名はPC2)のcygwin(以下cygwin2)にログインして
\\PC1\Shareにアクセスしようとすると"-bash: cd: \\yy-x60s\Share: Permission denied"と言われてしまいます
cygwin2から直接"cd \\\\PC1\\Share"を実行するとこちらは成功します
cygwin2で"setfacl -m user:SYSTEM:rwx \\\\PC1\\Share"を実行して
直後に"getfacl \\\\PC1\\Share"を実行すると
# file: \\PC1\Share
# owner: pc2user
# group: なし
user::rwx
group::r-x
other:r-x
mask:rwx
とでていて設定が反映されてないことが原因なような気がするのですが、どのように設定するばよいか分かりません
499:デフォルトの名無しさん
08/01/26 15:58:46
そういえばstderrはバッファリングされないからflushする必要もないよね
500:デフォルトの名無しさん
08/01/26 16:13:01
でなきゃ困るだろ.そもそも
>printfは必ずfflushも書かないと表示されないし・・・(TT
は,それが当たり前だということを知らずに泣いてるだけの話だろ
501:デフォルトの名無しさん
08/01/26 19:20:24
>>495-496
MSYS では、ってのは rxvt では、ってことだよね。
pdcurses の getch を使うプログラムを書いて試してみたけど rxvt ではダメっぽい。
LINES value must be >= 2 and <= -4096: got 1
initscr(): LINES=1 COLS=1: too small.
とか出てプログラムが異常終了する。
ググってみると lynx や aspell で同じ問題が起こっているみたい。
rxvt では (pd)curses は NG。
502:デフォルトの名無しさん
08/01/30 21:32:07
質問です。非常に初歩的ですみません。
ジョークコマンド sl を、Cygwin や その他 dll 等に依存しない、exeファイ
ル単体で動く形にコンパイルしたいのです。
URLリンク(chaosweb.complex.eng.hokudai.ac.jp)
URLリンク(freethink.way-nifty.com)
これらを参考に、Mingw、GnuWin32 をそれぞれフルインストールしました。
makefile の -lcurses と sl.c の usleep を書き換えました。
また、makefile を
CC=c:/mingw/bin/gcc.exe
と書き換えました。
そこから先が分かりません。
gnuwin32 のコマンドプロンプトから、makeを実行すると、以下のようなエラー
が出ます。
gcc -O -o sl sl.c -lpdcurses -ltermcap
sl.c:30:20: curses.h: No such file or directory
sl.c: In function `my_mvaddstr':
sl.c:42: error: `ERR' undeclared (first use in this function)
sl.c:42: error: (Each undeclared identifier is reported only once
...(略)
ということで質問です。GnuWin32 の termcap と pdcurses を、MinGW から利
用できるようにするには、どのように何を設定したらいいのでしょうか?
503:デフォルトの名無しさん
08/01/30 23:04:14
>>502
gcc の -I オプションで curses.h があるディレクトリを指定
504:502
08/01/30 23:57:09
>>503
ありがとうございます。makefileのCFLAGSを以下のように修正したところ、
CFLAGS=-O -I "/Program Files/gnuwin32/include/"
一歩前進し、今度はこんなエラーが出るようになりました。
c:\mingw\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe:
cannot find -lpdcurses
collect2: ld returned 1 exit status
make: *** [sl] Error 1
今度はどこに何を設定したら良いでしょう?
505:デフォルトの名無しさん
08/01/31 00:01:20
1を聞いて10を知れ、とは言わないがちょっとな・・・
506:502
08/01/31 00:46:02
ごめんなさい、図々しいお願いですね。
gcc の man を見ているのですが、ライブラリの検索パスを追加するオプショ
ンが見つかりません。
また、C:\Program Files\gnuwin32 の下に pdcurses に相当するライブラリが
あるのかと思ったのですが、libpdcurses.a というファイルが見つかりません。
行き詰ってしまいました。
507:デフォルトの名無しさん
08/01/31 00:49:24
-L でしょ?
508:502
08/01/31 01:08:26
うわあ、これは恥ずかしい。申し訳ありません。
日本語manを"ライブラリ"で検索していたので見つかりませんでした。
c:\program files\gnuwin32\lib に pdcurses がなく、curses があったので、
Makefile を元に戻しました。
--- sl.c ----
/* usleep(20000); */
sleep(1);
ここで今、こんなエラーが出ています。
c:\DOCUME~1\ユーザ名\LOCALS~1\Temp/ccGQbaaa.o:sl.c:(.text+0x1a4):
undefined reference to `sleep'
collect2: ld returned 1 exit status
たぶん、正しいヘッダをインクルードすればいいと思うのですが。
509:デフォルトの名無しさん
08/01/31 01:48:36
>>508
> たぶん、正しいヘッダをインクルードすればいいと思うのですが。
そう思うんだったら、includeディレクトリの中でsleep()の宣言を探す
べきでしょ。たぶん無いけど。
510:502
08/01/31 02:01:22
おっしゃるとおりです。見つかりませんでした。
/MinGw/include には何もなく、
/Program Files/gnuwin32/include には
glibc/unistd.h に sleep() がありましたが、includeすると大量のエラー。
winx/timex.h に nanosleep() がありましたが、
undefined reference to `nanosleep' のエラーが出ます。
/cygwin/include でも見つからなかったので、どうも方針がまずいようです。
Cygwin 上だと何もせずにコンパイル、実行できましたので。
今日はいったん中止します。
511:デフォルトの名無しさん
08/01/31 08:33:38
このまま続けると嫌われるよ。
おそらく、初心者板の方が適している質問と思われ。
# -Iや-Lオプションなんて、cc時代から定番のオプションだし。
# CygwinやMinGWの問題か切り分けられて無いし。
512:502
08/01/31 13:11:55
ごめんなさい、では最後に一点だけ。
/* usleep(20000); */
この行をコメントアウトすると、コンパイルは通るようになりました。まあ実
行すると、一瞬で終わってしまうのですが。
ただし、カレントディレクトリに curses2.dll を必要とします。exeファイル
のみで実行できるようにならないでしょうか?
見よう見まねで gcc に -static オプションを付けてみましたが、大量にコン
パイルエラーが出てしまいます。
c:\DOCUME~1\ユーザ名\LOCALS~1\Temp/ccy2baaa.o:sl.c:(.text+0x34):
undefined reference to `_imp__stdscr'
c:\DOCUME~1\ユーザ名\LOCALS~1\Temp/ccy2baaa.o:sl.c:(.text+0x4f):
undefined reference to `imp( *) static'
c:\DOCUME~1\ユーザ名\LOCALS~1\Temp/ccy2baaa.o:sl.c:(.text+0x6b):
undefined reference to `_imp__stdscr'
513:デフォルトの名無しさん
08/01/31 13:17:19
>>512
そのpdcursesにスタティックリンク用のライブラリが添付されてない限
り、キミには無理。
514:502
08/01/31 13:22:08
ありがとうございました。dllは諦めます。
あとはusleep(20000)ですが、これはどこか初心者スレを探して質問します。
515:502
08/01/31 15:17:52
先ほどの者ですが、解決しました。
#include <windows.h>
...
Sleep(20);
Windowsプログラミングに詳しい知人にアドバイスされ、このように修正したと
ころ、見事に動くようになりました。
どうもお騒がせしてすみませんでした。ありがとうございました。
516:デフォルトの名無しさん
08/01/31 15:59:00
最初からそいつに聞け糞が
そいつはそいつで、掲示板で聞けようぜえ
と思ってるだろうがな
517:デフォルトの名無しさん
08/01/31 16:23:57
「mingw sleep」でググるだけで、ヒントがたくさん出てくるんだけどなあ。
518:502
08/01/31 18:53:51
ごめんなさい、訳があって急ぎだったので、無神経な質問をしてしまいました。
ご迷惑をおかけしました。
今度Java質問スレで、超初心者にていねいに答えますので、それで埋め合わせ
にさせてください。
519:デフォルトの名無しさん
08/01/31 20:08:57
人に教えてる暇があったら勉強しろ
520:デフォルトの名無しさん
08/02/01 09:18:44
以上 >502 の日記からお伝えしました
521:デフォルトの名無しさん
08/02/02 07:20:34
Cygwinでcファイルをコンパイルしようとしたところ、
3[main] ? 26824 init cheap: Couldn't reserve 3600336 bytes of space for cygwin's heap, Win32 error 487
というエラーメッセージを4つ吐くのですが、解決策はありますでしょうか?
ググってみて、再インストールもしてみたのですができませんでした…
WinXP Home SP2
RAM DDR SDRAM 512MB
522:521
08/02/02 08:38:29
すみません自己解決しました。
System32にCygwin1.dllがあったのが悪かったようです。
523:デフォルトの名無しさん
08/02/05 19:57:57
guileのinfoにある例(インタプリタを作るだけ)をmingwでコンパイルしたら
sys/select.h
ieeefp.h
が無いと言われてしまいます。
確かに/includeにも/mingw/includeにもそんなファイルはありゃしませんが。
mingwじゃlibguileは使えないのでしょうか?
バージョンは
gcc: 3.4.2
guile: 1.8.2
です。
524:デフォルトの名無しさん
08/02/05 20:08:18
_____ ___
<ー、\\ヾiγ/rニミ
\ヾヘヽヽリ川///γ
>川/ ̄"""" ̄「リ
(ヘir-=o=ッィ=o=j
_ハ| `ー/ ii、i
<\ ヽヽ `ー′/
\ヽ \  ̄ ̄/∩へ Cygwinじゃ駄目なのか?
__ii  ̄/二ノ レ< guileのmakeに必要な環境やライブラリはあるのか?
ヘヘヘ\ヽニ>-イ|( Y/)
ノ// / ヽ_ノ|ヽハ/)
ノ ̄ `ー | |ヒ/
525:デフォルトの名無しさん
08/02/05 20:13:56
>>524
試しにcygwinでやってみたら、gmpを入れてないのでハネられます。
まあ、gmp入れてcygwinでやればいいだけなんだろうけど。
主力環境がmingwなのでmingwでやりたいなと。
526:デフォルトの名無しさん
08/02/05 20:20:56
敗因は2つだ
- >>525 は sys/select.h が何なのかわかってない
- >>525 は mingw がどんな位置づけにあるものかもわかってない
527:デフォルトの名無しさん
08/02/05 20:31:43
guileを使うのにPOSIX環境である必然性があるのかな
528:デフォルトの名無しさん
08/02/05 21:10:01
ないと思うが…
529:デフォルトの名無しさん
08/02/05 23:46:04
では、mingwの位置づけ云々は関係ないような。
select.hを使わないようにconfigureできないものか。
530:デフォルトの名無しさん
08/02/06 00:23:46
>>529
mingwの位置付けが判っていたら当然そういう風に行動するだろ?
ってか guile をビルドの話なのか?
guile をビルドするときなら configure --disable-posix とかあった気がするが…
531:デフォルトの名無しさん
08/02/06 01:24:34
>>530
sourceforgeのmingw用にビルドされたguileをインスコしてlibguileまで一緒に入っているのにselectがないとかもうね、なんなんだと。
532:デフォルトの名無しさん
08/02/06 05:34:13
じゃあきっとそのlibguileは --disable-posix で作られてるんだろ?
533:デフォルトの名無しさん
08/02/06 12:51:39
>>532
guileの意義がわかんねーなら上から目線で語るなよwwww
534:デフォルトの名無しさん
08/02/09 17:33:53
…と、>>533が最上位から申しております。
535:デフォルトの名無しさん
08/02/09 18:04:39
Cygwinでgcovを使いたいのですが、
gccに-mno-cygwinのオプションを付けて実行すると以下のようなエラーが出ます。
test.gcda:Version mismatch - expected 304m got 304c
-mno-cygwinを付けてgcovを使うことはできないのでしょうか?
Cygwinのバージョンは1.5.25-7です。
536:デフォルトの名無しさん
08/02/10 03:15:32
Cygwin v2.573.2.2で開発しています。C++からperlを使おうと思って、とりあえず下のソースを拾ってきました。
#include <EXTERN.h>
#include <perl.h>
static PerlInterpreter *my_perl;
void main ()
{
char *perl[] = { "", "-e", "printf(\"%x\", 3735928559);" };
my_perl = perl_alloc ();
perl_construct (my_perl);
perl_parse (my_perl, NULL, 3, perl, (char **)NULL);
perl_run (my_perl);
perl_destruct (my_perl);
perl_free (my_perl);
}
それを perl_sample.cpp という名前で保存し、
g++ perl_sample.cpp -I/lib/perl5/5.8/cygwin/CORE -L/lib/perl5/5.8/cygwin/CORE
と、コンパイルしようとしました。しかし、
/cygdrive/c/Users/hoge/AppData/Local/Temp/ccwiKLdy.o:perl_sample.cpp:(.text+0x40): undefined reference to `_perl_lloc'
/cygdrive/c/Users/hoge/AppData/Local/Temp/ccwiKLdy.o:perl_sample.cpp:(.text+0x52): undefined reference to `_perl_construct'
/cygdrive/c/Users/hoge/AppData/Local/Temp/ccwiKLdy.o:perl_sample.cpp:(.text+0x7e): undefined reference to `_perl_parse'
/cygdrive/c/Users/hoge/AppData/Local/Temp/ccwiKLdy.o:perl_sample.cpp:(.text+0x8b): undefined reference to `_perl_run'
/cygdrive/c/Users/hoge/AppData/Local/Temp/ccwiKLdy.o:perl_sample.cpp:(.text+0x98): undefined reference to `_perl_destruct'
/cygdrive/c/Users/hoge/AppData/Local/Temp/ccwiKLdy.o:perl_sample.cpp:(.text+0xa5): undefined reference to `_perl_free'
collect2: ld returned 1 exit status
と、エラーをはきます。perl自体はcygwinのインストール時に入れたものです。perlのlibが無いのかと思い、探しましたが見つからず、また、perlの最新版をコンパイルしようとしましたが失敗しました。ちなみにOSはVistaです。
どのようにすればコンパイルできるようになるのでしょうか?
537:デフォルトの名無しさん
08/02/10 05:47:34
>>535
URLリンク(www.cygwin.com)
538:デフォルトの名無しさん
08/02/10 08:22:53
>>536
ライブラリのサーチパスは指定しているけど、ライブラリそのものを指定していないじゃん。
539:デフォルトの名無しさん
08/02/10 09:52:41
>>537
Cygwinで-mno-cygwinを使う代わりに本物のMinGWを使うことで解決できました。
ありがとうございました。
540:デフォルトの名無しさん
08/02/10 13:45:20
>>538
ありがとうございました。無事コンパイルすることができ、実行もできました。
541:デフォルトの名無しさん
08/02/20 01:17:56
ckのソースどっかに落ちとらんかのー
542:デフォルトの名無しさん
08/02/22 00:44:21
どぞ URLリンク(www.ch-werner.de)
543:デフォルトの名無しさん
08/02/22 10:17:09
ん? ck違い!? とりあえずサンクスコ
544:デフォルトの名無しさん
08/02/23 09:23:36
浮動小数点演算を行なうルーチンをコンソールアプリ(main関数)から呼んだときと
Win32 API で書いた GUI アプリから呼んだときとで計算結果が違うという問題に
悩まされています。どなたか解決策をご存じないでしょうか。
問題を再現する、できるだけ小さなプログラムを作りました。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
付属の Makefile は MinGW (GNU make)用です。
test1.exe(コンソールアプリ)と test2.exe(GUI アプリ)をビルドして実行します。
どちらも init.c の initialize() を呼び出します。
initialize() は double 型の配列 x を初期化する関数です。
計算結果を見るために x[5] と x[6] をカレントディレクトリの output.txt に書き出しています。
gcc version 3.4.5 (mingw special) では以下のようになりました。
test1.exe
x[5] = 4.7474747474747475e-001
x[6] = 4.6969696969696967e-001
test2.exe
x[5] = 4.7474747474747475e-001
x[6] = 4.6969696969696972e-001
同じルーチンを呼んでいるのに x[6] の値が異なります。x[5] は一致しています。
比較のために VC++ Toolkit 2003 (nmake.exe) 用の Makefile.vc も入れておきました。
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
でコンパイルしたところ2つのプログラムの計算結果が配列 x の全要素について一致しました。
MinGW (gcc) でコンパイルしたときの test2.exe の計算結果と一致しています。
すなわち test1.exe の計算結果がおかしいようです。
どなたか解決策をご存知の方がいらっしゃいましたらご教示下さい。よろしくお願いいたします。
545:デフォルトの名無しさん
08/02/23 09:53:13
面倒だからソースは見ていないけど、どちらかはFPUで計算を行いどちらかはSSEで計算を行なっていると思われる。
コンパイルオプションで強制できるから、必要なら強制すればいい。
但し、doubleの精度を超えた領域の話なのでどちらも間違っているとはいえない。
546:デフォルトの名無しさん
08/02/23 09:55:30
./test1
4.7474747474747475e-001
4.6969696969696967e-001
./test2
4.7474747474747475e-001
4.6969696969696967e-001
gcc version 4.1.2
ごめん、役に立てそうも無いw
とりあえずmap出力してdiff取ってみたらどうか
547:デフォルトの名無しさん
08/02/23 10:01:53
アセンブリ出力を見るだけだろ。常考
548:デフォルトの名無しさん
08/02/23 10:17:20
同じになっちまった。
.gcc version 3.4.5 (mingw special)
/test1
cat output.txt
4.7474747474747475e-001
4.6969696969696967e-001
gcc -o test2.exe -mwindows test2.c init.o
./test2
cat output.txt
4.7474747474747475e-001
4.6969696969696967e-001
gccオプションに--save-temps
しかし、同じ.oファイル使ってるから意味ないか。
fprintf(fp, "%hX\n", x[5]);
fprintf(fp, "%hX\n", x[6]);
これ出力しても結果異なるよね?
まぁ、ollydbgあたりでステップ実行すれば原因はわかるかと思う。
549:デフォルトの名無しさん
08/02/23 10:20:48
そういえば、全然関係ない話だけど
MinGWのprintfで、%hhXとかうまく機能しない原因知ってる人いない?
550:デフォルトの名無しさん
08/02/23 11:00:51
msのcランタイムがc99対応じゃないから
551:デフォルトの名無しさん
08/02/23 11:19:49
msのランタイムって、FPUの精度を固定していないか?
>544はもう一回動かしてもtest1のx[6]は違う値のまま?
552:デフォルトの名無しさん
08/02/23 12:01:31
15桁目まで同じだからdoubleの精度としては問題ない。
553:549
08/02/23 12:03:17
C99以前ではhhxって使えなかったんだ。
知らなかった。
554:デフォルトの名無しさん
08/02/23 12:18:37
x86のFPUは、80ビット精度と64ビット精度が存在する。
SSE2は64ビット精度。
とかそのへんの問題かな?
>>551に一票。
浮動小数点演算の検算で精度気にしすぎると禿げるぞ。
ε使えε
555:デフォルトの名無しさん
08/02/23 12:55:41
テキストで出力すると計算の問題なのか出力関数の問題なのか分からんな。
バイナリで出力(あるいは16進ダンプ)してみて
どうなるかチェックした方がいいと思う。
例えば
fprintf(fp, "%.16e\n", x[5]);
これを
output(fp, x[5]);
にして、output を別翻訳単位で下のように定義してみたらどう?
void output(FILE *fp, double value)
{
union {
double value;
char array[sizeof (double)];
} dc = { value };
int i;
for(i = 0; i < sizeof (double); ++i) {
fprintf(fp, "%02X ", dc.array[i]);
}
fputchar('\n', fp);
}
556:デフォルトの名無しさん
08/02/23 12:56:53
_controlfp あたりでぐぐれ
557:デフォルトの名無しさん
08/02/23 13:05:31
VCとgccのデフォルトのFPU計算精度は異なるらしい
URLリンク(homepage1.nifty.com)
_controlfpでいじると同じ精度にできる
558:デフォルトの名無しさん
08/02/23 13:11:46
おー、それだそれだ、思い出した。
559:544
08/02/25 14:04:07
皆さまコメントありがとうございました。>>556-557の方法で解決いたしました。
使用していた Windows 環境では MinGW でコンパイルしたコンソールアプリは 53 ビット、
MinGW でコンパイルした GUI アプリと VC++ Toolkit 2003 でコンパイルした両アプリは
64 ビットの演算精度を用いていたようです。
別の Windows 環境で試したところ MinGW でも両アプリとも同じ計算結果になりました。
コンソールアプリを MinGW でコンパイルすると演算精度が 53 ビットになる環境がある、
確実を期すなら _controlfp を使え、ということですね。
髪がすこし減ってしまった気がします。本当にありがとうございました。
560:デフォルトの名無しさん
08/02/25 14:29:41
つーか、doubleの精度以上の処を云々すると禿げるよ。
どうせ微小誤差が付き纏うんだから適当な桁で丸めて表示するとかしないと。
561:544
08/02/25 15:57:08
>>560
おっしゃる通りです。
今回の件が気になってしまったのは、シミュレーションコードのデバッグ中だったためです。
実行環境やコンパイラが違ったら気にしないところですが、同じ環境で同じオブジェクトコードに
同じ入力データを与えているにも関わらず計算結果が違うことにとまどってしまいました。
原因はdoubleの範囲を越えた部分の誤差でしたが、この問題を調べるきっかけになった
シミュレーション結果の違いはもっと有意な差だったので看過できませんでした。
育毛にはげみます。
562:554
08/02/25 21:54:36
>>561
> シミュレーション結果の違いはもっと有意な差だったので
俺は予言する
もまいは禿げる。
肝心のアルゴリズム、あるいはテストベクタが草ってんじゃない?
563:デフォルトの名無しさん
08/02/25 22:13:26
>>561
IEEEに準拠するように80bitではなく強制64bitにするオプションがあったはずだが
564:デフォルトの名無しさん
08/02/26 13:18:47
>>563
>556-559
565:デフォルトの名無しさん
08/02/27 14:03:31
そんなあなたを禿増してあげましょう
566:デフォルトの名無しさん
08/03/04 02:29:06
>>541 発見しますた
URLリンク(sohda.net)
567:デフォルトの名無しさん
08/03/07 09:16:50
OS再インスコしてdevcpp+SDLで以前のソースコンパイルしたらWinMain@16なエラーが('A`)
int main(ryから始めてるし-mwindowsも付けてるのに
cygwinでもインスコすれば変わるかなあ
568:デフォルトの名無しさん
08/03/07 10:14:40
-lSDLmain付け忘れ&-l順番ミスでしたサーセン
SDL外したらコンパイル通って、sdl-config見てやっと思い出した
569:デフォルトの名無しさん
08/03/24 17:59:52
相談じゃなくて雑談になるんだけど
g++4.3.0をビルドしてみたんだけど、g++のbinが460,475ってでかくね?
cygwinのインストーラからのg++3.4.4は96,789、verうpとかモジュール化とか考えてもねぇ。
とか思いながら動作テストで↓コンパイルしたら、2,339,843、メガってどうなの。(ちなみに3.4.4でも477,682、g++4.3.0binよりでけぇ
#include <iostream>
int main(){return0;}
これって一体何がバイナリに組み込まれてるのか気になるんだけど、分かる人教えてー、誘導だけでもいいから。
ちなみに#include<iostream>だけ消したら3.4.4が7,673、4.3.0が10,915と小さくなった。(勿論gccじゃなくてg++で
570:デフォルトの名無しさん
08/03/24 18:09:00
stripしろよ
ライブラリのdebug infoもな
571:デフォルトの名無しさん
08/03/24 18:30:48
なるほど、どうもー。
572:デフォルトの名無しさん
08/03/25 07:07:47
g++ 普通にビルドできるのか?
それならなんで Cygwin のパッケージは 3.4 のままいっこうに動かないんだろう。
573:デフォルトの名無しさん
08/03/25 13:33:08
そのうち、stripしてもまだサイズがでかいがどうしてだ? といった
ググれば5秒で分かるFAQを聞きに戻ってきそうだ
574:デフォルトの名無しさん
08/03/25 14:25:42
嫌味だけは一丁前でな
575:デフォルトの名無しさん
08/03/25 17:16:47
>>572
できたよー
そういや俺も昔クロスコンパイラ作ろうとしたけどビルド出来なかった覚えがあるな
そんときは原因分からず仕舞いやったけど
cygwinのパッケージはlinuxでビルドされてるらしいから3.4で動かない原因は別なんじゃない?
576:デフォルトの名無しさん
08/03/29 06:08:53
Windows XP SP2 上で Cygwin gcc 3.4.4 の MinGW モードで開発してるんですが、
システムメニューの項目を EnableMenuItem() を使ってグレーアウトさせようとしてもできません。
具体的には、ウィンドウプロシージャで WM_CREATE を受け取ったとき
EnableMenuItem(GetSystemMenu(hWnd, FALSE), SC_MOVE, MF_GRAYED);
としても、システムメニューの「移動」がグレーアウトせず、有効なままになってしまいます(実際にウィンドウ移動もできる)。
MF_GRAYED を MF_DISABLED にしても同様で、システムメニューからウィンドウ移動ができてしまいます。
DeleteMenu(GetSystemMenu(hWnd, FALSE), SC_MOVE, MF_BYCOMMAND);
ならば正常に機能し、項目が削除されるんですが…。
似たような環境で EnableMenuItem() によるシステムメニュー項目のグレーアウトができている方がいれば
方法など教えていただけないでしょうか?
577:デフォルトの名無しさん
08/03/29 06:18:22
すみません。追記です。
EnableMenuItem(GetSystemMenu(hWnd, FALSE), SC_CLOSE, MF_GRAYED);
は正常に機能し、システムメニューの「閉じる」とタイトルバーの×ボタンがグレーアウトするようです。
となると「移動」とか「サイズ変更」がグレーアウト/無効化できないのは Windows API 自体の仕様なんですかね?
もしそうだったらスルーしてください。Cygwin + MinGW 環境固有の問題かと早合点してしまったので。
578:デフォルトの名無しさん
08/03/29 17:36:49
Win32 API スレの管轄だろうな。
ま、それはともかく設定するタイミングが駄目だと思う。
URLリンク(msdn.microsoft.com)
>GetSystemMenu
>
>状況によって、システムはウィンドウメニューの標準的なメニュー項目の一部を自動的に淡色表示にします。
>アプリケーションは、どのメニューも表示されていないうちに WM_INITMENU メッセージに応答することにより、
>メニュー項目を独自に選択したり淡色表示にすることができます。
ということで、WM_INITMENU でやればいいと思う。っつーか、普通のメニューでも項目の無効化等はそこでやると思うんだけど。
579:デフォルトの名無しさん
08/03/31 13:20:29
>>578
スレ違いの質問にお答えいただいて恐縮です。
仰る通り WM_INITMENU を受け取ったときに設定することで「移動」「サイズ変更」もグレーアウトさせることができました。
ただし、WM_INITMENU メッセージでは wParam に対象メニューハンドルが格納されるらしいのですが、
システムメニューに関してはこれは当てはまらないようです。なので、
if(wParam == (WPARAM)GetSystemMenu(hWnd, FALSE)){
...
}
などとすると if 文の中身は決して実行されないようです。
よって、システムメニューを設定するだけなら wParam は無視すべき、ということみたいです。
580:デフォルトの名無しさん
08/03/31 13:46:42
WM_INITMENUPOPUPなら見分けがつくんでない?
581:デフォルトの名無しさん
08/03/31 14:43:40
>>580 アドバイスありがとうございます。やってみましたが、
if(HIWORD(lParam) == 1){
...
}
というテストはうまくいくものの、wParam にはシステムメニューのハンドルが入っていないようです。
ですので、EnableMenuItem() などに渡すメニューハンドルはやはり GetSystemMenu() を使って自前で取得しなければ
ならないようです。
また、WM_INITMENUPOPUP を受け取ったときに EnableMenuItem() を呼ぶと、タイトルバーから初めてシステムメニュー
を呼び出したとき、システムメニューの表示位置が若干上にずれて、タイトルバーを覆い隠すような形で出てくるようです。
まあ2回目以降は正常に戻るので、気にするほどのことではないかもしれないですが…。
あと、WM_INITMENU の場合は対象がシステムメニューかどうか見分けが付かないので、自分で初回スイッチのような
ものを用意して対処する必要がありそうですね。
それと、さっき色々試していて気が付いたのですが、WM_INITMENU または WM_INITMENUPOPUP を受け取ったときに
EnableMenuItem() する方法だと、タスクバーを初めて右クリックしたときに項目が無効にならないようです。
2回目以降、もしくは初回であっても事前にタイトルバーからシステムメニューを表示させていれば EnableMenuItem()
の設定が反映されるんですが…。
調べてみたところ、タスクバーが右クリックされたときには非公開メッセージ 0x313 が送られてくるとの情報があったので、
(参考: URLリンク(www.hey-to.net))
0x313 を捕捉し、そのハンドラで EnableMenuItem() などの設定を行い、
さらに DefWindowProc() にメッセージを処理させればよい…みたいです。
>>576の環境でしかテストしていないのであまり自信がないですが、これだと一応タスクバー初回右クリック時も正しく
項目が無効化されたシステムメニューが表示されます。
とはいえ、非公開メッセージに依存するのも微妙な感じなので、いっそ WM_CREATE のハンドラで無効にしたい項目を
DeleteMenu() してしまうのが一番簡単かもしれないですね。
長文失礼しました。Windows って難しいです。
582:デフォルトの名無しさん
08/03/31 15:22:25
>>581
Win32 API スレいって揉まれてくるといい
583:デフォルトの名無しさん
08/04/01 13:51:30
cygwinでopenmpは使える??
584:デフォルトの名無しさん
08/04/01 18:57:24
>>581
これじゃダメなんかい?
DWORD dwStyle = GetWindowLong(hWnd, GWL_STYLE) & ~WS_SIZEBOX;
SetWindowLong(hWnd, GWL_STYLE, dwStyle);
585:デフォルトの名無しさん
08/04/03 15:23:40
windows2k MinGW を入れたいのです
MinGWインストーラがネット無いので使えません
ソースフォージからどれを落とせば良いでしょうか
またそれは全て同じフォルダに上書きで良いでしょうか
binフォルダなどかぶっているものがおおいんです
使いたいのはC、C++、SDL、OpenGLです
パスは適当に通そうと思っています
586:デフォルトの名無しさん
08/04/03 17:14:48
MinGWインストーラはDownload Onlyを選べば、落とすだけを選択できるぞ
あとは上書きで桶
587:デフォルトの名無しさん
08/04/03 17:18:07
>>586
おおありがとう!
じゃあ遠かったHelloWorldも近づきますノシッ
588:デフォルトの名無しさん
08/04/11 13:50:57
ちょっとお聞きしたいのですが、mingwでは-Iオプションは使えないのでしょうか?
g++ --help でリストに出てこないのです。
しかしg++ -I とすると argument to `-I' missing のような感じで、unrecognize option `-j' みたいな感じではでてこないので、使えるような気もするのですが・・
589:デフォルトの名無しさん
08/04/11 14:32:18
>>588
g++ -v --help で出てきませんかな。
正直 gccのオプションはかなり多いので g++ --version でバージョンを確認してから
ぐぐるなり GCC online document URLリンク(www.gnu.org)
から探すなりしてマニュアルを読んだほうがよいかと思います。
590:デフォルトの名無しさん
08/04/11 14:42:10
>>588
使える
591:588
08/04/11 15:00:25
>>588さん
>>580さん
レスありがとうございます。
使えるのですか。
-I使う場合は、Windows用に
-IC:\Program Files\...
みたいな感じで書けばよいのでしょうか?
上記の感じでやってみたのですが、うまくいかなく・・
592:588
08/04/11 15:01:37
>>588さん→>>589さん
>>580さん→>>590さん
593:デフォルトの名無しさん
08/04/11 15:06:08
>>591
スペースが入ってるみたいだけど...
594:デフォルトの名無しさん
08/04/11 15:21:52
>>591
パスにスペースを含む場合は "" で囲むと聞いたことがあるけど
-I"C:\Program Files\..." ではだめかな
595:デフォルトの名無しさん
08/04/11 15:48:56
分割されなきゃいいのだから、空白をエスケープするだけでもいいかも。
それはさて、ディレクトリ区切りのバックスラッシュってエスケープする必要あるんでない?
596:デフォルトの名無しさん
08/04/11 16:17:38
スラッシュにした方がいいな
-l"C:/Program files/..."
ていうか相対パス指定できるように環境を整えた方が
のちのち便利だと思う
597:デフォルトの名無しさん
08/04/11 17:43:01
レス下さった方々、ありがとうございます。
-l"C:/Program files/..."
こんな感じでとりあえず目的のコンパイルはできるようになりました。多謝です。
相対パス指定のための環境構築について、検索してみたのですが、それっぽいのが出てきませんでした。
スレ違いで申し訳ないのですが、よろしければどなたか解説してるサイト教えて頂けると幸いです。
598:デフォルトの名無しさん
08/04/11 18:01:43
msysかcygwinをいれちゃう。
あなたならおそらくmsysのほうがおすすめ。
ふと思ったがmingw単体で使ってる人ってけっこういるんだろうか。
599:デフォルトの名無しさん
08/04/11 20:46:30
あっちの関連スレにここがあったから貼り返し。
Cygwin使っている人いますか? その18
スレリンク(unix板)
600:デフォルトの名無しさん
08/04/11 22:11:33
>>598
俺々、俺だよ
msysはgccのsnapshotをコンパイルするときくらいしか使ってない
601:デフォルトの名無しさん
08/04/11 22:17:04
msysはUNIX系用に書かれたアプリをWindows環境で
makeや./configureするためだけにあるようなもんだから
純粋なWindowsアプリ作るときは、いらんだろ。
それともWindowsアプリ書くときも、mv や cp や sh コマンドを使うヤツがおるのか?
602:デフォルトの名無しさん
08/04/11 22:28:16
そこまで使うような奴だったらCygwinを入れているだろうしな。
603:597
08/04/11 23:26:58
レスありがとうございますー。
なるほど、msysからなら相対パスで指定できたのですか。
実はmsysは導入してるんですが、今コンパイルしようとしてるソースがeclipseのプロジェクトのもので、
eclipseのbuildセッティングからオプション指定しなければいけないが気がするのです。
eclipseからのオプション指定付きのコンパイルは、絶対パスでですが成功したのでとりあえず解決しました。
eclipseからも相対パスで指定できたら便利なのかもしれませんが、スレ違いなのでここではやめておきます。
色々ご教示くださりありがとうございましたm(_ _)m
604:デフォルトの名無しさん
08/04/12 15:11:57
よく分からないんだが、prefix を適当なマクロ名(たとえばSRC_DIR)で定義しておいて
-I"$SRC_DIR/include" とか書けばいい、という話?
Makefile内ではダブルクオートで囲んであってもマクロ展開が行なわれる。
ダブルクオート付きのまま実行されるので SRC_DIR=C:/Program Files/GnuWin32 のように
スペースを含んでいても無問題。
605:デフォルトの名無しさん
08/04/12 15:21:51
>>601-602
俺はWindows環境でMinGWを使ってプログラムを書くときはいつも
Makefileを書いてるからmsysがないと不便かもー。
exe単体(dll不要)で実行できるのがMinGWのいいところだから
俺的には MinGW + msys = Cygwin ではない。
606:デフォルトの名無しさん
08/04/12 16:54:08
>605
-mno-cygwin つければ cygwin1.dll 使わなくなるんだから、MinGW + msys ⊂ Cygwin とか混ぜっ返してみる。
607:デフォルトの名無しさん
08/04/12 17:58:19
>>606
なるほろ。どうもです。
608:デフォルトの名無しさん
08/04/12 18:39:40
全く混ぜっ返せてない気がするのは気の所為だろうか。
609:デフォルトの名無しさん
08/04/12 23:38:33
>>605
nmake 使った事無いの?
610:デフォルトの名無しさん
08/04/13 02:43:01
なぜそこでnmakeがでてくるんだ?
611:デフォルトの名無しさん
08/04/13 03:50:56
>>609
聖徳太子って知ってる?
612:デフォルトの名無しさん
08/04/13 04:06:39
知ってる。
人に非ずな美人な子供で同性愛者な上にマザコンな皇子でしょ?
613:デフォルトの名無しさん
08/04/13 05:10:58
知ってる。
突然びっくりするぐらいブチ切れる人でしょ
614:デフォルトの名無しさん
08/04/13 15:09:40
知ってる。
100万人が同時にしゃべっても聞き分けられた人でしょ
615:デフォルトの名無しさん
08/04/13 16:14:52
それってさ
聖徳太子が聞き分けられてる
と気づいた人のほうが数段上だよね
616:デフォルトの名無しさん
08/04/13 16:58:47
みんなして同じことしかいってなかったんだよね
617:デフォルトの名無しさん
08/04/13 17:11:04
MinGWに付いているwindres.exeは
windres --language=0411 ファイル名.rc
とすればShift-JISのrcファイルを読めるけど、UTF-16のrcファイルは読めますか?
languageオプションに指定できる値の情報がどこにも無くて、UTF-16に対応してるかどうか分からない…
(ちなみにVC9のrc.exeは文字コードを自動判定してるようでShift-JISもUTF-16もオプションなしで読めるみたい)
618:デフォルトの名無しさん
08/04/13 19:35:39
windresのソースのこの辺り↓を見るしかなさげ?
URLリンク(sourceware.org)
URLリンク(sourceware.org)
なんだかコードページしか指定できないように見える・・・。
619:デフォルトの名無しさん
08/04/14 18:28:10
G++でのコンパイルやリンク実行時に自分で作ったバッチファイルを引数として噛ませたいのですが、どのように書けばできますでしょうか??
どなたかご教示頂けると幸いです。
620:デフォルトの名無しさん
08/04/14 18:29:40
> G++でのコンパイルやリンク実行時に自分で作ったバッチファイルを引数として噛ませたい
詳しく
621:619
08/04/14 18:35:55
すいません、Windowsのコマンドラインから使う場合の話です。
>>620さん
レスありがとうございます。
例えば、
g++ sample.o -lC:/aa.. -lC:/bb.. -lC:/cc.. -lC:/dd..
のようにインクルードファイルを呼び出してリンクしたいとき、
-lC:/aa.. 以下を毎回打つのは面倒なので、inc.batのようなバッチファイルにまとめてしまい
G++ sample.o inc.bat
のような感じでリンクできるようにしたいのですが、
上のような書式では失敗するので、inc.batの前になにか必要なのかな??という疑問です。
622:デフォルトの名無しさん
08/04/14 18:56:36
つMakefile
623:619
08/04/14 19:05:56
レスありがとうございます。
すいません、makefileがどんなものかは大体分かっているのです。
今回はバッチでどうしてもやりたい事情がありまして・・
624:デフォルトの名無しさん
08/04/14 19:11:17
環境変数使うってのは?
625:デフォルトの名無しさん
08/04/14 19:12:55
もしくは、$1とかでファイル名渡すとか?
626:デフォルトの名無しさん
08/04/14 19:55:21
>>623
SET CXX=B:\MinGW\bin\g++
SET CFLAGS=-IB:\hoge\include -IB:\fuga\include
SET LDFLAGS=-LB:\hoge\lib -LB:\fuga\lib -lhoge -lfuga
%CXX% %CFLAGS% %LDFLAGS% %*
みたいなのをmygcc.batに保存して
> mygcc sample.cc
でコンパイル。オプションとかは適当に追加してくれ。
バッチファイルも書けなくてC++でプログラム書けるのかが心配だが…
627:デフォルトの名無しさん
08/04/14 22:31:52
>>619
ふつうにバッチファイルじゃいかんの?
unko.bat の中身はこう書く
g++ %* -lC:/aa.. -lC:/bb.. -lC:/cc.. -lC:/dd..
で、コンパイルはこう
C> unko sample.o
これも事情があってダメなの?
628:619
08/04/14 22:55:52
レスありがとうございます。
なるほど、バッチの中にg++も入れたりできるんですね。
ただ、それだとやっぱりだめで、事情っていうのが、wxWidgetsっていうGUIツールキットを使っていて、それを使ったリンク時に
g++ sample.o -LC:/wx/(以下略)...
みたいにするんですが、どうもWindows版だと
g++ -LC:/wx/(以下略)... sample.o
みたいに、オプションがインプットファイルより前にくるとエラーになるみたいなんです。
makefileを使わないと言っても、eclispeのexcutableプロジェクトなので、makefileは勝手に生成される=使っています。
勝手に生成されるので自由には編集できない、ってことです。
で、そのmakefileのオプションの部分だけをバッチにしたいんです。
直接全部手書きでもよいのですが、かなり長いのでスマートじゃないなぁと思いまして・・
>>バッチファイルも書けなくてC++でプログラム書けるのかが心配だが…
初心者なので大目に見てください(^^;)
環境変数ってのはなんの環境変数でしょうか??
629:デフォルトの名無しさん
08/04/14 23:24:07
>>628
eclipseにコンパイル、リンクオプションを設定するところがあるはずだから探せ。
-LC:/... とリンク先ディレクトリ指定のオプションだけのように見えるが、本当はリンクするライブラリもその「バッチ」とやらに書いてるだろ。
それだと.oより先にあったらダメだ。
それはwindowsだろうがなんだろうがダメ。
.oから呼ばれている関数をリストアップして、その後その関数をライブラリからワンパスで探すから。
630:デフォルトの名無しさん
08/04/15 00:27:21
>>628
>>627 を試してみたのか?
バッチに渡した引数は %* の位置に展開されるのよ?
>なるほど、バッチの中にg++も入れたりできるんですね。
とかいう時点でバッチが何か理解してないと思われ
631:デフォルトの名無しさん
08/04/15 00:39:07
野球で振り回すあれでしょ?
632:デフォルトの名無しさん
08/04/15 01:13:11
>>630
バッチってバッチファイルのことじゃなくて、ライブラリのファイル名を羅列したファイルのつもりなんだろう。
633:デフォルトの名無しさん
08/04/15 03:16:00
チラシの裏
MinGWでコモンコントロール使うなら
#define _WIN32_IE 0x0300
とか必須
634:デフォルトの名無しさん
08/04/15 03:37:30
チラシの裏
ncurses5.6 cygncurses-8.dll 文字化け 日本語
→ use_legacy_coding(2) 追加
635:デフォルトの名無しさん
08/04/15 10:11:30
EIPに入ってるアドレスから共有ライブラリやEXEのベースアドレスを調べたいのですが
windowsのPSAPIを使うやりかたで良いのでしょうか?
cygwinではこう書くみたいなやりかたはありますか?
636:デフォルトの名無しさん
08/04/15 14:35:20
Win32環境にCygwinかMinGWのどちらかを入れようと迷っているのですが、
何か判断基準になるものはありますか?
637:デフォルトの名無しさん
08/04/15 14:39:32
両方入れて、自分で比較した方がいいんじゃないの?
638:デフォルトの名無しさん
08/04/15 19:49:07
基本MinGWでいいと思う
別の用途でCygwin使ってる人はそのままCygwinを使う
639:デフォルトの名無しさん
08/04/15 23:13:21
CygwinはUnix環境として使うなら便利だけど、窓の開発したいだけなら開発環境に組み込まれてたりするMinGWのほうがいいんじゃね?
640:628
08/04/16 23:44:28
レス下さった方々ありがとうございますm(_ _)m
お礼遅れてすいません。
>>lipseにコンパイル、リンクオプションを設定するところがあるはずだから探せ。
オプション設定するところあるのですが、-mwindowsというのを設定しなくてはいけなくて、それ用のフォームがなくて困ってたのですが、全部まとめてかけるところが見つかってそっちに書くことで解決しました。
>>/... とリンク先ディレクトリ指定のオプションだけのように見えるが、本当はリンクするライブラリもその「バッチ」とやらに書いてるだろ。
その通りです!
>>それだと.oより先にあったらダメだ。
それはwindowsだろうがなんだろうがダメ。
.oから呼ばれている関数をリストアップして、その後その関数をライブラリからワンパスで探すから。
そうだったんですか!知りませんでした。貴重な情報ありがとうございます。
>>627 を試してみたのか?
バッチに渡した引数は %* の位置に展開されるのよ?
これも知りませんでした汗
そうだったのですか。なるほど!
ありがとうございます。
>>バッチってバッチファイルのことじゃなくて、ライブラリのファイル名を羅列したファイルのつもりなんだろう。
そんな感じです(^^;)
>>MinGWでコモンコントロール使うなら
>>#define _WIN32_IE 0x0300
>>とか必須
>>ncurses5.6 cygncurses-8.dll 文字化け 日本語
>>→ use_legacy_coding(2) 追加
ありがとうございます!
641:デフォルトの名無しさん
08/04/17 22:41:46
>>640
%* や、バッチファイルのその他の機能の説明を読んだ方がよさそう。
Windowsの「スタート」ボタン→「ヘルプとサポート」
→検索窓に「バッチ」と入力して検索→「バッチ パラメータを使用する」
→検索窓に「シェル」と入力して検索 →「コマンド シェルの概要」
642:デフォルトの名無しさん
08/04/18 03:40:54
1.cygwin.batから起動したbash上で「ls --color」を実行→color表示。うっわ見づらいなコレ
2.「ls」を実行→あれ、color表示のままだぞ?
3.「ls --color=none」を実行→うむ、color表示じゃなくなった
4.「ls」を実行→あれ、やっぱcolor表示のままだぞ・・・?
5.「source ~/.bashrc」を実行後、「ls」を実行→よし、今度こそcolor表示じゃなくなった
6.「exit」を実行後、cygwin.batからbashを起動し「ls」を実行→ひいい、color表示のままだぞ!?
7.(´・ω・`)
*cygwin.bat----------
@echo off
C:
chdir C:\cygwin\bin
bash --login -i
*.bashrc(インスト時に手を加えたところだけ抜粋)------
export JLESSCHARSET=japanese-sjis
alias ls="ls -F --color=none --show-control-chars"
export LANG=ja_JP.SJIS
他のCygwinプロセスは起動してません。
.bashrcをちゃんと読んでない気がするのですが、lsのデフォルト動作を非カラー表示に
戻す方法をご教授いただければ幸いです。
643:デフォルトの名無しさん
08/04/18 04:21:48
>>642
alias 打って実際の登録状況を見るとか。
set -x して実際に起動されたプロセスの引数を確認するとか。
644:デフォルトの名無しさん
08/04/18 06:52:13
>>643
このalias内容から、>>642でも書いてるように.bashrcを読んでないと
思ったんですがねえ・・・どこから読んできたのやら
$ alias
alias ls='ls --show-control-chars --color -F'
alias mc='. /usr/share/mc/bin/mc-wrapper.sh'
$ set -x
(なし)
645:デフォルトの名無しさん
08/04/18 08:40:49
.bashrcに echo hello とか入れてみれば読まれてるかどうか分かるんじゃ?
646:デフォルトの名無しさん
08/04/18 08:55:12
質問には「.bashrcが読み込まれているかどうか分かりません」なんて書かれてないだろう
>>644
URLリンク(www.google.com)
647:デフォルトの名無しさん
08/04/20 09:05:36
【質問】 Xfce4を利用できない
【希望】 Xfce4デスクトップ環境を利用したい
【やったこと】
URLリンク(www.compuspec.net)
上記のサイトを参考にしました。
setup.exeより、リポジトリ「fURLリンク(sunsite.dk)」を追加し、
Xfce4関連のパッケージ全てをインストール。.bashrcに
PATH=/opt/xfce4/bin:$PATH
export PATH
を追記し、bash上からパスが通っていることを確認。
$ startxfce4
を実行すると、xscreenserverがないとメッセージが出たので、
setup.exeよりxscreenserverを選択しインストール。
再度startxfce4を実行すると、X画面が表示されるものの下記のようなログが出て
Xfce4が起動できていない。
ちなみに利用OSはWindowsXPでユーザ名は「root」としています。
648:デフォルトの名無しさん
08/04/20 09:08:00
startxfce4のログ
/usr/bin/startxfce4: Starting X server
(中略)
_XSERVTransmkdir: Owner of /tmp/.X11-unix should be set to root
winValidateArgs - g_iNumScreens: 1 iMaxConsecutiveScreen: 1
(II) XF86Config is not supported
(II) See URLリンク(x.cygwin.com) for more information
winDetectSupportedEngines - Windows NT/2000/XP
winDetectSupportedEngines - DirectDraw installed
winDetectSupportedEngines - DirectDraw4 installed
winDetectSupportedEngines - Returning, supported engines 00000007
winSetEngine - Using Shadow DirectDraw NonLocking
winAdjustVideoModeShadowDDNL - Using Windows display depth of 32 bits per pixel
winFinishScreenInitFB - Masks: 00ff0000 0000ff00 000000ff
(中略)
Could not init font path element /usr/X11R6/lib/X11/fonts/CID/, removing from list!
Could not init font path element /usr/X11R6/lib/X11/fonts/100dpi/, removing from list!
winPointerWarpCursor - Discarding first warp: 836 512
winProcEstablishConnection - Hello
winProcEstablishConnection - Clipboard is not enabled, returning.
Agent pid 2492
xscreensaver: 09:01:36: locking is disabled (running as root).
xscreensaver: 09:01:36: locking only works when xscreensaver is launched
by a normal, non-privileged user (e.g., not "root".)
See the manual for details.
FreeFontPath: FPE "/usr/X11R6/lib/X11/fonts/misc/" refcount is 2, should be 1; fixing.
# ここで下記URLのような何もない画面とXのカーソル(×印)が表示されて停止
# URLリンク(img224.echo.cx)
649:デフォルトの名無しさん
08/04/20 09:19:24
理想
URLリンク(blawat2015.no-ip.com)
650:デフォルトの名無しさん
08/04/20 22:10:32
URLリンク(www.geekpage.jp)
ここを見て最初からやっていったのですが、コンパイルは出来たものの
>CygwinだけではなくWindowsコマンドプロンプトで実行したい場合
のところにある「-mno-cygwin」を使おうとすると
gcc: installation problem, cannot exec `cc1': No such file or directory
と出てきてしまいます
どうしたらいいでしょうか?
651:デフォルトの名無しさん
08/04/20 23:54:24
>650
必要なパッケージが足りてない。
-mno-cygwin が使いたい場合、gcc-core だけじゃなくて gcc-mingw-core も必要。
652:デフォルトの名無しさん
08/04/21 13:53:13
都合でMinGWを使いたいんだけど、Cygwin導入済みのWindowsに入れたら競合が起こるかな
CygwinパッケージにもMinGWがあった気がするけど、両方とも干渉せずスタンドアロンで使いたいっす
653:デフォルトの名無しさん
08/04/21 16:26:13
>>652
cygwinでmingwのコマンド類のある場所にパス通したりしなければ問題ない。
うちは普通に cygwin と mingw + MSYS が両方入ってる。
654:デフォルトの名無しさん
08/04/21 22:37:48
>>651
解決しました
ありがとうございました
655:デフォルトの名無しさん
08/04/26 15:13:24
libtoolがスタティックライブラリは作るのですがdllを作ってくれません ><
/bin/sh ..//libtool --quiet --mode=link gcc -no-undefined -L/home/myname/install//lib
-rpath /home/myname/install/lib -version-info 25:5:0 -export-symbols-regex '^ne_[^_]'
-o libneon.la ne_request.lo ne_session.lo ne_basic.lo ne_string.lo ne_uri.lo ne_dates.lo
ne_alloc.lo ne_md5.lo ne_utils.lo ne_socket.lo ne_auth.lo ne_redirect.lo ne_compress.lo ne_207.lo
ne_xml.lo ne_props.lo ne_locks.lo ne_xmlreq.lo ne_acl.lo ne_openssl.lo
-lssl -lcrypto -lz -L/home/myname/install/lib -lxml2 -lz -lm
が実行されると
*** Warning: linker path does not have real file for library -lssl....
*** using a file magic. Last file checked: /home/myname/install/lib/libssl.dll.a
*** Warning: linker path does not have real file for library -lcrypto....
*** using a file magic. Last file checked: /home/myname/install/lib/libcrypto.dll.a
*** Warning: linker path does not have real file for library -lz....
*** using a file magic. Last file checked: /lib/libz.dll.a
*** The inter-library dependencies that have been dropped here will be
*** automatically added whenever a program is linked with this library
*** or is declared to -dlopen it.
*** Since this library must not contain undefined symbols,
*** because either the platform does not support them or
*** it was explicitly requested with -no-undefined,
*** libtool will only create a static version of it.
といわれます
ssl、crypto、zはaファイルのみでlaファイルがないためリンクが失敗してると思います
configureし直して、この三つのライブラリがリンクされないようにしたらdllが出力され
Since this library must not contain undefined symbols...も出なくなったのですが
aファイルしかないライブラリをlaファイル捏造とか以外の方法(オプションとか環境変数とか)で
libtoolによるリンクを成功させるにはどのようにすればよいでしょうか?
656:デフォルトの名無しさん
08/04/27 09:02:53
laファイル捏造が嫌なら libtool 自体を書き換えるしかないと思うが。
657:デフォルトの名無しさん
08/05/04 16:29:31
i686-elfがターゲットなbinutilsを作ったのですがgccにこれを使うよう指示する方法が分かりません
URLリンク(iwatam-server.dyndns.org)とかを見ると
オレオレbinutilsを使いたい場合gccも作らなくてはならない感じなのですがどうにかする方法はないでしょうか?
658:デフォルトの名無しさん
08/05/05 17:40:58
>>657
gccにはそういうオプションなどなかったと思うけど、
gcc -S でアセンブリソースを出して、
オレオレas でオブジェクトを作って、
オレオレld でリンクすればいいだけ。
659:デフォルトの名無しさん
08/05/05 18:40:18
specsのinvoke_asとlinker書き換えて -specs= で読ませりゃいいんでない?
660:デフォルトの名無しさん
08/05/06 12:21:35
高速に質の良さそうな乱数を取得する方法を探しております。
「Mersenne Twister」というのに行き当たったのですが、もっと高速なものを探していたところ、
「/dev/rand」というものがあるというのを知りました。
下記に関し日本語サイト探しているんですが、なかなか詳しいところが見つけられません。
1./dev/randとはハードか何かで乱数作るんでしょうか?
2./dev/randはWindowsで使うことは出来ますか?
また使い方は?
661:デフォルトの名無しさん
08/05/06 12:26:41
乱数スレで質問すれば誰か詳しい人がいるかもしれないよ
662:デフォルトの名無しさん
08/05/06 12:36:14
>>661
そうですか。
ただマルチになると申し訳ないので、2~3日寝かしてレス付かないようなら移動しますね。
663:デフォルトの名無しさん
08/05/06 13:36:56
>>657
-B prefix と -b target ジャマイカ?
664:デフォルトの名無しさん
08/05/06 15:46:41
>>660
もうすっかり忘れたけどrand()は線型合同法かなんかだっけ?
メルセンヌツイスタを見つけたならひと口に乱数と言っても
目的によって適不適があるというような注意書きを
メルセンヌツイスタの作者が書いてるのに行き当たったり
しているはずだが。
665:デフォルトの名無しさん
08/05/06 15:55:16
>>662
取り下げによる移動はマルチではない。
移動の方法としてはいくつか在るがたとえば
ここに、「~~(移動先URL)へ移動しました」などと書いたうえで
移動先に「~~(ここのURLとレス番)から誘導を頂きました」
とでも書いておけばその時点でマルチではなくなる。
666:デフォルトの名無しさん
08/05/06 16:06:09
乱数スレの住人ってバカばっかりだからなぁ
667:デフォルトの名無しさん
08/05/06 16:08:18
>>660
> 高速に質の良さそうな乱数を取得する方法を探しております。
目的を述べよ
> 1./dev/randとはハードか何かで乱数作るんでしょうか?
割り込み間隔とかネットワークのIO間隔等で乱数 seed を揺さぶり続けるため
品質的にはそれなりだが, 再現性のある乱数系列を取得することは不可能
> 2./dev/randはWindowsで使うことは出来ますか?
/dev/rand に相当するデバイスドライバを書けば OK
> また使い方は?
fd = open("/dev/rand", O_RDONLY);
read(fd, random_buff, sizeof random_buff);
668:デフォルトの名無しさん
08/05/06 16:44:44
> /dev/rand に相当するデバイスドライバを書けば OK
ほら。もう、バカばっかり・・・
669:デフォルトの名無しさん
08/05/06 21:28:53
>>660
/dev/random
/dev/urandom
のこと? だったら、参考資料としてはこの辺とか。
URLリンク(www.linux.or.jp)
とりあえずCygwinなら使えるが、Linux等と同じ動作をしてるわけでは
ないと思われるため、品質や速度については不明。MinGWは知らん。
/dev/rand はぐぐってみると結構ヒットするけど、実在するの?
670:デフォルトの名無しさん
08/05/06 23:01:34
作ればできるよ。ああできるよ。何だってできるよ、作れば。
671:デフォルトの名無しさん
08/05/06 23:51:01
>>669
作ればあります。
672:デフォルトの名無しさん
08/05/07 03:08:41
作らんでもエイリアス張るだけちゃうん
673:デフォルトの名無しさん
08/05/07 12:09:13
WindowsにEGD移植されてないんだっけ?
674:デフォルトの名無しさん
08/05/07 16:19:35
すいません、MinGWにUTF-8を認識させるようにしたいのですが、そこらへん設定するにはどうすればよいでしょうか??
どなたか教えて頂けると幸いです。
675:デフォルトの名無しさん
08/05/07 16:23:27
>>674
MinGWに認識させるとは?
gccのオプション指定で入力エンコードと出力エンコードを指定するって話なら判るんだけど。
676:674
08/05/07 16:47:30
レスありがとうございます。
>> gccのオプション指定で入力エンコードと出力エンコードを指定するって話なら判るんだけど。
分かりにくくてすいません、そんな感じのことを言いたかったのでした。
コンパイル時のオプションで設定できたんですか。
調べたら
--input-charset, --exec-charset
など、出てきました。
ありがとうございましたm(_ _)m
677:デフォルトの名無しさん
08/05/07 19:08:07
不完全な質問にヒント程度のエスパー回答、そして解決報告
素晴らしい流れに心が洗われるようだ
678:デフォルトの名無しさん
08/05/07 22:24:33
URLリンク(sourceforge.net)
> Testing: gcc-4.3.0-20080502-mingw32-alpha
いきなり 4.3.0 ですかい
679:デフォルトの名無しさん
08/05/08 00:24:46
x64対応はまだかね?
680:デフォルトの名無しさん
08/05/08 21:00:27
おまいらソースを嫁
URLリンク(cygwin.com)
URLリンク(msdn.microsoft.com)(VS.85).aspx
各種外乱使った暗号論的擬似乱数っぽい
暗号論的に優秀なのとMCやなんかで優秀なのは違ったと思うんで
用途によるはずだがそのあたりは詳しく知らない
681:デフォルトの名無しさん
08/05/09 13:17:06
MinGWでのコンパイルってこの方法であってますよね?
コマンドプロンプトで、chdir ソースファイルが保存してあるディレクトリまでの絶対パスまたは相対パス
そしたら
ソースファイルが保存してあるディレクトリまでのパス>gcc ソースファイル.C -o ソースファイル.exe
これでコンパイルしてもエラーでるからコンパイルの方法が悪いのかなって思ったんだけどさ
ソースファイルは本通りに入力したはずだからあってるはず。
もうプログラミング挫折しそうです。
682:デフォルトの名無しさん
08/05/09 13:31:28
エラーを貼り付けないと回答のしようがない。
コマンドライン慣れてないならVisual C++ 2008 Express Editionや
Eclipse CDT使うのも手。
683:デフォルトの名無しさん
08/05/09 13:34:32
すいません
>>681の通りに入力して
gcc: installation problem, cannot exec `cc1plus': No such file or directory
と表示されます。
684:デフォルトの名無しさん
08/05/09 14:14:33
目的がプログラミングの学習で、
英語が全く分からない&英語を勉強する気はない
なら VC++ 使った方がいい。
685:デフォルトの名無しさん
08/05/09 14:14:45
そりゃめげるわな
URLリンク(zieaon.co.uk)
PATH通せ
686:デフォルトの名無しさん
08/05/09 15:22:57
ありがとうございます。
VC++ってC言語でもつかえるんですか?
687:デフォルトの名無しさん
08/05/09 15:29:17
使えるよ
でもスレ違い
688:デフォルトの名無しさん
08/05/09 15:35:34
おぉ そうなんですか!!
スレ違いになりますね;;
みなさんありがとうございました。
VC++で頑張ってみます
689:デフォルトの名無しさん
08/05/09 15:57:33
華麗にスルーされた俺カワイソス
690:デフォルトの名無しさん
08/05/09 16:23:16
大丈夫か?初心者にVCなんか勧めて。
どうせ今度は sprintf_s、strcpys、strcat_s・・・ でつまづくだろ。
オレなら Borland C++ Compiler を薦める。
691:デフォルトの名無しさん
08/05/09 18:13:24
gcc(ry
692:デフォルトの名無しさん
08/05/09 18:53:08
その前に日本語
693:デフォルトの名無しさん
08/05/11 01:38:33
mallocのインターポジショニングがしたいのですが
以下のようにやってもうまくいきません。
環境はWindowsVista+cygwinでgccは3.4.4です
---main.c---
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
printf("start\n");
char* c = (char*)malloc(10);
return 0;
}
---malloc.c---
#include <stdlib.h>
#include <stdio.h>
void* malloc(size_t size)
{
printf("malloc\n");
return NULL;
}
694:デフォルトの名無しさん
08/05/11 01:39:53
これを以下のようにコンパイルしました
gcc -c -o testmalloc.o malloc.c
gcc -o main.exe main.c testmalloc.o
そして実行すると
./main.exe
4 [main] c 1924 sig_send: wait for sig_complete event failed, signal -34,
rc 258, Win32 error 0
とエラーになります。そのあとにstartと表示されます。
どこがまずいのでしょうか?
695:デフォルトの名無しさん
08/05/11 02:49:43
>>694
main()に入る前にmalloc()が呼ばれることもあるので、そういうハリボ
テ実装ではダメ。
696:694
08/05/11 04:02:19
>>695さんありがとうございます。
ハリボテは駄目とのことなので、
置き換えたmallocの中で本物のmallocを呼ぼうとしたのですが、
やり方がわかりませんでした。
ためしに以下のようにしてみたのですが、駄目でした。
---malloc.c---
#include <stdlib.h>
#include <stdio.h>
static void* (*malloc_org) (size_t size);
__attribute__((constructor))
void save_malloc()
{
printf("save_malloc\n");
// 本物mallocを保存。
malloc_org = (void*(*)(size_t)) dlsym((void*)-1L, "malloc");
}
void* malloc(size_t size)
{
printf("malloc\n");
return malloc_org(size);
}
697:694
08/05/11 04:05:44
gcc -c -o testmalloc.o malloc.c
gcc -o main.exe main.c testmalloc.o
./main.exe
ここで、save_mallocと出るよりも前に
mallocと表示され、そこで前回と同じ症状となりました。
何かよい方法はないでしょうか?
698:デフォルトの名無しさん
08/05/11 10:15:40
Cygwinだよね?
ソ ー ス 嫁
そうすれば malloc などの置き換えのために何をすればいいかわかってくる。
ただ、今回は malloc の書き直しが目標なのではないだろう?
ヘッダ・ソースから内部構造体を調べて、ヒープヲークする程度で充分なんでは?
> ここで、save_mallocと出るよりも前に
> mallocと表示され、そこで前回と同じ症状となりました。
オリジナルの malloc を"セーブ"することには意味がないよ。
むしろ malloc_org が初期化されていない場面があるってことだから
DLLから都度ポインタ得ても同じこと。
そして、DLL内部で完結している malloc を、この方法で
置き換えることは困難(つーか不可能)だ。
(たとえば strdup の内部 malloc 呼び出しをこの方法で乗っ取れるか
どうか実験してみるといい)
699:デフォルトの名無しさん
08/05/11 13:03:46
動作確認してないけど、こんなのどう?
---main.c---
#include <stdlib.h>
#include <stdio.h>
void* (*unko) (size_t size);
#define malloc unko
int main(void)
{
printf("start\n");
char* c = (char*)malloc(10);
return 0;
}
---unko.c---
#include <stdlib.h>
#include <stdio.h>
void* unko(size_t size)
{
printf("malloc\n");
return malloc(size);
}
700:デフォルトの名無しさん
08/05/12 20:31:43
既にCygwin環境があるWindowsで、「他者のCygwin環境でWindowsに移植されたソフトウェア」を実行しようとすると
cygwin1.dllのバージョンの差異でエラー(fatal error - system shared memory version mismatch detected)が発生します。
既にCygwin環境があるWindowsで、それぞれが独立した形(スタンドアロン)として実行する最善の方法をご教授ください。
701:デフォルトの名無しさん
08/05/12 22:01:14
>>700
Cygnusにコンサル料払え。
702:デフォルトの名無しさん
08/05/12 22:32:49
>>700
Cygwin のバージョンを合わせるしかないんじゃね?
703:デフォルトの名無しさん
08/05/12 22:34:07
MinGWで移植できないか考える
704:デフォルトの名無しさん
08/05/12 23:33:16
>>700
かたっぽのCygwin1.dll消すんじゃあかんの?
705:デフォルトの名無しさん
08/05/13 00:09:35
>>700
その他者の移植したソフトウェアと一緒に他者のCygwin環境のcygwin1.dllを貰ってきて
そっちがロードされるようにして起動すればいいんでない?
706:700
08/05/13 02:54:02
具体例を書いておいたほうが良かったか・・・。質問やり直し。
URLリンク(blogs.windowsnetworking.com)
こういうスタンドアロンで使う事を目的としたcygwin環境を含むソフトウェアを
CygwinがインストールされてるWindowsにインストールすると、ソフトウェア同梱のcygwin1.dllよりも先に
パスが通ってるディレクトリにあるcygwin1.dllを読みに行こうとします。
バージョンの差異で起動できないのは表示されるエラーメッセージで明白なので、
早い話パスが通ってるディレクトリにあるcygwin1.dllを、同梱されてるcygwin1.dllで上書きすればいいんですが、
ソフトを使うたびにファイルを入れ替えやらをしていたら、バイナリ配布がやり易いWindowsの特権がryという話です。
# そもそも、入れ替えするくらいならソースを持ってきてコンパイルした方が早い。
そこで、>>705にある「そっちがロードされるようにして起動」の部分が知りたいと思いました。
オープンソースの恩恵を受けてるユーザだと、結構ぶち当たる問題かと思い、こちらで質問しました。
物理的にDLLを入れ替える方法しかない場合は、大人しくソースからコンパイルしマス。