Cygwin + MinGW + GCC 相談室 Part 4
1 :
デフォルトの名無しさん :
2008/09/13(土) 00:38:02
CygwinとMinGWを同時にインストールするのは混乱の元になるので止めましょう。
qt4のために入れざるを得なかったんだ
標準でGCC 4が入るときは来るのか。 まともなlocale対応が入るときは来るのか。
>> 1 乙です それにしても1000過ぎたら落ちるの速すぎだなあ
gcc4を入れたとか?
3だよっ!
エラーはどんなのがでるの?
>>6 この文書は 2007 年 3 月の MozillaBuild システム導入前の Mozilla 1.9 コードベースをビルドするためのビルド要件のガイドです。Firefox 1.5.0.10 以上、Firefox 2.0.0.2 以上、Firefox 3 をビルドする場合は標準的な Windows ビルド要件 を見てください
それちがうやん
Cross Compile Mozilla for Mingw32ってのがあるみたい。
ソースからコンパイルしたlinuxホストのクロスgcc 3.4.6で -Wformatつけて%016I64xという書式指定をすると、 「unknown conversion type character `I' in format」 とか言われるけど、Windows用のmingwバイナリでも同じ? LinuxでWindowsホストのx64_64-elfのgdbを作ろうとしてこれでこけた。
x86_64なのにlongが32bitなの?
mingw版gccで #include<iostream> int main(){ cout<<"こんにちは"; } とするとちゃんと日本語表示される? されないなら、対処法は?
Automated MinGW Installer 役に立たない・・・ ダウンロードがまったくできんし。
>>15 ソースコードをシフトJISで書いたなら --input-charset=cp932 を指定する
cp932 で読み込まれて内部では utf8 になるらしい、んで
吐き出される文字リテラルはデフォルトで utf8 なんだとさ
それをシフトJISにしたいなら --exec-charset=cp932 を指定する
g++ --input-charset=cp932 --exec-charset=cp932 hogehoge.cpp -o hogehoge.exe
こんなかんじka よくしらんがてきとう
MimGWインストールしたんだが mingw32-make.exeがどこにもない
デフォルトでチェックはずれてたか、別パッケージだった希ガス
MinGWでGitって使えない?
msysGit
msysgitをインストールしてgit関連のを全部コピったら使えた。d
rubyをC++に組み込もうとしているのですがうまく行きません。板違いかなとも 思うのですが、MinGWでコンパイルエラーが出ていて、この部分さえクリアできれば いけそうなので質問させてください。 エラーは、 newmain.cpp:31: error: invalid conversion from `VALUE (*)(VALUE)' to `VALUE (*)(...)' newmain.cpp:31: error: initializing argument 3 of `void rb_define_method(VALUE, const char*, VALUE (*)(...), int)' newmain.cpp:32: error: invalid conversion from `VALUE (*)(VALUE, VALUE)' to `VALUE (*)(...)' newmain.cpp:32: error: initializing argument 3 of `void rb_define_method(VALUE, const char*, VALUE (*)(...), int)' というものです、でVALUEは、 typedef unsigned long VALUE; と宣言されています。ご教示お願いします。
>>23 エラーだけじゃなくてコードも見せなさいな。
>>24 こんな感じです。ruby付属のドキュメントの例のまんまなんですが、コンパイルが
通らないんです。
#include <ruby/ruby.h>
static VALUE t_init(VALUE self)
{
VALUE arr;
arr = rb_ary_new();
rb_iv_set(self, "@arr", arr);
return self;
}
static VALUE t_add(VALUE self, VALUE anObject)
{
VALUE arr;
arr = rb_iv_get(self, "@arr");
rb_ary_push(arr, anObject);
return arr;
}
VALUE cTest;
void Init_Test() {
cTest = rb_define_class("Test", rb_cObject);
rb_define_method(cTest, "initialize", t_init, 0); ←エラーが出てる箇所
rb_define_method(cTest, "add", t_add, 1); ←エラーが出てる箇所
}
で、関数の宣言は
void rb_define_method(VALUE,const char*,VALUE(*)(ANYARGS),int);
となっています。引数のANYARGSの宣言は以下です
#define ANYARGS ...
第3引数が、可変長引数の関数ポインタを受け取るということだとは思うのですが、 なぜエラーになってしまうのでしょうか?
rubyか... Rubyスレで聞くと良いんじゃね
>>27 rubyというよりもC++の問題かなと。でエラーが関数ポインタ周りだということで
簡単なソース作ったんですが、
#include <iostream>
#include <cstdarg>
using namespace std;
static void func(int n,int a,int b,int c) {
int v = a+b+c;
cout << v << endl;
}
int main() {
void (*p)(int,...)=func;
p(3, 1, 3, 5);
return 0;
}
とすると、
newmain.cpp:12: error: invalid conversion from `void (*)(int, int, int, int)' to `void (*)(int, ...)'
というエラーが出ます。
ちなみに、
int main() {
func(3, 1, 3, 5);
return 0;
}
だと、ちゃんと動いてくれます。
可変長引数の関数ポインタの中に、引数の数が決まった関数をぶち込むのに
なぜエラーが出てしまうのかが分かりません。
そりゃそうだ。 誤った引数を与えられるようになるから、そんな変換は認められない。 reinterpret_cast使え。
「可変長rリスト型」の引数の関数ポインタと、「int型の引数4つ」の関数ポインタだからだろ。 ruby脳の状態でC++使うからそうなる。使う言語に応じてちゃんと脳みそと知識を切り替えろ。
実際試してみるのにrubyをコンパイルしなおしたり色々していてやっとで出来ました。
>>29 reinterpret_cast使ったら一発でいけました。ありがとうございます。
>>30 ruby歴1日もないような気がしますorz どちらかと言うとPython脳です。
rubyとpythonの組み込みは、どちらが簡単かなと試していたら嵌ってしまって
質問させて頂いた次第です。お騒がせしました。
可変引数リスト使っていて va_list を使わずに直接突っ込むのはアリなのかなあ
引数順が分かってる分には問題ないよ 型チェック機構は働かないけどね
3 [main] ? 3084 init_cheap: Couldn't reserve 3600336 bytes of space for cy gwin's heap, Win32 error 487 C:\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\cc1.exe (3084): *** AllocationBase 0x0, B aseAddress 0x61820000, RegionSize 0x360000, State 0x10000 こんなエラーが出てしまいました。 gccによるコンパイル時です。 単に gcc とやったときにはno input fileと出るのでインストールはされているようです。
うん、マルチは死ね
XP使いなんですが
XP使いなんですが
XP使いなんですが
で?
ME使いなんですか?
MinGW+MSYSなんだが、
>>35 みたいなエラーがでるんで
rebasedのmsys-1.0.dllやらbash3.1を導入したら
AllocationBaseうんちゃらは出なくなったが、
configureやmakeでSegmentation faultが発生しまくるようになった。
しかも発生するところは実行するたびに変わるという鬼畜っぷり
これはどうすればいいんすか?環境はXP SP3です。
ベースを替えたんなら、変えたベースに合わせてビルドされた バイナリを使えばいいのでは
45 :
43 :2008/10/12(日) 13:17:45
いろいろがんばってみたけど分からんです 海外のBBSを漁ってたら同じような現象が起きてるみたいで それの回答は「トロイ感染してんじゃね?」だった でもウイルス見つからなかったし、OSのどっかが壊れてるのかもしれない
46 :
デフォルトの名無しさん :2008/10/13(月) 16:53:28
このスレに質問すればいいのか分かりませんが、 CygwinにGCC4.3.2を入れようと思って、ソースからビルドしたのですが、 libstdc++のところでコケちゃって、 /cygdrive/c/DOCUME~1/Admin/LOCALS~1/Temp/ccNICzCd.s:11: Error: unknown pseudo-op: `.symver' /cygdrive/c/DOCUME~1/Admin/LOCALS~1/Temp/ccNICzCd.s:12: Error: unknown pseudo-op: `.symver' …… /cygdrive/c/DOCUME~1/Admin/LOCALS~1/Temp/ccNICzCd.s:41: Error: unknown pseudo-op: `.symver' というエラーが出ます。 おかげで、iostreamを使ったHello, worldすらリンクに失敗して困っております。 (printfを使ったHello, worldなら問題なくビルドできます) どのような対策を講じればよいでしょうか? ちなみに、以前にもGCC4.3.0を自力で入れたことがあって、 そのときはこのような問題は出ませんでした(表面化しなかっただけ?)
>>46 それ、asが出してるエラーだから、binutilsの問題かも?
48 :
デフォルトの名無しさん :2008/10/14(火) 19:05:01
>>47 ありがとうございます。
うーん、binutilsの最新版も入れてみたのですが、やっぱりエラー変わらないですね。
gcc4をsetup.exeで入れてみたら?
50 :
デフォルトの名無しさん :2008/10/14(火) 20:41:08
>>49 cygwinにgcc-4あったんですね、知りませんでした。
どうもありがとうございます、とりあえず目前の問題は解決しました。
51 :
デフォルトの名無しさん :2008/10/15(水) 08:45:02
error: size of array `temp' is too large というエラーについてですが int temp[3,000,000]; とかにすると小さなスタック領域では確保できなくなりエラーが起こるのですが これはリスト構造でヒープ領域に動的確保するしかないのでしょうか? (2,500,000番目とかにアクセスする時は効率が悪そうですが・・・)
52 :
デフォルトの名無しさん :2008/10/15(水) 08:45:26
↑ちなみにC言語です。
スタックでは出来なくてもヒープなら大丈夫と思うが int *p = malloc(sizeof(int) * 3000000); でどうよ?
ボーランドコンパイラにはスタック領域を変えられるオプションがあったと思うが Cygwinの場合は何だったかな --stack,サイズ -fstack,サイズ stack,サイズ
スタックだろうとヒープだろうと効率は大して変わらんよ
そうなの?
>>51 >これはリスト構造でヒープ領域に動的確保するしかないのでしょうか?
>(2,500,000番目とかにアクセスする時は効率が悪そうですが・・・)
文面からするとint*3メガ分ヒープから確保して全て線形リストに突っ込もうとしているように見えるが、
int* LargeBuffer = malloc( sizeof( int ) * 3000000);
LargeBuffer[2500000] = 2500000;
↑じゃだめなのか?
>>56 確保するのにかかる手間は違うが、
確保さえしてしまえばアクセスする手間は同じ。どっちも同じメモリなんだから。
32bitマシンだと連続で3メガとか確保できないのでは?
釣りならむしろ安心するけどさ。 #include <stdio.h> #include <stdlib.h> int main() { int i; int* pbuf = malloc( sizeof( int ) * 3000000); for (i = 0; i < 3000000; i++) { printf("%p\n", &pbuf[i]); } return 0; } 試してみ。
読み間違ってた。すんません。
Cygwinで64bitプログラム造るにはどうすればいいんだ
65 :
デフォルトの名無しさん :2008/10/16(木) 12:03:01
GCCとwindresのShift_JIS対応はまだ?
そこのページにSHIFT_JISとかだと駄目ってあるが、 そいつらだと\がU+A5に変換されるため。
mingw64というのがsourceforgeにあって適当に入れたが動かない。 面倒くさいのでパスすらろくに通してないからそりゃ当然だけど。 64bitにしたところで、32bitのdllとリンクできないから大して便利にならんなぁ。 なんでサンクみたいなのつくらなかったんだろ>MS
>>68 痛ニウムの実装をそのまま持って来ちゃったんだろうな…
今から作っても絶対(時期的に)遅くないと思うんだけど。
wow64?
凄いって聞いてたけど
>>71 >>73 MinGW関係なく、64ビットプロセスが32ビットDLLを読み込んだりその逆をしたりすることはできない。
(16ビットから32ビットへの移行時はできた)
>>69 も言っているが、Itaniumならともかくx86-64でできないのは残念すぎる。
自分でソース持ってるものならな
>>75 LoadLibraryEx32Wとかのほうが手軽そうに見える(使ったことない)。
そこに書いてあるフラットサンクと違って、
引数の変換なんかはやってくれないが、32ビットDLLに手を入れることなく16ビットプロセスから呼び出せる。
それ逆じゃね
ついさっき、MinGWをインストールしたのですが、 math.hがなくて途方に暮れてます・・・
mingw-runtime にあるよ
Thx 解決しました。
82 :
デフォルトの名無しさん :2008/11/09(日) 18:39:16
最新のcygwinを使ってます。 以下の実装で以前は動いていたんですが、最近 -------------------------------------------------------- %.obj: %.cpp @echo $< @if [ ! -d dotDep ]; then mkdir dotDep; fi @$(CC) $(CFLAGS) /showIncludes /TP /c /Fo$@ $< > dotDep/$*.d0 \ || ( $(SED) -e '1{/$</d;}; /^Note: including file:/d' dotDep/$*.d0; exit 1) @$(SED) -e '1{/$</d;}' \ -e '/^Note: including file:/d' dotDep/$*.d0 @(echo '$@: \' \ && $(SED) -ne '/^Note: including file:/ { \ s|\\|/|g; \ s/^Note: including file:[ ]*//; \ s/$$/ \\/; \ s|^\(.\):| /cygdrive/\1|; \ p; \ }' dotDep/$*.d0 \ && src=`$(SED) -ne '/^#line 1 /{s/.*"\([^"][^"]*\)".*/\1/; h;}' \ -e '8{x;p;q;}; $${x;p;q;}' $<`; \ && echo "$${src:-$<}") > dotDep/$*.d1 @mv dotDep/$*.d1 dotDep/$*.d ------------------------------------------------------------------ /bin/sh: -c: line 10: syntax error near unexpected token `&&' /bin/sh: -c: line 10: ` && echo "${src:-game.cpp}") > dotDep/game.d1' 実行すると上記のエラーになります。 どこが間違ってるのでしょう?
84 :
デフォルトの名無しさん :2008/11/12(水) 09:15:08
mingwをインストールしたのにsndfile.h が ないんですけど? どうしたらいいですか? 詳しく教えて下さい。 本当に困ってます。
>ないんですけど? ないんですか? ないのか尋ねているのですか? >どうしたらいいですか? そもそも、mingwにsndfile.hがあると思った根拠は?
>>85 あげあしとらないでもらえます? mingwにあるって聞いたんです。 >>86 そのURLなんですか? 詳しく教えて下さいって書いてあるのが読めないんですか? 本当に困ってます。
なんだ、釣りか。
>>87 MinGW に sndfile.h があるって言った奴に聞けよボケ
ちょっと環境違うんですが、Darwin の gcc で以下のファイル hoge.c をコンパイルすると warning: build-in function "index" declared as non-function って警告がでるんですが、どういうことでしょうか? 組み込み関数に index なんてありましたっけ?? int index; int main(int argc, char *argc[]) { return 0; }
92 :
91 :2008/11/12(水) 21:58:22
ちなみにコンパイル時のコマンドは単に gcc hoge.c です。
>>87 ひとにものきく態度じゃないな
人としてのしつけをママにでも
幼児の頃からし直してもらってこい
話はそれからだ
>>91 $ man index
NAME
index, rindex -- locate character in string
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <strings.h>
char *
index(const char *s, int c);
char *
rindex(const char *s, int c);
95 :
91 :2008/11/12(水) 23:06:12
ありがとう! man コマンドってCの関数も調べられるのね。 しかし strchr との違いがよくわからん。。。
The index() function is an old synonym for strchr().
しのにむ。。。。
mingw の crt2.oってどのパッケージにはいってますか?
101 :
デフォルトの名無しさん :2008/11/17(月) 14:28:53
初心者質問すいません。 Cygwinではyumって使えないのでしょうか?? Cygwinの中に新しいソフトウェアをインストールしたい時ってどうするのが一番なんでしょうか?
cygwinの「中に」ということなら、セットアップを起動してパッケージを選択する。 それ以外のツールならWindows用をインストールして、適宜シンボリックリンクを張る。
ソースからコンパイルする
yum入れたらええやん
ansi Cの標準関数で、キーボードの状態を取得できるものってありますか? ESC キーの状態だけでもいいのですが。。。。 標準関数がない場合はwin32 環境では GetKeyState みたいなのが使えますが、 Linux 系ではどんな関数をつかえば??
>ansi Cの標準関数で、キーボードの状態を取得できるものってありますか? ありません。 >Linux 系ではどんな関数をつかえば?? Xアプリ なら XQueryDeviceState(3)が使えるけど、 普通のttyアプリの場合は そもそも、文字入力しかないわけで、キーを押したとか離したとかはわかりません。
>>105 mingwでWinAPIを使うかcygwinにxを入れてXlibを使うか。
このスレ的には、最後の行はスレ違い。
そういうときはマルチプラットフォームな低レベルライブラリのソースを読むと吉 例えばSDLとかな
109 :
101 :2008/11/19(水) 23:34:15
もうちょっと調べてみたらyum使えそうですね。ありがとうございましたm(_ _)m
110 :
デフォルトの名無しさん :2008/11/20(木) 00:57:38
MinGWを使用して.cのファイルをコンパイルしたら warning: unknown escape sequence とでるのですが解決方法をご教授ください。
>>110 入出力の文字エンコードを明示的に指定してみては?
例えば、
gcc -finput-charset=CP932 -fexec-charset=CP932 -o hoge hoge.c
みたいな感じで。
>>111 ありがとうございます。
やってみます。
113 :
デフォルトの名無しさん :2008/11/26(水) 19:41:13
インストール時に出来たファイル(http or ftp)は削除していいのかな?
更新のときに便利だから消さないほうがいいね。 まぁ、それまでアーカイブしてしまってもいいかも試練が
-march=amdfam10でコンパイルしたバイナリがCore2でも動くのは何で? 3DNow!とか使えないはずなのに。
>>115 使えないインストラクションを使わないバイナリなら動くわね。
例えば極端な例だけど、main()の中身がないとか。
そーなのかー ちなみにx264なんだけど使わないのか。 d
gccで勝手にSIMD命令使うのは、-mfpmath=sseとしたときの実数演算だけ。 しかも同時にひとつの演算しかしない。
それ以前に本家gccは3DNow!を使ってくれるのか? AMDの改造gccなら使ってくれるかもしれないけどさ
-m3dnow -m3dnowa
121 :
デフォルトの名無しさん :2008/12/19(金) 03:21:36
すいません質問させてください。 Delphiで作ったdllをMinGWでコンパイルしたプログラムから使ったりすることはできるのでしょうか??
122 :
デフォルトの名無しさん :2008/12/19(金) 10:23:26
123 :
121 :2008/12/19(金) 15:54:13
C++Builderの記事のようですが、MinGWの場合でも同様ということですよね? ありがとうございます!
すいません教えてください。 gnustep-base-1.16.5 をビルドしていたところ、 gcc-4.4.0-20081128 で internal compiler error: in spill_failure というのが出たので -E オプションで問題に遭ったコードを抽出しようと考えたのですが、 6292 行もあってどこから手をつけるべきか途方にくれています。 コンパイラが指摘する発生箇所には4行の関数定義があるので、 ここに無関係なコードを再帰的に除外するような便利なツールがあれば教えてください。
125 :
デフォルトの名無しさん :2008/12/24(水) 05:37:47
質問です。
xlslibというexcelファイル入出力のライブラリのビルドに
チャレンジしているのですが、もう一歩というところで行き詰っています。
このサイトの方法でやってます。
http://newmonic.blogspot.com/2008/11/building-xlslib-on-msys.html エラーは、makeの時に
g++.exe: C:/FreeWare/msys/1.0/local/lib/libxls.0.dylib: No such file or directory
g++.exe: unrecognized option `-single_module'
と出力されます。
これの解決方法がわかりません。ご教授ください。
ちゃんと英語読んだか? まさか本文無視してコマンドだけ入力したなんてアホなことはしてないよな その記事には「libtoolを入れんとlibxls.0.dylibが見つからんで失敗するでェ」 と書いてあるぞ? (特にmainC.cのコンパイルで失敗すると書いてあるが、 お前はそこの情報すら省いて恣意的にエラーメッセージを切り貼りしてやがる)
127 :
125 :2008/12/24(水) 08:37:54
>>126 すいません、急いで書いて、情報が少なすぎました。
一応最新のlibtoolを入れろと言ってるのだと解釈して、
libtool-2.2.6aをインストールして実行した結果です。
128 :
デフォルトの名無しさん :2008/12/24(水) 10:54:28
129 :
デフォルトの名無しさん :2008/12/24(水) 21:19:02
>>128 もちろんこのようなインストールはしてるんですが
gcc 4.4っていつ出るの?
ここで不確かな情報得るより、公式行けばいいんじゃね?
mingw-w64が腐ってる
不具合報告を一切しない屑は黙って使ってなさい
不具合報告をするとボコボコに叩かれるやん
>>132 ほとんどの場合、腐ってるのは自分自身です
ほらね
不具合報告というのは、 どういう環境で どういうことをしたら どういう不具合が出た ということを書くのであって、 糞 は不具合報告ではない。
不具合報告する前から叩かれてるw googleが直そうと企画しなければwin版死んでたな
vista64上のcygwin-Xでemacs (Xemacsじゃないほう)が動いている人います? ググるとdllが不足していてもメッセージが出ずに固まるというところまではわかりました。 不足しているdllってのが見つかったサイトによってまちまちだったので、 emacs.exeをdependency walkerに放り込んで、使っているdllを調べて、足りないものを全部入れたのに動きません。
MinGWで、コンパイル時に改行コードをLFに指定するにはどうすればいいでしょうか? 既定ではどうもCR+LFになっているようで。
私は、mkvtoolnix-2.4.2をWindowsXpProSp3にインストールした cygwinでmakeしようとしました。 mkvtoolnix-2.4.2に含まれていた「README.Windows.txt」を 参考にして必要なライブラリーはmakeとmake installは出来ました。 しかし、肝心なmkvtoolnix-2.4.2のmakeで以下の様にコンパイル エラーが発生してしまいます。 ーーーー CXX src/merge/mkvmerge.cpp In file included from /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/deque:71, from /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/stack:70, from src/common/mm_io.h:20, from src/common/chapters.h:22, from src/merge/mkvmerge.cpp:46: /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_deque.h: In member function `void std::_Deque_base<_Tp, _Alloc>::_M_initialize_map(size_t)': /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_deque.h:446: error: expected unqualified-id before '(' token 以下省略 同じ内容のエラーが以下のファイルでも発生しています。 /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/deque.tcc: ーーーー グーグル先生に聞いたところ、同じ様なエラーはマクロで「max」や「min」を 定義したときに発生する場合が有るようですが、私には見つけられなかったです。 どこをチェックすべきなのかのヒントでも頂ければと思い書き込みしました。 どうぞ、よろしくお願いします。
自分がコピペしたエラーメッセージを、穴が開くくらい良〜〜〜く見ろや
>>143 アドバイスありがとうございました。
頭を冷やして見直しました。
エラーの発生場所が標準のライブラリーの中の為に、
ライブラリーは正しいと思いました。
これは「mkvtoolnix-2.4.2」の中にエラーの引き金となる
「max」のマクロがあると考えて検索したが見つけられなかったです。
そこで、アドバイスにしたがって標準のライブラリーの
「stl_deque.h」の446行を見たところ、「std::max」の記述がありました。
結局、<windows.h>をインクルードするとmin,maxマクロが定義される
為にエラーを引き起こしたようです。
今回は、「#include <windows.h>
」の前に「#define NOMINMAX
」の行を
追加してエラーを回避できました。
ありがとうございました。
迷える中年牛が1つレベルアップしました。
146 :
デフォルトの名無しさん :2009/02/01(日) 22:16:42
質問させてください。 MinGWインストールするとbinディレクトリにg++とmingw32-g++ と、g++コンパイラっぽいのが二つあるんですが、これってそれぞれどう違うんでしょうか??
同じだよ。 短い名前、長い名前。違いはそれだけ。
148 :
デフォルトの名無しさん :2009/02/01(日) 23:02:15
あ、そうなんですか。だったらエイリアスとして最初に設定されるようにしておけばいいのに・・ ありがとうございましたm(_ _)m
Windows ではシンボリックリンクが無いからな。 この場合はジャンクションでかわりになりそうな気もするけど、 シンボリックリンクとジャンクションは完全に同じわけでは無いし。 色々と事情はあるんだろう。
gccが使ってるのはハードリンクだし、NTは昔からハードリンクをサポートしてる。
OSっつーかファイルシステムだよな NTFS前提
更に脱線すると、Vistaからシンボリックリンクがサポートされてる。
シンボリックリンクできるけど、mklinkがcmdの内部コマンド?なのか、 cygwinやmsysじゃ使えないんだよね。 わざわざcmd起動してリンク作ってるけど。
内部コマンドだよ mklink.exeなんて記事書いて飯喰ってるのも居るがな
Cコンパイラのライブラリの仕様ってどこで調べられますか?
>>155 そのライブラリの仕様書・マニュアルなど。
GCCの場合それはどこで手に入りますか?
インターネット
インターネットのどこのサイトでしょうか?
どうもありがとうございました
>>157 使っているライブラリによって異なる。
たとえばGCC自身はprintf()の実装は提供してない。UNIX上で使っている
ならそのOSのマニュアルだし、MingwだったらMicrosoftのサイトを見る
べき。
XPで使ってたCygwin+MinGWの環境をそのままWin7に持ってきたんですが gitとかpatchとかコマンドが全然動きません。 どうしたらいいんですかこれ…
164 :
デフォルトの名無しさん :2009/02/10(火) 12:03:09
Pathを通して無いだけじゃないの つか、βのWin7の事までしらねーよ
どうしたらいいかと言えば、自分の作業に問題が無いか見直し、それでもだめだと確信できるなら、 問題を切り分けて、Windows 7 βのフィードバックを入れるか、 CygwinかMinGWにバグ報告を送りつけるかに決まっているだろう。
レジストリにあるマウント情報とかも当然移動したんだよな
ttp://bitwalk.hp.infoseek.co.jp/ を参考にLinux(Fedora10)にMinGWのビルド環境を構築しているのですが
gcc(configure --target=i386-mingw32)のmakeに失敗します
binutilsは2.19、gccは3.4.6です
Linux上でMinGWのクロスコンパイル環境の構築に成功している人はいますか?
他に何か必要な物とかあったら教えてください。よろしくお願いします
>>168 F10なら、mingw32のパッケージがyumでインストール出来るよ。
msysで足りないコマンド類は基本的にcygwinから引っ張ってくるものなんですか?
cygwin1.dllに依存してるのはそのままじゃ使えないと思う。
>>170 基本的にはmsysでsourceからbuildするものだけど、pathやバージョン古くて通らないのも沢山ある。
そういう時は、cygwinか、coLinux等でcross compile環境を作ってbuildする。
MSYS-bashのpath周りをもっと柔軟にすれば、通りやすくなるのかもねえ
g++ (GCC) 3.4.5 (mingw-vista special r3) new が argc 直前のアドレス取りやがるんですが 私はどんな壊し方をしたのでしょう?
174 :
173 :2009/02/20(金) 17:15:26
×argc → ○argv 直前のアドレス
意味がわからん
main (int argc,char **argv){ int* buf = new int [100]; ↓ が何故か int* buf =new ( argv - 1) int [100];
>>176 「が何故か」ってそれをどうやって確認したの?
178 :
デフォルトの名無しさん :2009/02/21(土) 00:30:12
無料なのでMinGWでウィンドウズのアプリを作るのを勉強しようとしたら説明してるサイトが見つからない。 これはどうしてなのでしょうか? MinGWのインストールやコンパイルを説明してるサイトは沢山あります。 MinGWはインストールして他人のソースをコンパイルして満足するだけのもののような感じを受けます。
なぜならMinGWでもVisual C++でもBorand C++でもWindowsアプリの作り方は同じだから。 MinGWの解説をしているとこは、MinGW特有の部分の解説に徹しているだけのこと。
倍精度の浮動小数点演算を多用する、レイトレーサの一種を書いてます。
VC++ 2008 Express Edition と icc 9.0 では問題なく動作するのに、
MinGW の GCC だと計算結果がおかしくなります(レイが想定外の場所に
飛んでいってしまう)。GCC の3つのバージョンを試しましたが変化なし。
gcc version 3.2.3 (mingw special 20030504-1)
gcc version 3.4.5 (mingw-vista special r3)
gcc version 4.3.0 20080305 (alpha-testing) mingw-20080502 (GCC)
実行環境は XP SP3 です。何かちょっとしたことを忘れている気がするん
ですが、アドバイスをいただけませんか。よろしくお願いいたします。
>>178 基本的に VC++ やなんかと同じ要領で Win32 API を使ってアプリからでは。
Win32 API を使ったプログラミングは情報がたくさんありますよね。
Unix 環境のつもりでプログラムを書き始めるとライブラリ関数があれも
これも無くて泣きを見ます。例えば
・GUI は Win32 API で手書きするか Win32 環境で使えるツールキットを使う。
・gettimeofday() が無いので計時には Win32 の QueryPerformanceFrequency(),
QueryPerformanceCounter() を使う。
・共有ライブラリの動的リンクは dlopen() ではなく LoadLibrary() でやる。
・OpenGL を使うには Win32 固有の wgl 関数群を用いる。
・Win32 に移植された pthread ライブラリを使うのでなければ
pthread_create(), pthread_mutex_init(), pthread_mutex_lock() ではなく
CreateThread(), CreateMutex(), WaitForSingleObject() を使わないといけない。
といった具合です。Win32 環境のつもりで情報を集めるとよろしいかと。
>>180 そこまでするならまずはCygwin使えよ。
というのはともかく、178はUnixから来たのではなく
本当にここから始めようとしているように思った。
ここで、VC++ Express(無料)を薦めるのはなしか
>>183 レスありがとうございます。
このスレの Part 3 で _controlfp のことを教えていただいたのは私です。
カキコの直後まで失念しておりました。
_controlfp(_PC_64, _MCW_PC) だと GCC と ICC では NG、VC++ では OK で
_controlfp(_PC_53, _MCW_PC) だと3つのコンパイラすべてで OK でした。
また髪の毛が減ってしまいました。本当にありがとうございました。
個人的な感想ですけどVC2008EEはなかなか良かったよ。 この茨の道を突き進むよりも初心者はVCのほうがいいと思われ。
>>184 あの思うですけど、そこまでしてネイティブ・コンパイラにこだわる意味はあるんですか?
たぶん良くあるプログラミングの落とし穴だと思うんですが、
計算のロジック部分はジャバやCシャープにして、描画やレンダリングのところだけネイティブ(Cコンパイラ)にすれば、髪の毛もフサフサのままですよ。
もしCやフォートランしか知らないというなら、あなたの勉強不足が原因なので自業自得なんですけど。
>>185 んだな
多少操作やアプリ依存の用語を覚える必要はあるが、
理解度や開発効率を考えると初心者はあれでおk
なのに、何で某ランドがいまだにはびこっているのかw
mingw等はマルチを意識すると選択肢として出てくるが、
某ランドは選ぶ理由がさっぱりわからん
>>186 用途が逆な気がするが・・・
仮想マシンが手軽になってからは、個人的にはmingwの出番が減ったな
そうか? ウェブアプリとかビジネスロジックといわれる部分は、ハード特有じゃないのでジャバとかのほうが向いてると思うんだが・・ 逆にダイレクトXとかネットワーク・メッセージ機構の言語外(ハード部分)はMSとかジャバでもいいけど、例えばジャバに「ウインドウのハンドルを取得するAPI」が用意されてないと結局ネイティブAPIを使うから、ネイティブ向けのコンパイラが必要になってくる。 というか、そこまで計算のロジック(アルゴリズム)を速くしてこだわってるなら、一つのコンパイラに徹するべきであって、GCC使ってみたりBCCやICC使って浮気する必要はないと思うんだけどなあ。 やってみれば分かると思うけど、結局早くて効率的なロジックをフォートランとかICCで実装したところで、ウインドウズならDLL呼び出し関数呼び出しのコストで相殺されるからあまり関係なくなるんだけど。 どういうの作ってるかわからないけど、PC並に複雑な機構のOSだと、そもそもロジックが速いとか、プリミティブ型(double)の演算誤差がどうとかあまり関係ないんじゃない?
レイトレを書いてるらしいから、数値計算メインで DLL呼び出し関数呼び出しのコストはほとんど無いような 思いっきりネイティブ向けの希ガス
レイトレはやったことないけど、そのロジックをストリーミング用のプログラミング手法(GPUとかCELL)に持ち込めれば、100倍ぐらい速くなるんじゃないか? 昔のままネイティブAPI(OSコール)てんこもりでソースもforとifだらけってのでも別にいいけど、画像解析じゃなくてただのレンダリングだし、そういうプログラミング・スタイルはもう流行らないと思う。 どっちにしてもネイティブ・コンパイラ使ってるくせに気軽に浮気するような素人じゃろくなもんじゃないだろうけど。
ここ10スレ位の書き込みは酷いな。 複数のコンパイラを通すのは、移植性やソースをクリーニングする為の超基本。 限られた精度の計算とloopが主なレイトレで、javaとかfortranて何のネタ? borlandは1番parserの出来が良いので、初心者の多い2ちゃんではお薦め。 windowsのgccにもgettimeofdayはある。ぐぐって出てくるし、 unofficialな自宅の4.3.3でも通った。 iccは知らないけど、VCってdefaultでSSE使って無かったっけ? 俺なら計算結果をファイル出力してdiffするけど。 ところでsjljなgccでレイトレって凄く遅くない?Dwarf2も試そうよ。 libraryコンパイルし直すのに少し苦労するけど。
確かにbccは警告が(他と比べて)適切という印象はある。
ISO−Cに準拠したいのか、よりネイティブ向けに特化したプログラムを作って速度や効率を稼ぎたいのか、君は何をやりたいのか意味不明。 超基本は、ISO−Cに準拠して君の満足であるかどうかではなくて、仕様や要求を満たしたプログラムであるかどうかじゃないか? それこそ計算部分のロジックとネイティブのハード部分を分離するような設計(使用)をすることのほうが基本だと思うが、どうだろう。 昔から構造化プログラム(モジュール化)やオブジェクト指向など方法論があるわけで、 君の主張するプログラミングスタイル(複数のコンパイラを通すだと?!)はまったく流行らないと思うが? 君のような宗教観では、どうでもいいところに神経使ってばかりで、さらに髪の毛をなくしていくんだろうけどw
何だか急に芳ばしくなってきましたね。
>>193 ソースで配布するんですか?
windowsだとハードが常に進化するんで、そのときのハードにあったAPI(DirectXなど)を使い、
そのプログラムに一番最適なコンパイラ(Cに限らない)を使ってDLLなどのバイナリで配布する方式の方が受けると思うんですけど・・・
>>193 もしかして「Javaは遅い」とかを信じちゃってるJIT以前のオジサン?w
JAVAがどれだけ速くなってもC以下なのは変わらないだろ。
>>199 実行時コンパイルだからこそできる最適化というのもあるんだよ。
まー、たいていはCの方が速いけど。
そのプルグラムが実行時のハード構成SSEなどに合わせて動的にコンパイル(JIT)されるようになればそうともいえないんじゃない?
>>200 実行時にコンパイルすると、どこがC(アセンブラ)より速くなるの?
MS謹製CLI戦略は将来の自動並列化でJavaに置いて行かれるのを恐れた為なんだぜ?
ハードウェアの構成にあわせてアセンブルしてくれたほうが断然早いね(笑)
香ばしい流れ
207 :
178 :2009/02/21(土) 19:01:52
>>179-187 レスありがとうございます。
Unixはほとんど知らないからMinGWを使う利点はあまりないないのかな。
MinGWも同じということはWinMain()とかで組めるのかな?
でもwindowsのアプリを作るにはVC2008EEがよさそうですね。
そうします。おじゃましました。
>>207 MinGWはあくまでビルド環境でしかないよ
俺は基本VC++EEで管理&コーディングして、ビルドはどちらでもできるようにしてる
どちらにしろリソースエディタは別に必要だし
レイトレなんて生成終了までAPIなんてほぼ関係なくて、ひたすら演算だけじゃん 環境依存部分をネイティブで個別実装するのがいいとか、きちg(ry なんか、レイトレ→3DCG→DirectXとか思ってそう あとGPGPUでレイトレすればいいって環境を選びすぎるし、 もしレイトレの学習が目的なら、不純物が増えて意味ないだろ これは……釣られたのか!?
ジャバと書いてるだけで正直胡散臭いし 長文な上に、どの主張も「だと思うんだけどなあ」「じゃない?」とか 曖昧な表現で逃げてる時点で、な
演算の途中経過とかをリアルタイムに見たいんじゃないの? 標準的な画像や動画フォーマットに出せばAPIはいらんよなぁ,確かに
>>208 コウスケちゃんのブログなんてあったんだw
さすがに日本人ハッカーだね
>>210 >なんか、レイトレ→3DCG→DirectXとか思ってそう
この流れは3Dであってレンダリングと関係ないと思うんだが。
DirectXを未だにゲーム用のAPIとか考えちゃってるの?
ひたすら演算だけでネイティブに依存する必要がないなら、ジャヴァとかC#でいいんでない?
なのにどうしてこだわるんだろう。どうせスピードを求める君のポリシー(笑)なんだろうけど。
なんで演算メインでJavaやC#使うんだよ?バカなの?死ぬの?
ちょっと待て、偽者が混じって楽しんでるだろ、おいw
その前に本物ってどれ? 246みたいなのは本気で言ってるの? なんでこんなのがtech板に居るの?
218 :
デフォルトの名無しさん :2009/02/22(日) 09:45:52
コンパイラぐらい金出して買えよ いつまでもオープンソースにいると髪の毛なくなっちゃうぞ
少しは考える力をつけろ。
>>218 オープンソースと髪の毛は関係性が薄い
ツーカ、オプソ界にいるやつはみんなフッサールだ
問題なのはヒゲ
>>218 オープンソース以下のコンパイラが多すぎるからなあ
オープンソースのコンパイラは実質GCCのみじゃないの?何と比べてるかわからんが、糞はお前w
オープンソースなコンパイラはそれなりにあるが、
実質gccのスレなので、gccと仮定しても、クソという
理由が見いだせない。この意味不明な論理展開を行う
>>224 には、VIPがお似合いだろう。これは224の
書き込み時間からも、容易に想定可能である。
>>225 はいはい。能書きはそれぐらいにして早いところVIP板へ行ってくらはい
結局なんの説明も出来ない無職か
cygwinってCPU強化したら速くなんの? configureが遅すぎて泣ける
手持ちのCentOS4やUbuntuと、大差ない気がしたんだけど、 大きなファイルなら差が出るのかな。差があるとしたら I/Oまわりだろうねえ
>229 configure が遅い理由は cygwin 特有のプロセス起動とファイル I/O にかかる種々の変換だとか前処理の コストだと思うんで、速くはなるだろう。
cygwinのファイルI/Oは遅いよ。ストリームI/Oをバッファ入出力の段階でシミュレートするのではなく
関数レベルでシミュレートしているようで、fgetc()をループで回すだけでも結構差が出る。
>>228 iccは高性能だけど、高機能と言うのはどういう尺度?
gccを否定する気はさらさらないけれど、最近のx86系CPUを使いこなすには力不足なのは否めない。
msysをつかえばいいじゃない。 大概のことはmsysでカタがつくでしょ。
msysはメモリーリークが酷いから嫌
>>234 がお漏らしプログラム作ってるだけっていう落ち
リークと違うけど、Qt4コンパイルしてて、なんのエラーも 出てないのに、mingw32-makeがエラーで止まる事ならあった。 Dwarf2でbuildしたgcc4.3.3が原因の可能性も高いが。 ああ、msys全然関係無かったねw
Qt4はメモリ4Gあろうがページファイル1G以上用意しないと確実にこけるね
MSYS+MinGWでMKVtoolnixコンパイルしてて、動くバイナリはできんたんだけどちょっと気になってることがある。 公式で配布されてるバイナリにはregex2.dllがあるけど、自分のにはない。 何かのライブラリがスタティックリンクになってるんだろうけどどれかわからない。 名前からして正規表現だろうからboostかと思ったけどlink=sharedにしてコンパイルしてもそんなdllない。 何のライブラリか教えてください。
APIを使わないDLL遅延バインドのやり方がわからん。
>>240 d
でもこれ突っ込んでもやっぱりregex2.dllは使われないな。何でだろう…
244 :
239 :2009/03/02(月) 01:36:26
公式のバイナリをDependency Walkerで調べてやっとわかった。 libmagicの依存ファイルだったのか。 libmagicはうまくコンパイルできなかったらバイナリ取ってきてたからそのせいか。
ちょっと前に 「gccの4.x.x系は3.4.5よりもWindows環境への対応が悪い」 と聞いんだが、未だに悪いの? 俺が興味あるのはg++だけだが、g++に限ってもそう?。
何をして対応が悪いといっているのか不明なのでなんとも・・・
248 :
デフォルトの名無しさん :2009/03/06(金) 11:46:55
バージョン1.0.11 と バージョン1.0.11-1 のサイズが違うと何か問題ある?
知らないならレスしないでください
だから、リリースバージョンが違うものなんだから、中身が違って当然だろうが。 これで意味が通じなかったら、Technological Previewバージョンを各ソフトごとにとってくるなんてやめて、 おとなしく安定バージョンをパッケージで入れろ。
だから知らないならレスしないでください
ほかに誰か知ってる人はいませんか?
253 :
デフォルトの名無しさん :2009/03/06(金) 14:06:09
>>251 , 252
くだらない悪ふざけはν速にでも行ってやれや。
質問: どちらが新しいんですか? 答え: サイズが違うと何か問題ある? 頭おかしいの?
255 :
デフォルトの名無しさん :2009/03/06(金) 15:45:13
だから、リリースバージョンの見方もわからんバカは 安定版のパッケージを入れろよ。 バージョンわからん奴がTechnological Previewをいれて何の役に立つんだよ。
ニートタイムに喚くなよ 見苦しいな
で? けっきょく、どれが新しいかわからないんだろ? 知らないならレスすんなよ。 あんたに質問したんじゃねーーーーーーーよw
ファイルの日付も読めない奴に使える訳もないな
260 :
デフォルトの名無しさん :2009/03/06(金) 19:39:43
>>258 瞬時にリリースバージョンくらいわかりますが、何か?
バージョンを読みとってるからこそ
>>248 なのだが。
お前は、自分が書いたものと248をみてもまだ理解できないわけだろ?
だから
>>250 の安定版を入れろと言うことなんだが。
Technological Previewってのは人柱用なんだぜ。
なぜあえてこれを入れたいんだ?
バカだからか?
わかったわかった。俺が悪かった。ここはひとつ、俺がオトナになろう。 で、リリースバージョンの見方をおしえてください。おねがいします。
事情を説明いたしますと、 安定版が安定しないから、試しに全部新しいのにしてみようと思っただけです。 それで安定するか、しないか、検証してみるだけです。 「問題の切り分け」 を死体のです。
>>261 逆に煽り返されたりして、出来もしないくせに下手なことしないほうがいいよなぁ
ぜんぶ 1.0.11 なので、どれが新しいのかわかりません。 でも確実に、中身が違うんです。
すこし分かりかけてきた 1.0.11-1 1.0.11-20080826 これのどっちが新しいか。それさえ分かれば・・・ 1 と 20080826 って、どっちが新しいんですか?
なんか迷宮に迷い込んでいるような気がするなぁ・・・ 問題の切り分けをするのであれば、安定版のどの部分が安定 しないのか切り分けるのが先では無いだろうか。 全部最新版に差し替えて安定したところで、どの部分が問題 だったかは結局分からないのでは。
パッケージとバラを同じ項目においておきながら、 バラの方が古いなんてアホな管理をするやつがいるとも思えんが。
つーかさ、不安定があるのなら、どういう不安定なのか書けよな〜 他のユーザーのためにもなる。
俺は MSYS のデバッグしてんじゃねぇぞ。 どの部分が問題だったかは結局分からなくても 安定して使えさえすればOKなんだよ。
>>270 だからよぉ、他人にもどう不安定か情報出せよ。
自分だけ情報を得られたらそれで桶かよ。
マサにカスだな
>>270 問題の切り分けをしたいとか言いながらちゃぶ台ひっくり返すし、
ここまでMSYSが問題なんだとは一言も話をしていないし、
しかも大人のふりしたと思ったらまた退行しているし。
新しいのと古いのと見分け方を聞きたかっただけなんだが・・・
もったいぶらずに教エロ
>>276 ありがとうございます。おかげさまで解ケツしました。
g++ってワイド文字列環境はまともになってる? g++ (GCC) 3.4.5だと、 std::wcoutって何だか分かりません見たことも聞いたこともありません 的なコンパイルエラーがでちゃうんだよね。
>>278 今は無理。まともにサポートできる見通しが立たないから宣言自体が無効化されてる。
今公開テスト中の Cygwin 1.7 には wchar_t 関連の C 標準関数がひととおり実装されてるんで、
その上で動く g++ なら使えるようになるかもしれない。
そもそも何でMinGWって最新のGCCを同梱してないの?
>>279 ふーん、まだダメダメなのか。残念だ。
>>280 TDM/MinGW Installer
1.902.0
Released 2009-02-28 Bundled Installer: [tdm-mingw-1.902.0-f1.exe] (23.8 MB)
Includes C and C++ SJLJ packages from GCC 4.3.3 TDM-1, plus binutils (2.19.1), mingw-runtime (3.15.2),
w32api (3.13), mingw32-make (3.81-20080326-3) and gdb (6.8-mingw-3).
ってやつか?すげぇなコレ。
いわゆる人柱版ってことかな?
282 :
デフォルトの名無しさん :2009/03/14(土) 17:36:13
UNIX/Linux初心者です。 会社でfork/FIFOを使用した開発をやっていて家でもお勉強できるようにとCygwinインストールしました。 でもうまく動いてくれません。chi 3-25で、Device or resource busyが発生します。 Cygwinの仕様でしょうか? // プロセス作成 p = fork(); if(p == -1) exit(1); if(p > 0) { sprintf(fname_p, "%s-%d-%d", FIFO, p,1); } if (p == 0) { p = getpid(); //子側FIFO名前 sprintf(fname_c, "%s-%d-%d", FIFO, p,1); //親側FIFOのメーク待ち while(1){ if(access(fname_c, F_OK) == 0) break; sleep(1); } //読み込みパイプ開 fifo_cr = open(fname_c, O_RDONLY); if(fifo_cr == -1){ printf("chi 3-25 error open fifo\n",fname_c); err_no = errno; perror("err_no"); exit(6); } 省略
>282 質問の答えじゃないが、fork するんなら pipe(2) 使えばループで待つ必要もないんじゃないの?
>>282 質問の答えじゃないが
printf("chi 3-25 error open fifo\n",fname_c);
err_no = errno;
これはダメだろう常識的に
質問の答えじゃないが、popen()で事は足りないのかな?
ファイルを先頭から順次読み込むプログラムで, 以下のようなものを書いたのですが,ファイルの途中なのにもかかわらずループを抜けてしまいます. (どうも0x1Aを読み込んだときにbreakがかかるようです.) for ( ; ; ){ c = fgetc(fp); if (c == EOF) break; /* 省略 */ } Linux上のgcc(2.95.3)でコンパイルした場合は正常に動くのですが, MinGW(5.1.4)だと前述したように,正常に動きません.(fgetcの仕様が違うのでしょうか) とてもくだらない質問に思えて恐縮なのですが,解る方がいたら教えてください.
mingwのライブラリはVC仕様なので バイナリモードで開いてみては fp = fopen( path, "rb" ); // こんな感じ? # たしか Windows/DOS ではテキストモードで開くと 0x1a を # EOF として扱う仕様だったような気がする # unixはテキストモードはなし
>>287-288 素早い返答ありがとうございます.
ご指摘のとおり,fopenのモード指定の問題でした.
VC系だとテキスト/バイナリの区別がある,というのを初めて知りました.
googleにもスバリ書いてあることだったようで,お恥ずかしい限りです.
290 :
デフォルトの名無しさん :2009/03/22(日) 23:13:40
CygWinでgprofかけても時間情報が取れないのですがどうすればプロファイル取れる でしょうか。 g++のコードのプロファイルが取れる方法よろしくです。gprofて最近は使われてない?
gccのバージョンによって、gmonのフォーマットが途中で変わってるので、 gccかgprofのバージョンを変えてみると良いらしい。MinGWもgcc3.4.5と 手元のgprofとの組み合わせではダメで、gcc4.3.2や4.3.3では取れるなあ。 これは古いgprofを試さないといけないのかな。
292 :
デフォルトの名無しさん :2009/03/25(水) 21:09:34
>>291 CygWin/g++でgprof以外にプロファイル取るすべあるでししょうか?
最近の人はどうやってプロファイル取ってるの?
294 :
291 :2009/03/26(木) 00:45:20
すっかり忘れてたけど、次の日動かしてみたら、MinGW 3.4.5とgprof 2.19、2.19.1での動作を確認した。
だから前回書いたことは、全くの見当違いでgprof 2.18.50だけの問題みたい。ごめんね
>>292 おそらくだけど、プロファイラ自体を使ってる人が少なく、使ってる人も自前で
gprofをbuildか、バージョンダウンしてる。
まあ、わざわざMinGWでgprof使おうと思う人は少ないだろうなぁ。
cygwin/mingwがターゲットになることは少ないので、gprofするのはLinux上になることが多いなぁ。私のところでは。
test
298 :
デフォルトの名無しさん :2009/04/03(金) 07:16:03
質問です。PC-98のMS-DOS上でDJGPPとNASMとBorland C++ 3.1Jでプログラムを 組んでますが、たとえばHello, World!を作ってもDJGPP(GCC v4.3.2)では異常に 実行ファイルのサイズが肥大化します。動作もBCCでコンパイルしたものより 重いです。 DJGPPのFAQによると、「DJGPP(DOS版GCC)はメモリモデルにflatを用いており、 プロテクトモードで4GBまでのメモリを扱えるようにしています」とのことなんですが、 これが原因ですか?ちなみにHELLO.EXEを実行するにしても、DPMIサーバ(cwsdpmi.exe)が 必要という糞仕様です。開発マシンはPC-9801DA2(80386 20MHz + Cyrix 387コプロ; RAM 13.6MB; SCSI HDD 4.3GB; 緑電子SCSI-2ボード; NEC版MS-DOS 6.2)です。 HELLO.EXEのファイルサイズとコンパイル時間は BCC = 6.6KB ; コンパイル時間 = 5秒 DJGPP = 44KB ; コンパイル時間 = 2分近く NASM = 22Bytes ; コンパイル時間 = 3秒 (コンパイルオプションは、 A:\>bcc -ms -O2 hello.c A:\>gcc -Wall -O2 -s -fomit-frame-pointer -o hello.exe hello.c A:\>nasm -fbin -o hello.com hello.asm です) 異常な事態です。これはDJGPP(GCC)の仕様なんでしょうか!ご教示ください。 ちなみに同機能をDOSファンクションコールAH=09Hでフルアッセンブル実装した HELLO.COMはわずか22バイトですOrz K6-2 550MHz/64MB/18GBのX-Mateがあるんですが、 それでやっても処理系の差異は変わらないですよね?
16bitコンパイラと32bitコンパイラで比較して何がしたいの?
300 :
298 :2009/04/03(金) 07:26:38
× X-Mate ○ X-MATE どうしてもDJGPP(GCC4.3.2)だと44KB近くなってしまうようで、 三秒のウェイトを置くdelay機能も、GCCとBCCで同等のものがありますが、 BCC版は8KB程度、GCC版は48KBほどになり、気違いじみています。 やはりDOSファンクションコール AH=2CHでフルアッセンブル実装した DELAY3K.COMは、ファイルサイズが22バイトでCPU負担も全くありません (HELLO.COMは28バイトでしたすいません)。 Borland C++ v3.1Jは中古でオクで競って7千円で買ったので製品とはこういうものだと いわれればそれまでですが、ちゃんとstripもしてるのに、これ以上はGCCは無理ですか!?
たぶんこのスレにそんなマニアックなケース答えられる人はいないんじゃないかと。
DPMIはDOSエクステンダの下請けに過ぎず DJGPPのリンカはDOSエクステンダに相当するものをスタブとして取り込んでいるから出力ファイルが大きくなる
go32.exeが組込まれるんだっけ
他にも即値やディスプレースメントが32bitで大きくなったり、アラインメントが32bitになったりで いくらでも16bitコードより大きくなる要素はある
んなもん、gccのバイナリがデカのは今も昔も変わらん。 go32とか関係なく vcとMingw gccではやはりバイナリサイズが全然違う。
>>298 そんな過去の鈍足PCを今のPCと較べても、全く意味がありません。
それとも、クロック周波数の20MHzという意味が理解できませんか?
いずれにしても、鼬害です。レトロPC板にでもお帰りください。
298 みたいな時空を超えた書き込みを 太鼓腹のオッサンがシコシコ打ちこんでると思うとキモイな
同族嫌悪というやつですか?
PC-9801にMS-DOSとはまた懐かしいものを出してくるなあ
あんまり虐めてやるなよ
古いものを好き好んで触るのは人の自由だと思うが 騒ぎ方がどうにもキチガイじみてキモいな
その3つを比べることに何の意味があるんだか… #とりあえず「DJGPPってまだあったんだ」とか思った
レトロPCを使ってる時点で処理効率など問題外なのだから 32bitコードなど中途半端にひよったものを使わずに 堂々と16bit縛りでいくべき
dosプログラミングはずっと無料版のLSI C86使ってたな。 farポインタとか懐しい。
>>300 7000円あるなら中古でWindows98の入ったPC買えるだろww
そうかなあ
317 :
298 :2009/04/10(金) 04:12:14
>>315 その後、BCC v3.1J+TASMとか、NASM 2.06rc1で楽しくプログラミングしてます。
先日、皆さんのご指摘通り、32Bit Cコンパイラと16Bit時代のコンパイラを
比較する浅学さを自己批判しました。GCCはWinXPのPC/ATマシンで活躍してます。
自分は普通にCygwinのバイナリパッケージを使ってます。
あと、Borland C++ Development Suite 5.0Jというのを、CDだけ入手しました。
オクで\2,000でした。印刷物のマニュアルがないのがイタいですが、
Win95/NT3.51/DOS/OS/2対応の総括的位置付けのバージョンっぽいので、
おいおい試したいです…って、GCCと関係なさ過ぎたwすいませんww
すいません 質問下手かもしれないけどよろしいでしょうか? Cygwinのインストール時、boostも一緒にインストールすることができますよね? 私の場合はver(?)1_33_1なので/usr/include/boost-1_33_1/boost に主なファイルが展開されました。 次はcppファイルのコンパイルなんですが #include <boost/thread.hpp> ↑を含んだa.cppファイルをコンパイルする場合、 $ g++ a.cpp -I"/usr/include/boost-1_33_1/" -lboost_thread-gcc-mt といったコマンドで通りました。んで、 $ ./a.exe で一応exeファイルは実行できるんですが、生成したexeファイルはコマンドによる実行は有効のようで、 winからのダブルクリック起動だと 「cygboost_thread_gcc_mt-1_33_1.dllが見つかりません」といったメッセージがでます。。。 どうすれば改善できるでしょうか?多分boostの参照あたりも間違っていると思うんですが・・・ あんまりUNIXコマンドは詳しくないのでちんぷんかんぷんですw
>>318 $ cygcheck ./a.exe を実行してcygboost_thread_gcc_mt-1_33_1.dllの存在するディレクトリを調べて、
Windowsの環境変数PATHに追加する。
>>319 実行してみたけど無理でした・・・
そもそもboostを導入する方法はこれでよかったのでしょうか・・・
321 :
319 :2009/04/12(日) 18:50:24
正確に書いてくれ。「実行してみたけど無理でした・・・」はどうなったのかわからん。 1)cygcheckが実行できなかった。 1-1)cygcheckが見つからなかった 1-2)cygcheckが見つかったが、cygcheckの実行時にエラーが出た。 1-3)cygcheckが見つかり、cygcheckの実効でもエラーが出なかったが、cygboost_thread_gcc_mt-1_33_1.dllが見あたらなかった。 2)cygcheckが見つかり、cygboost_thread_gcc_mt-1_33_1.dllが存在するディレクトリも判明したが、Windowsの環境変数PATHの設定で 2-1) Windowsの環境変数PATHを設定する方法がわからない 2-2) Windowsの環境変数PATHを設定する場所はわかったが、PATHの書式を知らない。 2-3) Windowsの環境変数PATHをユーザ環境変数とシステム環境変数のどちらに設定すればよいかわからない。 2-4) Windowsの環境変数PATHをユーザ環境変数に追加したが、改善しなかった。 2-5) Windowsの環境変数PATHをシステムザ環境変数に追加したが、改善しなかった。 3) 他にもあるかもしれんが、エスパーするのに疲れたのでここまで。
322 :
318 :2009/04/12(日) 19:01:03
check成功 ↓ cygboost_thread_gcc_mt-1_33_1.dllの場所が分かった 私の場合はD直下にcygwinフォルダがあるのでD:\cygwin\binにあった ↓ 環境変数PATH コントロールパネル→システム→詳細から 片方ずつと両方で3パターンで試しした。 両方とも変数名はPATH 変数値はD:\cygwin\bin;D:\cygwin\usr\bin; %PATH% ↓ 直らない いまここです 2-4 or 2-5ってとこです。。。
323 :
319 :2009/04/12(日) 19:01:48
$ cygcheck -cd | grep boost boost 1.33.1-4 boost-devel 1.33.1-4 libboost 1.33.1-4 $ g++ -Wall -Wextra boost_exam.cpp -I"/usr/include/boost-1_33_1/" -lboost_thread-gcc-mt $ ls a.exe a.exe* $ cygcheck ./a.exe .\a.exe C:\cygwin\bin\cygboost_thread-gcc-mt-1_33_1.dll C:\cygwin\bin\cygwin1.dll C:\WINDOWS\system32\ADVAPI32.DLL C:\WINDOWS\system32\KERNEL32.dll C:\WINDOWS\system32\ntdll.dll C:\WINDOWS\system32\RPCRT4.dll C:\WINDOWS\system32\Secur32.dll
324 :
319 :2009/04/12(日) 19:10:05
>>322 Windowsの環境変数にd:\cygwin\binを追加してから、
**新たに** Windowsのコマンドプロンプトを開いて「echo %PATH%」を実行し、
cygwinのパス(今回だとd:\cygwin\bin)が存在することを確認する。
325 :
319 :2009/04/12(日) 19:14:04
確認できました
326 :
319 :2009/04/12(日) 20:36:56
>>326 じゃあ、次に、そのコマンドプロントで「ls --version」を実行してみる。
d:\cygwin\binにパスが通っていれば(= PATHの設定が正しいなら)、
下のようにlsコマンドのバージョン情報が表示されるはず。
ls (GNU coreutils) 6.10
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <
http://gnu.org/licenses/gpl.html >
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Richard Stallman and David MacKenzie.
で、この状態でエクスプローラーから、さっきのa.exeを実行してみる。
もし「cygboost-thread-gcc-mt-1_33_1.dllが見つかりません。……」のエラーが出るようなら、
「Windowsをログアウト」「再ログイン」する(= explorerにユーザー環境変数を反映させる)
ちなみに、「システム環境変数PATH」の方を変更したら、Windowsを再起動してから試すこと。
327 :
318 :2009/04/12(日) 20:39:47
ええ!?再起動しないと駄目なのかい!?
328 :
319 :2009/04/12(日) 20:50:50
Explorerに環境変数を反映させるには、Explorerプロセスの再起動が必要。 Windowsの環境変数はExplorerの親プロセスに設定される。しかし、それを子プロセスに反映するには、子プロセスを再起動する必要がある。 (これはWindowsだろうと、UNIXだろうと、MS-DOSだろうと、同じ)。 もっとも、今回はExplorerだからログアウト→ログオンで、行けそうな気がする。(面倒なので試してない) なお、Windowsサービス (ApacheとかPostgreSQLとか)に環境変数の変更を反映させるなら、Windowsサービスの親プロセスの再起動、つまりWindowsの再起動が必要。
329 :
318 :2009/04/12(日) 20:52:35
やった!!できました!! 長い時間ありがとうございました
330 :
319 :2009/04/12(日) 21:00:50
おめでとう。これで肩の荷が下りたよ。
331 :
デフォルトの名無しさん :2009/04/27(月) 14:40:09
MinGW(gcc3.4.5)でSTLport5.2.1のビルドができない理由がやっとわかりました STLport5.2.0でMinGWのサポートは一旦打ち切りになっているようです 従ってSTLport5.1.7以前を使う必要があります それから少しファイルの修正が必要です 1. Open the file "stlport\stl\config\user_config.h" to uncomment the macro _STLP_NEW_PLATFORM_SDK. 2. Locate the following lines in file "stlport/stl/config/_gcc.h": # if defined (_STLP_NEW_PLATFORM_SDK) /* For the moment the Windows SDK coming with Mingw still mimik the old platform SDK. */ # undef _STLP_NEW_PLATFORM_SDK # endif then comment all these lines or replace them with: # include <w32api.h> # if (__W32API_MAJOR_VERSION > 3) || ((__W32API_MAJOR_VERSION = 3) && (__W32API_MINOR_VERSION >= 12)) # if !defined(_STLP_NEW_PLATFORM_SDK) # define _STLP_NEW_PLATFORM_SDK 1 # endif # endif 以上の修正でコンパイルできます std::mapを使うと__tmpが初期化前に使われているとか警告が出ますが 無視していますけどいいのでしょうか?
エラーメッセージの日本語化って進んでますか?
日本語化されたエラーメッセージ見ても、分からないという落ち?
>>333 1.7でLANG=ja_JP.UTF-8なら、日本語のメッセージカタログ持ってるやつは、日本語でメッセージを出す模様。
メインの環境を1.7に切り替えたんだが、localeまわりはまだ微妙だな……。まぁ、壊滅状態の生1.5よりはマシだけど。
しかし、ちゃんと動くようにする意志はあるんだろうか。
MSYSのm4が古い問題ってどうやって回避するの?
Component Object Model使うサンプルください (しかし略すとCOMなんて最低な名前・・・検索で余計なのがひっかかりまくりw)
gccでC言語のプログラムをコンパイルしたら、 そのライセンスって制限付く? 標準Cライブラリはgccのものを使うとして。
GPL/LGPLでは。
確かgccを改変してMy_Compilerとかいうソフトを作るんならGPLだが、 産物に関してはGPLが及ばないのではなかったかな? libstdc++とかも例外条項付きGPLだから大丈夫とか聞いた気がするけど。 どなたか有識者plz!
342 :
338 :2009/05/04(月) 13:15:47
>>339-341 なるほど、産物にも影響するのね。
どんなにヌルくてもLGPLが要求されるなら到底 仕事じゃ使えないわな。。。
そこらの家電には結構入っているがな。 どんな仕事だよ。
>>343 リバースエンジニアリングされると困る仕事。
まあどうせされるんだろうが、それにしたってLGPLだと明示的に禁止出来ないじゃない。
346 :
338 :2009/05/04(月) 13:40:41
>>344 おお、決定打ありがとう。
libstdc++はつまり
「オープンソースにしてくれるとうれしいけど、
まあそうじゃなくても良いよ。特に制約は科しません」
という事だよね。
ここは理解出来たのだがGCCについては今ひとつだ。
よろしければ教えていただけませんでしょうか?
「GCC(や他のGPLでライセンスされたエディタなど)を使って
開発されたソフトウェアには何ら制約はありません。」
「しかしBisonは自身のコードの一部をコピーするのでGPL強制です。」
BisonとやらはGCCの一部なのかい?
だとするとやっぱりGCCを使うと結果的に産物もGPL強制?
>>346 ソースをベースにしたらGPL
ライブラリ/バイナリを使ったらLGPL
と覚えておけばいい。
明示的な禁止に意味があるとは思えないが。
>>347 LGPLだとライブラリをstaticリンクした時が致命的じゃね。
ソースコードまたはオブジェクトコードの配布を拒否してはならない
だと!?
>>348 心配すんな、ダイナミックリンクも対象だ。
今時何言ってるんだ、おまえは。
>>349 え?ダイナミックリンクでもソース開示強制なの?
>>350 自分で書いたことも読めないのか。
とりあえずまず自分で読んだらどうだ。
>>346 > libstdc++はつまり
> 「オープンソースにしてくれるとうれしいけど、
> まあそうじゃなくても良いよ。特に制約は科しません」
この翻訳(意訳)でOK。
> 「GCC(や他のGPLでライセンスされたエディタなど)を使って
> 開発されたソフトウェアには何ら制約はありません。」
ここもこの翻訳(意訳)でOK。
> 「しかしBisonは自身のコードの一部をコピーするのでGPL強制です。」
ここもこの翻訳(意訳)でOK。
> BisonとやらはGCCの一部なのかい?
> だとするとやっぱりGCCを使うと結果的に産物もGPL強制?
現在のGCC(g++しか記憶にないが)はbison使わないんじゃなかったか?
以上まとめると、商用利用も万事OKで全く制約はないと思われ。
>>350 いや再確認してるだけだろ、無能はだまっとれ。
>346 元々この FAQ の項は GPL なツールを使ってフリーじゃないプログラムを開発できますか?という項。 で、問題ないというのが最初の段落なんだけど、自身のコードの一部をコピーするものもある、というのが次の段落に説明されていて その例として Bison (構文解析器を作成する為のツール) が挙げられている。 コピーされたコードについては元々のライセンスが適用されるんだけど、Bison に関して言えば例外が認められていて非フリーの プログラム作成に使っても問題ない、というのが最後の段落。 仮に GCC が Bison を利用していたとしても影響を受けるのは GCC まで。 結局、いずれにしろ GCC の生成物を非フリーとして利用してもよい。 まとめると GPL なツールを用いて非フリーのプログラムを作成しても基本OKだけど、ソースをコピーするものについては それぞれ例外条項があるかどうか確認するべし、となる。
355 :
346 :2009/05/04(月) 15:03:55
>>352 >>354 なるほど、だいぶ分かりました。
GCCは非フリー利用にも耐えうる事が
ちゃんとオフィシャルに示されているわけですね。
GCCが発展した理由が分かったような気がしてきました。
C++ code - 28 lines - codepad
ttp://codepad.org/1sFiMF2t このコードで
g++ (GCC) 3.4.5 (mingw special)にて
コンパイルオプション -O2 -Wall
としたときに発生する警告について、皆様のお知恵をどうかお貸しください。
C:/PROGRA~1/mingw/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.
4.5/bits/stl_tree.h: In member function `typename std::_Rb_tree<_Key, _Val, _Key
OfValue, _Compare, _Alloc>::_Link_type std::_Rb_tree<_Key, _Val, _KeyOfValue, _C
ompare, _Alloc>::_M_copy(const std::_Rb_tree_node<_Val>*, std::_Rb_tree_node<_Va
l>*) [with _Key = std::string, _Val = std::pair<const std::string, int>, _KeyOfV
alue = std::_Select1st<std::pair<const std::string, int> >, _Compare = std::less
<std::string>, _Alloc = std::allocator<std::pair<const std::string, int> >]':
C:/PROGRA~1/mingw/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.
4.5/bits/stl_tree.h:1029: warning: '__top' might be used uninitialized in this f
unction
C:/PROGRA~1/mingw/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.
4.5/bits/stl_tree.h:365: warning: '__tmp' might be used uninitialized in this fu
nction
というwarningが出てしまいます。
g++ 〜〜.cpp -O2
でも
g++ 〜〜.cpp -Wall
でもwarningが出ないのですが
g++ 〜〜.cpp -O2 -Wall
だとwarningが出てきます。
[C++] MingW warning in one of the stock sources? - GameDev.Net Discussion Forums
ttp://www.gamedev.net/community/forums/topic.asp?topic_id=523290 ここの人も同じような問題に当たっているようですが、これは何がおかしいのでしょうか?
>>356 詳しいことは知らんが、その警告は最適化しないと出てこない。
要は、最適化のフェーズで変数を未代入で参照しているようなパスを見出しているのだろう。
手元の3.4.4のソースだと、どちらも関数の戻り値で初期化しているように見えるのだけど、3.4.5で変わったのかもしれない。
尤も、例えば次のようなコードでもその警告は出るので余り心配する必要はないだろう。
--
int main()
{
int foo;
for (int ic = 0; ic < 10; ++ic) {
if (ic) {
++foo;
} else {
foo = 0;
}
}
printf("%d\n", foo);
return 0;
}
358 :
356 :2009/05/07(木) 11:30:15
>>357 良い例ありがとうございます。
では、心配しないで進むことにします。
お世話になり、ありがとうございました。
どうでもいいけど、>357のソースをgcc -std=c99 -O3 -funroll-loops -Wallしたら警告が消えた。 どうやら、O3の最適化とunroll-loopの組み合わせでループを全展開して代入だけにしてしまうらしい。 と思ってアセンブリ出力を見たら只管インクリメントしていて笑えた。
361 :
デフォルトの名無しさん :2009/05/13(水) 16:56:51
GNU ncursesで日本語表示をするやり方を教えてください。 環境はWindows Vista Businessのcygwinです。 configure --enable-widecの後makeしたncursesを使っています。 コンパイルはgcc test.c -lncurseswです。 "ほげほげ"と表示させたいのですが文字化けしてしまいます。 ただのprintf("ほげほげ");は正常に表示されています。 ソースは以下です。 <ncursesw/ncurses.h> #include <locale.h> main(){ setlocale(LC_ALL,""); initscr(); addstr("ほげほげ"); refresh(); sleep(1); endwin(); } google検索してみた結果、ほぼ同じ状況の方を見つけ、 Windows Service for Unix3.5を使うと表示できるようであることはわかったのですが、vista なので困っています。 cygwinで文字化けせずに表示する方法はないでしょうか。
今のcygwinはsetlocaleをほとんど無視する仕様だった希ガス
>>362 setlocaleはCygwin-1.7なら一応動く。(つか、setlocaleしないとまともに動かず、それはそれで困っているので現在hack中)
ただし、wcwidth/wcswidthも腐ってるので、ncursesw使っても日本語はNGというしょぼーんな結果に。
そのうち何とかするつもりなので気長に待て。
364 :
361 :2009/05/14(木) 08:35:11
cygwinで日本語表示は厳しそうですね・・・ 仮想PCにXPを入れてWindows Service for Unix3.5上で動かしてみたら、 先のサンプルでの”ほげほげ”の表示の確認ができました。 仕方がないので、Windows Service for Unix3.5を使っていこうと思います。 ありがとうございました。
>>364 XWindow使えば少しはましだった希ガス。尤も、そこまでしてCygwinにこだわる必要もない黄モス。
Vista Businessなら仮想環境使わなくてもSUA(SFUの後継)使えなかったっけ
cygwinのwcwidth/wcswidthが腐ってても--enable-widecつけてビルドすると libutf8のほうの使うようになるから、おkだった希ガス あとはsetlocale(LC_ALL, NULL);が常にja_JP.UTF-8を返すようにしたcygwinのdllと 少なくてもUTF-8表示に対応した端末(漏れの場合はck 用意したら表示できたYO
#include <iostream> int main() { std::cout << "能" << std::endl; return 0; } このコードがg++ 3.4.5 Mingwでコンパイルできません。 どうすれば良いでしょうか?
"能\"
371 :
368 :2009/05/23(土) 20:35:41
"能\" でいけました。 ありがとうございました!
gcc --input-charset=cp932 --exec-charset=cp932
なるほど、文字コードの問題なのですね。 ありがとうございます。
文字コードの問題だけじゃなくてインストーラでインストールした場合 iconvがリンクされてないので古いcc1.exeとcc1plus.exeを持ってこい という話
なるほど、 多少の処置が必要なのですか。 ありがとうございます。
俺もそれでハマったんで 本当にMinGWのインストーラは糞だわ というか8ビット圏の人間無視してるだろって感じ
www.tdragon.net/recentgcc 俺はこれ使ってる
>>378 これSTLportの最新版(5.2.1)ビルドできる?
>>379 若干の修正が必要だが一応ビルドできた
EHテストも通ったけど
ちゃんと使えるライブラリとしてビルドできたかどうかは不明
381 :
デフォルトの名無しさん :2009/05/29(金) 11:04:07
MinGWでGDI+ができた人いませんか?
ハッシュ検索関係hcreate/hsearch/hdestroy cygwinにはあってMinGWにはないのな -mno-cygwinで使いたきゃ自力で実装するしかないっと
>>382 MinGWを使うってことは,POSIXなAPIを諦めてWin32 APIと生きる覚悟をするってことだ
-- foo.c extern void g(); void f() { g(); } -- gcc -shared foo.c -o foo.so こんな共有ライブラリを作る場合、 シンボルgについて何も知らなくても実行時に解決してくれるはずですが、 cygwinで同じことをやろうとするとfoo.soがビルドできません。 (undefined reference to `_g' とldに言われる) 何か別のオプションが必要なのでしょうか?
foo.dll?
386 :
384 :2009/06/04(木) 07:48:52
Windows XP SP2です。 g++ source.cpp というコマンドでコンパイルすると、 コンパイルエラーが大量に出て 上の方が読めなくなってしまいます。 コンパイルエラーは、特に最初の方が大事なわけで これでは困るのですが、どうしたら全てのエラーメッセージがでるでしょうか? g++ source.cpp > result.txt の様にリダイレクトしてみたのですがだめでした。
>>390 オイオイ。 標準エラー出力をとらなきゃ駄目だろ。
g++ source.cpp 2> result.txt
っていうかソースコードをある程度のサイズに分割しておけば、
最初の方が流れてしまうほど大量のエラーメッセージにはならないはず。
392 :
390 :2009/06/13(土) 17:21:01
>>391 2>
で取れるのですか。
初めて知りました。
ありがとうございます。
>ソースコードをある程度のサイズに分割しておけば、
まさにおっしゃる通りです。
・・・が、特定のクラスのデバッグ用途のソースなため
分割の意味があまりなく、またエラーが出る時はソース全てに渡り
むっちゃくちゃ一斉に出るという特徴がありまして。
OSの使い方を先に覚えないとな
394 :
デフォルトの名無しさん :2009/06/15(月) 19:37:27
boostのmulti_array.hppに関して質問させてください。
とあるプログラムをコンパイル&インストールしようと思い、cygwinを導入しました。
コンパイル&インストールにはboostの1.34以上が要求されていました。
しかし、cygwinのパッケージに含まれていたboostが1.33である事に気付かず、
そのまま行ってしまい、途中でエラーが出てコンパイルが中断しました。
そこで漸くboostのバージョンが要求を満たしていなかった事に気付き、
cygwinのsetup.exeを立ち上げてboostをアンインストールし、
http://homepage3.nifty.com/kaku-chan/boost/install.htmlを参考に 最新バージョンのboostをインストールしました。
その後、もう一度コンパイル&インストールを試してみたのですが、
途中で、
checking boost/multi_array.hpp usability... no
checking boost/multi_array.hpp presence... no
checking for boost/multi_array.hpp... no
configure: error: "boost/multi_array.hpp is unavailable"
とエラーが表示され、コンパイルが止まってしまいます。
この状態で数時間悩み続けているのですが、どうにも解決の糸口が見つかりません。
これはboostのインストールがうまくいってないという事なのでしょうか?
どうぞよろしくお願いします。
OSはXPのSP2です。
>>394 > これはboostのインストールがうまくいってないという事なのでしょうか?
たぶんそう。
bjam は cygwin のパス変換ルールを知らないかもしれない。
実際にどこにインストールされたか探してみなYo
396 :
394 :2009/06/16(火) 22:24:20
>>395 boostがインストールされたディレクトリのパス
***/boost1_39/boostを
***/boostに変更してやると、無事にコンパイルできました。
有難うございました。
397 :
デフォルトの名無しさん :2009/06/17(水) 16:55:45
cygwin使ってんだけどxemacsの中で日本語入力ってどうやればいいんですか?
概要: MSYS1.0のrxvt/sh+cmd.exeで、特定の漢字を含む シェルスクリプトを実行できません。 例: $ cat test.sh echo "冒" $ sh test.sh test.sh: line 2: unexpected EOF while looking for matching ``' test.sh: line 3: syntax error: unexpected end of file test.shはShiftJISで、rxvtの-fnもTerminalに設定しています。 マルチバイト文字を正しく認識していない為だと思われます。 対処法を御存じの方は、よろしくお願いします。
400 :
399 :2009/06/21(日) 04:43:15
追記: ちなみに/etc/profileにてexport LANG=ja_JP.SJISとしています。
401 :
399 :2009/06/21(日) 05:16:52
>>399 こう書いてみては?
echo -e "\0226\0140" # echo "冒"
403 :
399 :2009/06/21(日) 22:03:17
404 :
デフォルトの名無しさん :2009/06/22(月) 10:17:57
拡張子がlaとかlaiのファイルって何?
405 :
デフォルトの名無しさん :2009/06/22(月) 10:31:24
reimp/pexportsのバグか、gdiplusのバージョンが違うためか、 libgdiplus.aを正しく作成することができません。 誰かMinGW用のlibgdiplus.aというファイルくれませんか?
あんまり知られてないけど、 gcc hoge.o c:\windows\system32\gdiplus.dll -o hoge.exe って感じで直接DLLのファイル名を指定できる。 インポートライブラリ不要。
>>404 libtoolで使うファイル
libtoolは何のために使うのかというと・・・・↓にまかせた
おお、ついに来たか! とりあえず 4 必須の ffmpeg とかビルドしてみよ
MinGWが正式にgcc4.xを採用したって考えて良いの? やっとか。
TDM一回消して入れ直した方がいいのかな
>407 共有オブジェクト、動的ライブラリ、DLL 等、実行時に読み込まれるライブラリは環境によって その扱いが大きく異なる。これらの違いを吸収し同じように扱えるようにするのが libtool。
413 :
デフォルトの名無しさん :2009/06/29(月) 08:49:47
学校の課題で、日本語のテキストを入力して、日本語の辞書(EUC)を元に、新しいテキストを生成して出力するシステムを C言語で作りたいのですが、CygWinで実行しても文字化けしてしまいます。 どうすればいいのでしょうか?
>>413 cygwin用にcp932の辞書を用意するとか、iconv使って自前で変換するとか、好きにしてください。
Win7の次のWindowsはデフォルトでUTF8にするために A系APIにはもれなく意味不明のウェイトつけてほしいw
MinGWのinfo/ディレクトリにあるdirでは、そこにあるほとんどのinfoファイルがシカトされているけど、 これは意図的にそうなのかな
「ほとんどの」は言い過ぎた。。例えばgccとcpp
>>405 pexportsなら、gdiplus.dllのほかに、wineのソースあたりからヘッダ群を持ってきて
"pexports -h gdiplus.h gdiplus.dll > gdiplus.def"
reimpなら、Platform SDKからGdiPlus.libを持ってきて
"reimp gdiplus.lib"
419 :
デフォルトの名無しさん :2009/07/02(木) 10:25:39
4.4.0で初めてMinGWに触れました gccで手持ちのサンプルプログラムは大抵動作することは確認したのですが、 gcjでネイティブコンパイルしたプログラムを実行すると、 This application has requested the Runtime to terminate it in anusual way. Please contact the application's support team for more information. とエラーが出てしまい、強制終了してしまいます -CオプションをつけてJAVAバイトコードにコンパイルした場合、問題なく動作するものが生成されることを確認済みです 何か特殊なランタイムライブラリが必要なのでしょうか?
421 :
416 :2009/07/04(土) 07:13:37
422 :
デフォルトの名無しさん :2009/07/05(日) 15:51:51
tcshをCygwinをインストールする際に、選択し忘れていました。 tschだけ個別にインストールってできますか?
できる
出来ます インストールの時に使った cygwin setup で 任意のパッケージの追加/削除/アップデートが出来るようになってるから もう一度起動してみてください
425 :
デフォルトの名無しさん :2009/07/05(日) 16:06:28
ありがとうございます!
cygwin から gcc-4, g++-4 etc がインストールできるようになり、 /etc/alternatives で g++ を g++-4.exe のシンボリックリンクにしたのですが、 iostream などをみつけられなくなってしまいました。他にどんな作業が必要なのでしょうか。 gcc では問題ないようですが。
427 :
デフォルトの名無しさん :2009/07/05(日) 22:24:43
gcc-4.4では、wchar_tをネイティブで扱うwprintf()は廃止されてしまいましたか? なんかバージョンあげてからずっと使えないんですが・・・ 実装中。というような事はどこかで見たんですが、代用関数などは無いのでしょうか。。。 処理的に非常に困ります。
Cygwin.batにコマンドの引数を与えることはできるでしょうか
できる。
>>427 mingwの4.4だとlibiconvがリンクされてないからかも?
MinGWのgcc4.4.0が正式に出ても俺はlibiconvがリンクされてない 可能性があるって理由だけでTDM-MinGWを使い続けてる
自分でビルドすれば? 4.4.0 のバイナリあるんだから そこからのビルドは簡単だで
MinGW使わない方は、絶望的?
gcc-4.4.0-mingw32-notes.txtから libiconv Runtime [REQUIRED] libiconv-1.13-mingw32-dll-2.tar.gz
gcjは何でlibgcjを静的リンクしないと動作しないコードを吐くの?
wprintf()が使えない・・・って思ったら タイムリーなレスがあった。 Win+GCCの場合、mingwじゃないとダメなのか・・・
もう、wchar_tはWin用。 なんつーか、何も考えずに全ての文字が固定長で扱えて stringとかSTLみたいにオーバーヘッドのない操作方法があればいいんだがなぁ・・・ UTF-16も実は固定長じゃねぇし。ダメすぎる。
こていちょっていうとUTF-32?
合成文字の扱いを考えると固定長にはならない。
ようはこれがしたい。 char str[]="あいうabc"; for(int i=0; i<strlen(str); i++) printf("%c\n",str[i]); で、 あ い う a b c が出て欲しい。wchar_t(+UTF-16)に望んだ事はこれだったんだがなぁ。。。 変換とかオーバーヘッドを伴う処理や、そういう処理を含んだ文字列操作クラスは使いたくない。
>>444 それは、本質的に無理だったってことなんだろう。
合成文字がある限り、1つの文字を表わすのに複数のコードポイントが必
要なのはUTF-32にしたって変わらない。
445 :
デフォルトの名無しさん :2009/07/10(金) 12:55:38
>>443 配列の操作はポインタ演算なんだから固定長以外無理だろ。
可変長の操作をポインタ風にするにはクラスで隠蔽するしかねーじゃん。
C/C++に対して、何を寝とぼけたこと言ってるんだ。
それは流石に的外れw
448 :
デフォルトの名無しさん :2009/07/10(金) 13:55:30
449 :
デフォルトの名無しさん :2009/07/10(金) 13:57:43
>>443 >>446 の云う通りだ
「文字」クラスを作って
配列はそのクラスのインスタンスへのポインタを並べたものにする
どうだ最強だろ
激しくスレチかも知れませんが、もしそうだとしたら誘導してください。 smakeってどうやってビルドすればいいのでしょう? Cygwinには入っているらしいのですが当方MinGWを使っているので・・・ 当方の環境: WinXP SP2 gcc v3.4.5
>>450 何がわからんのか書いてくれ。
make 一発でビルドできて躓くポイントなんぞ無いぞ。
と、いうか Readme 読め。
>>452 smakeだったら README.compileってファイルがあると思うが
他にもlinux系ツールだと INSTALLってファイルにビルド方法が
書かれていることが多い
WinXP SP2 gcc v3.4.5
MinGWのインストーラーって無くなりました? 幾つかの参考サイトはインストーラーが前提になってて インストールしたいのですけど配布サイトに無くてお手上げ状態です。
>>456 lzma で配布されてるデカいアーカイブがひとつあるだろ。
GCC 4.4.0 を使うのに必要なものはそれに全部入ってる。
456では無いけど、そのlzmaファイル、今は無いみたいだ >The "/GCC Version 4/Current Release_ gcc-4.4.0/gcc-full-4.4.0-mingw32-bin-2.tar.lzma" file could not be found or is not available. >Please select another file. ・・・他のファイルも落とせないし、sf.netがリニューアルしてから調子悪いのか
460 :
456 :2009/07/23(木) 10:40:20
質問した本人です。
こんな早く返事が帰ってくるとは思っていませんでした。反応遅くて申し訳ないです。
とりあえず
>>457 を使ってみようと思います。
お返事ありがとうございました。
461 :
456 :2009/07/23(木) 10:45:02
462 :
デフォルトの名無しさん :2009/07/23(木) 11:12:02
うげ、やっちまった。直リンになっちまった。ごめんなさい>keihanna
464 :
456 :2009/07/23(木) 12:19:17
今配布サイトに繋げたらインストーラーが追加されてました。 昨日はなんで無かったんでしょうね…。 ともかく使ってみます。 ありがとうございました。
なんか公式のダウンロードページここ最近いろいろ変更されてるね
467 :
デフォルトの名無しさん :2009/07/27(月) 00:48:58
Cygwin+GCC4(非MinGW)で UTF-16BEのテキストファイルをmmapし、 それをwchar_t型の配列にキャストした場合 wprintf()で出力される文字は、UTF-16BEなのでしょうか? wchar_tやwprintf()で出力される文字コードは環境依存と聞いた事があるので Cygwinではどうなっているのかわからないのです。 ちなみに、試しに出力してみましたが、画面表示のロケーションをUTF-16BEにしてるにも関わらず文字化けします。 こちらの設定ミスなのか、仕様なのかがわからないので・・・
>>467 Cygwinのバージョンは?
1.7ならLANGをちゃんと設定しておけばいけるはず。
1.5ならwcharは壊れてるので事実上使用不可なんじゃなかったっけ。
Cygwinのwchar_tはUTF-16LEじゃないかい?
470 :
デフォルトの名無しさん :2009/07/27(月) 11:09:59
swab関数でバイトオーダーを入れ替えちまえ
gcc-full-4.4.0-mingw32-bin-2.tar.lzmaをダウンロードして解凍しました。 で、以下のソースを msys上でコンパイルしたら、すごい量のエラーが吐かれました。なんか文字化けてるし、全然意味わかりません。 助けて下さい。 ---------------------------------------------- #include <iostream> using namespace std; int main() { cout << "Hello" << endl; return 0; } ---------------------------------------------- ---------------------------------------------- $ g++ hello.cpp c:\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/bits/postypes.h:42 、ォ、・includ e 、オ、・ソ・ユ・。・、・・, c:\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/iosfwd:42 、ォ、 , c:\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/ios:39 、ォ、, c:\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/ostream:40 、ォ 、, c:\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/iostream:40 、 ォ、, hello.cpp:1 、ォ、: c:\mingw\bin\../lib/gcc/mingw32/4.4.0/include/c++/cwchar:47:19: error: wchar.h: No such file or directory (以下続く) ----------------------------------------------
>>472 すいません。読んでませんでした。
ちゃんと別のファイル落して、くわえたら動きました。
ありがとうございました。
>> 474 ぉお〜 !!ありがとうございます。
476 :
デフォルトの名無しさん :2009/08/10(月) 22:26:06
cygwin でシェルスクリプトを実行しようとすると cannot execute binary file というエラーが出てしまいます。 どうしたらいいんでしょう?
シェルは何を使ってんの?
>>476 a)Unicode(UTF-16)で保存している
b)BOM付きUTF-8(メモ帳のUTF-8で保存するとコレ)で保存している
のどっちかじゃね?
TeraPadあたりでUTF-8N保存してみたら?
479 :
デフォルトの名無しさん :2009/08/11(火) 14:03:25
387 名前:名無しさん@お腹いっぱい。[] 投稿日:2009/08/10(月) 08:03:10 シェルスクリプトを実行すると ./test.sh : cannnot execute binary file なるエラーが出てしまいます。 何が悪いんでしょう。 スクリプトは下なのですが #!/bin/bash cat data.txt
MinGWでgcc 4.4.0を入れたんだが、 gcc -vをすると文字化けするとこあるんだが、なんでだろ? helloworldで日本語入れて表示させても文字化けしないんだが。 C:\Users\Username>gcc -v Using built-in specs. Target: mingw32 ・ウ・・ユ・」・ー・ェ・ラ・キ・・: ../gcc-4.4.0/configure --enable-languages=c,ada,c++,fortran,java,objc,obj-c++ --d isable-sjlj-exceptions --enable-shared --enable-libgcj --enable-libgomp --with-dwarf2 --disable-win3 2-registry --enable-libstdcxx-debug --enable-version-specific-runtime-libs --prefix=/mingw --with-gm p=/mingw/src/gmp/root --with-mpfr=/mingw/src/mpfr/root --build=mingw32 ・ケ・・テ・ノ・・ヌ・: win32 gcc version 4.4.0 (GCC)
上側の化けてるところは「コンフィグオプション」で、下側は「スレッドモデル」だな
>>480 ソースコード中に日本語を使うなら -finput-charset や -fexec-charset オプションでエンコーディング指定するのを忘れないように。
-finput-charset=cp932 -fexec-charset=cp932 これか
486 :
480 :2009/08/11(火) 14:51:33
>>474 でDLしたファイルをgcc.moにリネームして置き換えたら、文字化け無くなった。
C:\Users\Username>gcc -v
Using built-in specs.
Target: mingw32
RtBOIvV: ../gcc-4.4.0/configure --enable-languages=c,ada,c++,fortran,java,objc,obj-c++ --disable-sjl
j-exceptions --enable-shared --enable-libgcj --enable-libgomp --with-dwarf2 --disable-win32-registry
--enable-libstdcxx-debug --enable-version-specific-runtime-libs --prefix=/mingw --with-gmp=/mingw/s
rc/gmp/root --with-mpfr=/mingw/src/mpfr/root --build=mingw32
Xbhf: win32
gcc version 4.4.0 (GCC)
>>482 が言ってくれたみたいに、
「RtBOIvV」のところって、gcc3.4.5のときだと「Configured with」って表示されてたような。
「Xbhf」のところは、gcc3.4.5のときだと「Thread model」って表示されてたような。
この文字列に意味あるのかな?
>>486 いやいや、それ化けてますから!
ちゃんと適用されていればまさに
>>482 の通り表示するはずなんだ。
488 :
480 :2009/08/11(火) 17:11:32
>>487 レスthx!
今は、情報収集でググったりしてるところであります。
とりあえず現状は、
(1)コマンドプロンプトの文字コードはCP932。
(2)gcc -vで日本語と思われるところが文字化け。
(3)日本語を含む文章(ファイルの文字コードはSJIS)をprintfで表示させたら文字化けはしない。
(4)gcc3.4.5を入れたら、\shareにlocaleフォルダが無かった(多言語対応してないのかな?)
もしかして、gcc4.4.0の導入方法がダメなのかな?
公式ページからMinGW5.1.4.exeをインストールしたら、gccは3.4.5になってた(とりあえず、C:\MinGWを作成)。
で、公式ページからgcc-full-4.4.0-mingw32-bin-2.tar.lzmaをダウンロードして、
解凍したできたフォルダ達を\MinGWで上書きした。
この方法がそもそもダメとか?
MinGW 5.1.4のg++で std::wstring がコンパイルは通るんだが,リンカーエラーになる。(IDEとしてCode::Blocks使用,ソースはBOMなし UTF-8で書いてる)。環境変数関係の設定はもちろんOKのはず。 #include <windows.h> #include <string> using namespace std; int main() { wstring wstr(L"はろー"); //ここと ::MessageBoxW(NULL, wstr.c_str(), L"タイトル", MB_OK); //ここをコメントアウトして // ::MessageBoxW(NULL, L"はろー", L"タイトル", MB_OK); //ここのコメントを外すとOK return 0; } このプログラムをビルドするとリンカーが, C:\Documents\Software\CodeBlocks\unitest\main.cpp|9|undefined reference to `std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string(wchar_t const*, std::allocator<wchar_t> const&)'| というエラーを吐く。wstringをやめてstringを使い,ソースをSJISにして::MessageBoxAで表示させると問題ない(L”なんたら”のLは外す)。 ヘッダーファイルをgrepで検索したら, #if defined (_GLIBCXX_USE_WCHAR_T) || defined (_GLIBCXX_USE_WSTRING) template<> struct char_traits<wchar_t>; typedef basic_string<wchar_t> wstring; #endif #endif と書いてあったので,念のため _GLIBCXX_USE_WCHAR_T と _GLIBCXX_USE_WSTRING を定義してみたけど やっぱりダメ(リンカーエラーだから関係なさそうだけど)。何かライブラリが足りないのかな?
> 念のため _GLIBCXX_USE_WCHAR_T と _GLIBCXX_USE_WSTRING を定義してみたけど それが定義された状態で libstdc++.a がビルドされてないとダメなんじゃないか?
>>490 > それが定義された状態で libstdc++.a がビルドされてないとダメなんじゃないか?
レスサンクス。
それって、_GLIBCXX_USE_WCHAR_T と _GLIBCXX_USE_WSTRING を定義した上で
libstdc++.a をビルドしろって意味? バイナリ拾ってきてインストールしたんで(ダウンロード
してインストールする方式だったけど)、ソースからビルドするにはどうすればいい?
教えて君でスマン。
libstdc++.a は gcc のソースに一緒に入ってるんじゃないかなぁ。
>>491 gccをビルドするときのconfigureオプションじゃないかと調べずに言ってみる。
>>491 libstdc++.aは
C:\MinGW\lib\gcc\mingw32\4.4.0にあるよ
>>494 バイナリがどこにあるなんてことじゃなくてビルド方法の話だろ。
496 :
491 :2009/08/14(金) 07:10:01
>>495 > バイナリがどこにあるなんてことじゃなくてビルド方法の話だろ。
その通りです。既存の libstdc++.a をリンクしてのテストはもちろんやってて、
それでうまく行かないのです。
うーん。バイナリダウンロードしてきて、そのままインストーラー任せでやったから、
こういうとき困るね。Code::Blocks使うので、MSYSすらインストールしてない。
もう少し調べてみます。
もう stlport 使えよ
499 :
491 :2009/08/15(土) 00:10:44
>>497 あちゃぁ、がっくし... 比較的最近の記事だし、そういうことなのかぁ。
>>498 そういうことですかね。検討します。
皆さんアリガト。
500 :
デフォルトの名無しさん :2009/08/28(金) 21:38:57
cygwinでshlwapi(SHell Light Weight API)使うにはどうすんの? ソースに#include <shlwapi.h>書いて ldに-lshlwapi食わせてもなぜか失敗する
どう失敗するのか書けよ。 ライブラリがないのか? 実行時エラーか? エラーメッセージは?
gccだとVC/C++用のライブラリは使えなかったりするから、 shlwapiのライブラリをgccでコンパイルする必要があるのかもね。
普通にインストールしてればインポートライブラリは入ってるよ。
もしかして、Cygwinのgccで確保出来るメモリ量って結構少ないですか? 膨大なソースで多分1日仕事になるであろうソースがあるんですが、 _cygtls::handle_exceptions: Exception: STATUS_ACCESS_VIOLATION ってエラーが出てて、どうもmallocかけてる所が怪しいんです。 ちなみに、SolarisとFreeBSD(両方64bit版)では動いてます。 Windowsは、XP x64だけど、多分Cygwinは32bitのはず。 でも、32bitの領域食いつぶしてるとも思えないしなぁ・・・
Ubuntu 9.04 で g++ 4.3.3 を使っているのですが、メモリ管理で質問があります。 std::list に例えば int 型のデータを例えば1000万個くらい突っ込み、topでメモリ使用量を確認すると、 150MBくらい使用しています。 その後、データが不要になったあとで clear() メソッドで中身を消去し、利用した関数を終了させて list を完全に削除した後でも、top で確認するとメモリが開放されずに残ってしまいます。 このメモリが開放されるのは、アプリケーションが終了されるときのみです。 この理由を知りたいのですが、ご存知の方は教えていただけないでしょうか? 試行錯誤してるうちに、std::list 以外でも、例えば new int[10000000] した後にデータを突っ込んだメモリは delete[] で消えますが、 for(int i=0 ; i<10000000 ; i++){ ... = new double; } してデータを突っ込んだメモリはすべて delete しても やはりメモリが残ってしまうことに気づきました。これも関係ありそうな気がします。
逆アセンブルのリスト取ってsbrk()の呼び出してる箇所を見てみたら? malloc()はsbrk()を大抵呼び出すがfree()は単に未使用ブロックとして マークし直すだけの事が多いのでフリーリストのフラグメントが起きると うまく再利用されない事がある
>>505 あなたにメモリ管理についての知識が無いだけ。
例えばmallocの実装がどうなっているか、一度調べてみると良い。
>>504 実装にバグが無ければ
メモリが足りない時は、mallocはNULLを返す。
malloc呼び出しの内部で落ちるのは、
アプリケーションがmallocの管理領域を壊している可能性が極めて高い。
例えば、1byteはみだして書き込んでいる場合、
64bitだとアラインメントの都合ではみだしていることが表面化しない場合がある。
>>505 単純にそれだけするテストをやってみたってこと?
一般に new (malloc) で確保したメモリを delete (free) した場合、
それらの領域は次に new したときに再利用される。
一旦確保したメモリはアプリケーション側で掴んでいるので、
そのアプリケーションが終了するまでは OS 側にしてみれば使用中に視える。
BSD 系のどれだったかでは一旦 OS に返すような実装のもあったような気がする。
>>505 大きなメモリブロックはOSから直接もらってOSへ直接返し、
小さなメモリブロックは独自に管理するのでOSへ返さず掴んだまま、
という実装は十分ありうるので、一応説明は付く
Cygwinって一応内部ではWin32呼んでるんだよね こういうの組んでみたけど結構こまめにOSに返してるよ #include <iostream> #include <windows.h> const int l = 10000000; int main() { double** a; MEMORYSTATUS ms; a = new double*[l]; for (int i = 0 ; i < l; i++) a[i] = new double; GlobalMemoryStatus(&ms); std::cout << ms.dwAvailPhys << std::endl; for (int i = 0 ; i < l; i++) delete a[i]; GlobalMemoryStatus(&ms); std::cout << ms.dwAvailPhys << std::endl; delete[] a; GlobalMemoryStatus(&ms); std::cout << ms.dwAvailPhys << std::endl; }
「OSからの取得」をどうやっているのか、にも依存するよ。
例えばHeapAllocで獲得しているのだとしたら、
それは事実上mallocの実装そのものだから
その内部で(システムコールを呼んで)カーネルに返しているかどうかは
HeapAllocの実装次第。
>>506 の通りにsbrk()経由とするなら、その中で何が呼ばれてるかだね。
OS によってメモリ管理に関する方針はかなり違うけど、 Linux の場合は「なるべくめいっぱい活用する」方針だったと思う。 普通に使ってたら空いてるメモリはほとんどなくなるはず。
513 :
自己レス :2009/08/30(日) 21:40:30
514 :
デフォルトの名無しさん :2009/08/30(日) 21:41:37
#include <windows.h> #include <stdio.h> typedef int (*TFUNC)(LPCTSTR,LPTSTR,UINT); int main(int argc, char *argv[]) { char str[100]; int ret; HINSTANCE hInstDLL; TFUNC DllFunction;
515 :
デフォルトの名無しさん :2009/08/30(日) 21:42:37
hInstDLL = LoadLibrary( "SHLWAPI.DLL" ); if( hInstDLL == NULL ){ printf( "hInstDLL == NULL" ); return -1; }else{} DllFunction = (TFUNC)GetProcAddress( hInstDLL,"PathSearchAndQualifyA" ); printf( "DllFunction : %d\n", (int)DllFunction ); ret = DllFunction(".",str,100); printf( "ret=%d,str=%s\n", ret , str); if(!FreeLibrary(hInstDLL)){ abort(); }else{} return 0; }
516 :
デフォルトの名無しさん :2009/08/30(日) 21:54:41
>>513 gcc は実はインポートライブラリ無しでも dll とリンクできる。
-lshlwapi の変わりに /cygdrive/c/WINDOWS/system32/shlwapi.dll としてみれ。
gcc version 3.4.5 (mingw-vista special r3) だと
>>500 の方法で何の問題もないね。
>>378 , 379
TDM版MinGW使ってみた。なかなか良くてCode::Blocksとの相性もバッチリなんだが,
STLがやたら遅い(gccの問題だと思う)ので,STLPort5.2.1をビルドしようとしたら,
うまく行かない。
一応ドキュメントも読んだんだが,MSYS上からmake gcc.makってやっても「何もすることが
ない」って言われてビルドできない。
TDM版MinGWにはmake.exeはなくてmingw32-make.exeしかないけど,これは使っちゃいけないと
書いてあるので,MSYSにあるmake.exeでやってみたんだが...
やり方教えてもらえると嬉しい。
>>519 make -f gcc.mak じゃね?
521 :
519 :2009/09/01(火) 20:32:50
>>520 > make -f gcc.mak じゃね?
そうそう、まずそれだった。普段IDEばかり使ってるんでmakeコマンドの使い方忘れてた。
で、まずは落ち着いてやってみようと思って、MinGWを通常の5.1.4に戻して、
>>331 を参考にSTLport5.1.7をビルドしてみた。
gcc.makというファイルは二箇所にあるけど、\build\libの下のヤツを使って、
make -f gcc.mak depend
make -f gcc.mak install
でビルド成功。ちなみに
>>331 の、
> # if (__W32API_MAJOR_VERSION > 3) || ((__W32API_MAJOR_VERSION = 3) && (__W32API_MINOR_VERSION >= 12))
の = 3 のところは、== 3 が正解。で、ビルドは出来たんだけど、C++版Hello World!プログラム(iostream使うやつ)
で試してみたら、コンパイル時に「#includeのネストが深すぎる」ってエラーがでた。
今仕事場にいないので詳細はわからない。続きはまたあしたかな...
522 :
519 :2009/09/02(水) 18:28:05
MinGW5.1.4+STLPort5.1.7でテストをしてて,STLPortのビルドは出来たけど(Thanks to
>>331 ),
使うとうまく行かない。 以下のHello world!! C++版をコンパイルしてみた。
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
return 0;
}
環境変数は入念にチェックして,MinGW標準のC++用ヘッダがインクルードされずに,stlportのヘッダが
読み込まれるようにしたんだが,コンパイルすると_cstddef.hの28行目の
# include _STLP_NATIVE_CPP_C_HEADER(cstddef)
のところで,
C:\MinGW\include\stlport\stl\_cstddef.h|28|../3.4.5/cstddef: No such file or directory
と言うエラーが出て,後はエラーの嵐。grepでいろいろ調べた結果,MinGWの場合
_STLP_NATIVE_CPP_C_HEADERの定義がうまく出来てないらしいことまではわかったんだが,
どうすればいいんだろ。教えてエライ人。
523 :
519 :2009/09/03(木) 18:00:08
何とか自己解決。 ■ビルドはMSYS付属のmakeじゃなくて,WindowsのコマンドプロンプトからMinGWの mingw32-makeでやる(ドキュメントをよく読んでたら書いてあった)。但し,MSYS使わ ない場合はconfigure.bat -c gcc しろって書いてあるけど,これはウソ。 configureしてからメイクすると速攻エラーが出る。 mingw32-make -f gcc.mak depend mingw32-make -f gcc.mak install だけでOK。 ■unitテストはロケール関係で少しエラーが出た。ehテストはso_stlgだけ, EH TEST FAILURE ! [deque] :testing range insertion at random position (weak) ERROR : 37 outstanding allocations. となったが,so_gとsoはパス。ちなみにこのso_stlg, so_g, soというフォルダに3つ 同名のテストプログラムが出来るけど,違いは何なの?(unitテストsoとso_stlgの 2つのフォルダ内にexeができる)。 ■STLPortのヘッダやライブラリを置いた場所や元のMinGWのフォルダ構成にあわせて, stlport/stl/config/host.h を丁寧に書き換えてやる必要がある。 まぁ,いろんな環境に対応しなければならないので作る側の苦労はこんなもんじゃないと 思うが,ドキュメントはもう少し整備してまとめて欲しいなぁ...
TDM-MinGW4.4.1出てるな
>>524 ・・・あの、4.4.0がインストールしてある場合、
アップデートするには
Create
: Create a new TDM/MinGW installation
Manage
: Manage an existing TDM/MinGW installation
Remove
: Remove a TDM/MinGW installation
のうちどれを選べば最も望ましいでしょうか?
>>525 知らんけどRemoveしてからインスコすればいいんじゃね?
>>525 俺はそういうメニューが出るとは知らなかったので
プログラムの追加と削除から消してCreateした
でもRemoveしてCreateしてもいいかもな
>>524 これ使うと,サイトの上の方にピンクの囲みで書いてあるとおり,実行のものすごく遅い
プログラムが出来上がってしまう。
それでcoreとg++はサイトの下の方にある4.3.3を使ったら解決したよ。
Cygwin1.7でmpich2がmakeできんな。 clockとかシステムコールがないとか・・・ 素直にWIndowsバイナリ入れるかな・・・
WARNING: The 4.4.1-tdm-1 release is known to have a bug which causes drastically increased CPU usage in programs compiled with it. You are urged to use a previous release until this bug is fixed. excite&俺訳↓ 警告: 4.4.1-tdm-1リリースにはそれでコンパイルされたプログラムがCPUパワーをものすごく使うようになってしまうバグがあるのが知られています。このバグが修正されるまであなたが前のリリースを使用することを推奨します。 マジかよ!おじさん、気付かず更新しちまったぜ
532 :
525 :2009/09/08(火) 15:03:06
みなさんありがとうございます。
どうやら
CreateとManageの違いは、
Manageの場合はインストール先のパスなどが引き継がれて便利ということ
だけっぽいです(完全に私の勘ですが)。
・・・ですが、インストールしてみたところに
>>529 さん、
>>531 さんのレスをみて
即刻以前のインストーラを使って元に戻しました。
>>531 のレスを見て疑問なのですが、
これはgcc4.4.1のバグでしょうか?
それとも 4.4.1-tdm-1 release独自のバグなのでしょうか?
ご教示いただけませんでしょうか?
よろしくお願い申し上げます。
>>534 となるとTDMのバグの可能性が高そうですね。
ありがとうございます。
どうせいずれ直るでしょ 俺は速度はそんなに気にしていない(コンパイルが通って動けばいい)派 なので気にしていない
TDMが止めた方がいいっていってるんだから 俺は止めとこう。 ・・・ってまあホント好き好きにすりゃ良い問題だよな。
538 :
529 :2009/09/08(火) 22:27:35
>>536 > 俺は速度はそんなに気にしていない(コンパイルが通って動けばいい)派
> なので気にしていない
それがさぁ、条件によっては実用にならない位遅くなるんだよ。
100行位のUNIDCODEのファイルを読み込ませて処理するソフトでテストしたら(STL使用)、
VC++やBCBでコンパイルしたものは数秒で終わるのに、TDM-MinGW4.4.1だと
10分位かかった。
で、
>>529 に書いたように、coreとg++だけ4.3.3をダウンロードして上書き解凍してコンパイルし
なおしたら、ちゃんと数秒で終わるようになった。
>>538 そんなにひどいのか
じゃあ4.3.3に戻すか
簡単に戻せるしね
SourceForgeからDLできるのであっという間だし
mingwはTDMが標準なのかな?
541 :
532 :2009/09/08(火) 22:56:32
>>538 g++ (TDM-1 mingw32) 4.4.0に戻したのですが、
これもバグを抱えていますか?
4.3.3レベルまで戻す必要はありますでしょうか?
542 :
529 :2009/09/08(火) 23:00:39
>>541 ごめん、4.4.0は持ってないし試してないのでわからない。
けど、サイトにそうは書いてないから大丈夫なんじゃないのかな?
543 :
532 :2009/09/08(火) 23:44:02
>>542 ありがとうございます。
過去のサイト(Web魚拓みたいなもの)をあさって見たのですが
4.4.0リリース時点までは戻れなくて。。。
TDMってbashが入ってないけどconfigureはどうればいいの?
TDMに限らずMinGWにはbashは入っていない msysを落とせ
いま64bit windows環境がなくて試せてないんだけど、mingw-w64ってどう?
>>507 メモリ不足でNULLが返るかというと微妙。
mallocは成功して、実際にメモリを使う時(読み書き)すると初めてメモリを割り当てて不足したらそこで止まるようなシステムもある。
Linuxなんかはそう。
そんなのあるのか…manpageでバグ扱いされてるな
>>548 ここはCygwinのスレであって、Linuxのスレではないし
落ちるのがmalloc内部と限定される場合には当てはまらない。
だいたい、「落ちる」と言っても
セグフォールトのような症状で落ちるのではなく
「有無を言わさずプロセスがkillされる」だけなのだから。
それも、殺されるのは自プロセスとは限らない、 というより、自分以外である方が普通。
制限なんて作らなかったら良かったのに
>>553 As a general rule, you should choose the default SJLJ packages,
unless you know you need faster exception handling and can guarantee
you'll never need to unwind through non-DW2-compiled stack frames
(such as a Windows callback). If you chose the DW2 packages,
consider removing the "-dw2" suffix from the program names.
See README-gcc-tdm.txt, included in the core package,
for further notes on this topic.
つまりSJLJ(f1)を優先的に使えと
Dwarf-2(f2)を使うのは、速い例外処理と、DW2でコンパイルされた
のではないスタックフレーム(Windowsのコールバックのような)を解放する
必要が無い事を保証できる
もしf2を使うなら、プログラム名から"-dw2"接尾辞を削除する事を
考慮しなさい
つまりコールバックを多用してまたより速い例外処理が必要ならf2を、
そうでなければまずf1を選べという事でしょう
webdlはオンデマンドインストールで、画面から何をダウンロードして
インストールしたりアンインストールするか決めれるというだけのもの
でも便利
最終的にはどうすればいいかというと上の注意に従いながらwebdlで
インストールすればいいという事になる
あ、訳がおかしいな ×もしf2を使うなら、プログラム名から"-dw2"接尾辞を削除する事を考慮しなさい ○もしf2を使うなら、プログラム名から"-dw2"接尾辞を削除するかどうかよく考えなさい
ttp://pc12.2ch.net/test/read.cgi/tech/1251773567/ に居た者ですが、TDM-MinGWの問題のため、こちらに参りました。
ttp://codepad.org/zASwhl4f このコード、codepadで実行させると上のリンクのように正常に動作しているようですが、
私の環境g++ (TDM-1 mingw32) 4.4.0ですと
0.1
-9.25596e+061
と表示されてしまいます。
という問題が生じておりまして、
TDM-MinGW4.3.3 -> ×
TDM-MinGW4.4.0 -> ×
TDM-MinGW4.4.1 -> ○
ということで、
TDM-MinGW4.4.1で修正されたバグだったようです。
という一応の決着をみました。
しかし本当にバグであったかを確認したく、
皆様、
「Windowsで」
TDM-MinGW4.3.3 , TDM-MinGW4.4.0 , TDM-MinGW4.4.1
を入れている方がいらっしゃいましたら、
宜しければ是非
ttp://codepad.org/zASwhl4f を試して頂けませんでしょうか?
557 :
554 :2009/09/14(月) 07:03:12
>>555 なるほど。
とても良く分かりました。
本当にありがとうございました。
558 :
553 :2009/09/14(月) 07:03:54
>>550 mingwでも巨大なメモリをアロケートしたプログラムは途中まで処理が進んだ状態で落ちる(windowsのエラーダイオログが出て)がね。
ぬるぽチェックでは止まらんよ。
じゃあLinuxとは違うじゃねーか。 Linuxは何事も無かったように、どこかの知らないプロセスを落として メモリを確保するんだから。
Cygwinの話じゃなくてMingwもかい。 Mingwだったら、HeapAllocをそのまま使えば ちゃんとNULL返してくれるのに。 バカみたい。
>>559 例えば、↓のようなコードでは全然落ちない(普通にNULLが返る)んだけど
再現するコードを例示してくれ。
まさかとは思うが、newを使っていて
bad_allocをcatchしてないから落ちるってオチじゃないよね。
void test(unsigned nmegabytes, std::vector<void *>& saver) { unsigned alloced = 0; printf("[%u]MByte\n", nmegabytes); for (;;) { void *p = malloc(nmegabytes * 1024 * 1024); if (!p) { printf("malloc() returns NULL at allocated %uMB\n", alloced); break; } *(int *)p = 0; // アクセス違反で落ちる? alloced += nmegabytes; saver.push_back(p); } // clear for (std::vector<void *>::iterator it = saver.begin(), end = saver.end(); it != end; ++it) { free(*it); } saver.clear(); } int main() { std::vector<void *> saver; saver.reserve(4 * 1024); test(1, saver); test(50, saver); test(500, saver); }
>>563 C++かとおもいきや、malloc使ってるのかよw
えっと、とりあえずそんなに領域確保出来たっけ。
ってことで、
if (!p) {
printf("malloc() returns NULL at allocated %uMB\n", alloced);
break;
}
を
if (!p) {
printf("malloc() returns NULL at allocated %uMB\n", alloced);
perror("error");
exit(EXIT_FAILURE);
break;
}
と書き換えてみれば、何が原因で落ちたかわかるよ。
あと、pが確保出来てないのに、そこでbreak;しちゃうと、そりゃその後でアクセス違反で落ちるよw
565 :
デフォルトの名無しさん :2009/09/15(火) 01:14:22
だから「落ちねー」ってのタコ。 「ちゃんとNULL返してる」っての。
566 :
デフォルトの名無しさん :2009/09/15(火) 01:15:22
さっさと「落ちるコード」出せやボケ
ごめん流れ読んでなくて、単なる質問だと思ったw
ふつうにOllyDbgあたりのデバッガアタッチして追ったらダメなの?
ttp://www.tdragon.net/recentgcc/ WARNING:
The 4.4.1-tdm-1 release is known to have a bug which causes drastically increased CPU usage in programs compiled with it. You are urged to use a previous release until this bug is fixed.
これが修正されるのはいつですか?
>>570 知らねえ
嫌ならTDMじゃないMinGWを苦労して入れてそっち使ってろよ
>>571 それもめんどくさい
まあ問題が出るようだったら古い版のTDM使うことにするけど。
573 :
デフォルトの名無しさん :2009/09/26(土) 11:23:46
64bit のmingw入れて、32bit用のアプリを 生成するにはどうすれば良いの?
-m32?
575 :
デフォルトの名無しさん :2009/09/26(土) 20:46:01
だな
MinGW と Msys を去年の10月ごろ入れて gcc のバージョンが gcc version 3.4.5 (mingw-vista special r3) なんですが netdb.h sys/socket.h netinet/in.h がインクルードできません 最新版にすればインクルード出来るでしょうか? Cygwin にしないとダメなんでしょうか?
577 :
576 :2009/10/02(金) 14:51:31
何か3.4.5 だとSJISもうまくコンパイルできないようなんですが 3.4.2とかを入れないといけないのでしょうか?
>>577 当然、-finput-charset=cp932とかやってるんだろうね。
>>578 やっていません。
3.4.5 でも
そのオプションをつければいけるのでしょうか?
今やっているのは取りあえず通らない文字を削っているのです
取りあえず、SJIS はいいとして、インクルードファイルは、3.4.2 とかにしないといけないのでしょうか?
全部試してみればいいじゃないか 無料なんだから、めんどくさがってないで自分で解決してみろ
>>576 MinGWならwindows APIのソケットを使って下さい。
4.3.2 にして、色々試していたらコンパイルもリンクも出来ました 皆さん、どうもありがとうございました。
MSYSにVIMインストールするにはどうしたらいいんですか?
手順 1. vim をインストールする
>>583 vimのソースをダウンロードして解答したら中に
「INSTALL」か「README」っていうファイルがあるはずだからそれを読んでください。
大概、.configure; make; make install とかすることになりそうだけど。
586 :
583 :2009/10/04(日) 21:20:04
MinGW+MSYS環境なのですが,yumみたいなのはついていないのでしょうか?
よくよく確認してみると、vimってMSYSにデフォルトで入ってるみたいなんだが。
そういう何もかも込み込みの環境を提供しようとするものではない。 基本的には configure と make が動くところまでって感じ。
そうなんですね. じゃあソースおとしてコンパイルしてみます. 最新版のMSYSにはVIMがはいっていないみたいなんですよね
msysDTK の方に入ってるかも?
>>589 一応公式サイトにMSYS用のvimのバイナリっぽいものがあるけど、試しては無い。
593 :
590 :2009/10/04(日) 22:55:06
あれ? わざわざ入れたことは無い (だって Emacs 派だから!) はずなんだけど俺の環境には vim は入ってるなぁ。 何かと一緒に入ったんだと思うんだけど、 DTK じゃなかったか。
TDMいつになったら直るんだ。
次のg++のバージョンまで直す気がないとか?
と思ったら似たようなレスが
>>570 でも出ていたか。
早くバグ直せゴルァ!メールでも送るとか
俺のtarはv1.13だからlzmaは対応してません。(キリッ)
俺んとこのtarも1.13だ mingw32-gcc-4.4.0が出たときは結局Linuxで展開してからWindowsに持ってきたよ ちょっと解せないものを感じた
windowsじゃないOSでクロスビルドした方が効率いいからね
tdmのソースの中のehstatic.patchにこんなことやってるところがあるんだけど + HANDLE hmutex = CreateMutexA(0, FALSE, name); + if (WaitForSingleObject(hmutex, INFINITE) != WAIT_OBJECT_0) + __w32sp_trap();
601 :
デフォルトの名無しさん :2009/10/06(火) 11:37:29
crt2.oのソースはどこにあるんだ?
602 :
デフォルトの名無しさん :2009/10/06(火) 11:52:37
crt0.oのソースはどこだ?
604 :
デフォルトの名無しさん :2009/10/06(火) 13:41:24
>>596 俺は7-Zipが.tar.xzに対応するのを待っている。
>>593 vimは一個前のMSYSの本体に入ってたが最新版で別パッケージに分離された.
2009-10-08 TDM-2 fixing the bug that caused a major slowdown in nearly any non-trivial program.
609 :
538 :2009/10/09(金) 11:50:25
キター
611 :
デフォルトの名無しさん :2009/10/09(金) 12:13:13
MinGWでUnicodeアプリケーションが作れないのだろうか?
>>611 Unicodeアプリケーションが何を指してるのか知らないが、
俺はutf-8でソースコード統一して書いてるけど正常に動作してるよ。
内部での文字列比較とか問題なく動く。
613 :
612 :2009/10/09(金) 12:30:54
ただし、外部から入力される文字列は全部utf-8に変換してるけど。
614 :
デフォルトの名無しさん :2009/10/09(金) 12:52:38
__wargvが使えないみたいだけど。
615 :
614 :2009/10/09(金) 14:25:00
CommandLineToArgvWを使うことにした。
>>607 入れたd
On Demand Installの方はバグがあるらしく途中で止まるな
26.2MBの方を落としてインストールすればOK
おおホントだ。
上で既出だけどパピコ。
TDM's GCC/mingw32 Builds
ttp://www.tdragon.net/recentgcc/ NOTICE:
The 4.4.1-tdm-2 release is now available. If you were using the first 4.4.1 release, you are urged to upgrade to this new version in order to avoid a bug that caused drastically increased CPU usage in programs compiled with the first version.
ちゃんと測定したわけじゃないんだが、4.3.3より4.4.1-tdm-2の方がかなりコンパイル速くなってる 気がする。 環境が違うんで単純には比較できないけど、wxWidgets2.8.10の全種類(8種類)のライブラリのビルドに 4.3.3の時は12時間近く掛かってたのが、今日、自宅のマシン(もう4年位前のたいしたことないPC)で やってみたら3時間くらいで終わった。
mingw 上でなにか make しようとすると
大抵 libintl.la がとか gettext がとか文句を言われて
コンパイルできない
http://gnuwin32.sourceforge.net/packages/gettext.htm ここにバイナリが置いてあるかと思い落としてきてみるも
libintl3.dll とかよくわからないファイルが入ってます…
これを libintl3.dll -> libintl.la として動かすこと
できるでしょうか?
sourceからbuildしないと駄目なのでしょうか
もしそうだとすると複数の窓環境にインストールするとか
不便すぎる mingwを入れて
perl5.8.1以上をmingw上の/usr/bin下にインストールして
gettetxt を make して、ようやく目的のソフトに取りかかれるorz
というかmingw のperl は5.6.1でそのままだと gnu のソフトがビルドできないような…
>>621 それを「よくわからないファイル」とか言ってしまう奴がなんで mingw 使ってんの?
Developer files や Dependencies も必要。
全部スタティックリンクにしたいならソースからビルド。
msysのパッケージ管理が今ひとつだからね。 fedoraでmingw32のパッケージ入れて、クロス開発する方がいいかも
う、うん……(´・ω・`)
>>626 そんなのあるんだー。
前者はTDM/MinGW Installerってやつだよね。
インストーラ.exeの形で配布されているけど、
後者は初めて見た。
これもインストーラだったかい?
mingw-w32-bin_i686-mingw_20091013.zip っていうやつ今落としてるところ。 サイズが200M超えていて、回線遅くて中身がどうなっているか確認できていない。
書庫形式でTDM/MinGWのサイズ8倍あるから こっち入れれば何でもコンパイルできるんじゃないかとわくわくしてる所。 たとえばffmpegが追加なしで出来たりとか。
どうせAdaとかFortranとかObjective-Cが入っているだけだろうと予想
さっさと普通にGCC4 & 64bit対応になれよ。
MinGW-w64 - for 32 and 64 bit Windows
本家は、停滞してるからね
そう,だから最近はTDM's branch使う人が増えてるわけで...
>>629 単にビルドされたgccのファイルに stripをかけてないだけだったりして。
ちなみに cc1.exe strip前 約40M strip後 約8M
TDM/MinGWは便利。 いちいちビルドする気力がでない俺には最適。
すんまそん。libgmp-3.dllとlibmpfr.dllどうやったら手に入りますかね。
641 :
デフォルトの名無しさん :2009/10/23(金) 00:45:53
linux&gcc-4.2.4で下のコードをコンパイル後nmでみると "W"(大文字:デフォルト実装付きweak)となるけど、 cygwin&gcc-4.3.2だと"w"(小文字:デフォルト実装無し weak)になる。4.2->4.3で仕様が変わった? それともPEフォーマットのせいですか? -------------------- __attribute__((weak)) void func(void) {}
If you do have a choice of surgeon or hospital, ask the surgeon the following questions: What are your qualifications? ,
On some systems, uppercase indicates that a default value has been specified.
644 :
デフォルトの名無しさん :2009/11/02(月) 03:00:41
MinGW g++ 3.4でビルドして作成したライブラリを MinGW g++ 4.4.0でビルドしたソースとリンクして使用できますか?
>>644 丁度Qtでそれに引っ掛かって,某フォーラムでバイナリの互換性がないことを
教えてもらったばかり。
但し,俺のところではTDM's MinGW gcc(g++) 4.4.1で,本家MinGW g++ 3.4.5で
ビルドしたライブラリが使えている(完全に大丈夫かどうかは不明)。
本家のg++4.4.0は,本家g++ 3.4.5でビルドしたライブラリが使えない。
646 :
デフォルトの名無しさん :2009/11/02(月) 15:43:12
>>645 情報ありがとうございます。
やっぱり使えないんですね。
MinGWでビルドしたdllと、それをダイナミックリンクしているexeの組み合わせが Windows7で動作しない(DLLを読み込めていない?ちなみにXP/VistaではOK)らしいのですが、 Win7との相性についてどこかに情報ありますでしょうか? 自分で試せるのはXPとVistaだけなので状況がさっぱり...
648 :
デフォルトの名無しさん :2009/11/03(火) 21:10:43
He_251110.bz2
export PATH=$PATH:/mingw/bin:/mingw32/bin:/usr/local/bin:$HOME/local/bin export GCC_VER="4.4.0" export LIBRARY_PATH=/mingw/lib:/mingw32/lib:/mingw/lib/gcc/mingw32/${GCC_VER}:/usr/local/lib:$HOME/local/lib export LD_LIBRARY_PATH=$LIBRARY_PATH export LD_RUN_PATH=$LIBRARY_PATH export INCLUDE_PATH=/mingw/include:/mingw32/include:/mingw/lib/gcc/mingw32/${GCC_VER}/include:/usr/local/include:$HOME/local/include export C_INCLUDE_PATH=$INCLUDE_PATH export CPLUS_INCLUDE_PATH=$INCLUDE_PATH コンパイルに必要な環境変数を.bashrcにかいたのだが あと何か定義しておいたらいい環境変数はある?
651 :
デフォルトの名無しさん :2009/11/03(火) 21:55:29
INCLUDE_PATHにlibのpathって入れるんだっけ
>>651 gcc3系統とgcc4系統ではディレクトリ構成が変わっていて,gcc4系統の場合はlibの奥にもヘッダファイルが
あるので,入れる必要があります。
MinGW使うなら、PATH以外の環境変数は設定いらなくね?
友達がプログラミング勉強したいっていってるんだけどやっぱ 進める環境としてはdev c++ とmingwがいいかな
VC2008EEじゃねーのか?
>>654 単にプログラミングの勉強ならば、
WindowsでVisualBasicが面倒なくて鉄板でしょ。
Unixの世界は、環境構築とツールの使用法の習得だけで
挫折する人がいるくらいのカオスな世界だから、
できれば知らない方が幸せよ。
>>656 > 単にプログラミングの勉強
変ったジャンルですね。
658 :
654 :2009/11/07(土) 04:16:13
>>656 僕的にはdev c++のほうがインストールが早いし、設定、認証が要らないから
こっちのほうが簡単だと思うんですけどね。やっぱVCとかVBですかね
Dev-C++はTDM-MinGWと組み合わせて俺もインストールしてあるけど 何と言ってもメニューが全部英語なのと、gccそのものがオプションが複雑で 決して初心者向けではないという事情を考えてVCを推している でも自分でその壁を乗り越えられる人であればgccの方が標準準拠度は 高い
お勉強ならLL言語でいいでしょ。 CUIベースでC, C++なんてやってもイベント丼の概念が理解できなくなる。
つまり Tcl/Tk やっとけということだな
>>659 日本語化されたのが、確か2つくらいあったはず。sけいし氏のヤツは割りと有名
かと思ってたんだがそうでもないのか。
一時VC2003と交互で使ってたけど、x64環境に移行してからはVC2008しかt
これ以上はスレチだな。
663 :
デフォルトの名無しさん :2009/11/10(火) 00:33:10
Dev-c++ と一緒に入ってくる gcc3.4.2 を TDM-MinGW gcc4.4.1 に入れ替えたのですが、 gcc3.4.2 ・iostreamをincludeするだけで、EXIT_SUCCESSマクロもatof()関数も使用できた ・iostreamをincludeするだけで、clock()関数が使用できた gcc4.4.1 ・cstdlibをincludeしないと、EXIT_SUCCESSマクロもatof()も使用できない ・ctimeをincludeしないと、clock()関数が使用できない という挙動になります。 どっちが正しいんですか?
>>663 4.4.1 の方がより規格に沿っていると言える。
MinGWで日本語を表示するにはどうすればいいんですかー?(>_<)
>>665 -finput-charset=cp932 -fexec-charset=cp932
をコンパイル時に付ける
するとEUCに変換してからコンパイルしてくれるのでダメ文字の問題は起きない
UTF-8
>>666 それ、本家MinGWのgcc4系だと効かない。cc1.exe、cc1plus.exeにやlibiconvがリンクされてないんだそうだ。
gcc3.4.5のcc1とcc1plusで上書きすればOKという情報もあるけど、俺のところじゃダメだった。
TDM's MinGW gcc4.4.1なら大丈夫。
>>667 もちろんそれでもOK。ただ、これまでに書きためた大量のSHIFT_JISのソースを使ったり、
3rd Partyのヘッダーファイル(例えば何等かのIOボードにボードに付いてくるライブラリの
ヘッダーファイル)を使ったり、他のコンパイラと共用するソースファイルを使ったり
する場合にはそうも行かない場合もある。
665ですが、IDEの起動オプションをUTF-8にしたら表示されました。 お騒がせしました。
>>668 Windowsのシステムロケールを日本語から英語に変更するといい
>>668 既にバイナリの gcc 4 がある状況なら
gcc 4 をビルドするのはたやすい。
libiconv 有効にしてビルドしれ
672 :
668 :2009/11/22(日) 00:12:22
>>670 レスサンクスなんだが...
> Windowsのシステムロケールを日本語から英語に変更するといい
これは
>>668 に書いたうちの、どのことについて言ってるの?
>>671 > 既にバイナリの gcc 4 がある状況なら
> gcc 4 をビルドするのはたやすい。
> libiconv 有効にしてビルドしれ
あぁそれでいいのか。アリガト。
ただ最近ビルドしてばかりしていてチト疲れた。
本家MinGWの最新バイナリインストーラー(5.1.6)のgccは4.4.0でなかったり、
libiconvがリンクされていない抜けがあったり、更新が遅かったりで、
TDM版の方が信頼できると感じてる。
TDM版の最初の4.4.1でCPU利用率が100%近くになってしまう問題が発覚した
時もHPの上の方に「Warning!」としてちゃんと説明が書いてあったし、修正の
対応も比較的早かったしね。
それと試してないんだけど、
>>556 の問題も気になる(TDM版固有の問題なのか、
gccのバージョンの問題なのか) 。
とりあえずTDM版4.4.1で問題ないので、俺は当面これで行こうと思う。
>>672 インストーラが 4.4.0 を入れないのは怠慢ではなくて、そういう選択をしたのだと思う。
まだ実績が不充分ってこともあるし、互換性の問題もある。
エンドユーザーにはなるべく枯れたバージョンを提供する方がいいという考え方はあり得る。
libiconv のリンクも、世界全体から見れば案外少ない状況でしか必要としないし、
そもそもソースコードにマルチバイト文字列をハードコーディングするのは悪いスタイルだよ。
よがりごえ
>>673 本家擁護も結構だが、
> インストーラが 4.4.0 を入れないのは怠慢ではなくて、そういう選択をしたのだと思う。
> まだ実績が不充分ってこともあるし、互換性の問題もある。
そんなに4.4.0に不安があるのなら、gccだけ独立して正式リリースにしなければいいのに。
そもそも本家はgcc3系とgcc4系でバイナリの互換性がなくなってしまった。
ディレクトリ構成も大きく変更してしまった。
これって良いことなのか?
> エンドユーザーにはなるべく枯れたバージョンを提供する方がいいという考え方はあり得る。
エンドユーザーが自分で選択できるようにすればよいだけの話し。
> libiconv のリンクも、世界全体から見れば案外少ない状況でしか必要としないし、
そう。そういう少数派への配慮が足りない所が問題。
> そもそもソースコードにマルチバイト文字列をハードコーディングするのは悪いスタイルだよ。
余計なお世話。そんなのは状況次第。
日本人の工場オペレーターしか使わないことがわかっているソフトだったら。
ハードコーディングしてしまった方が、短い工数で作れる。
多国語対応する必要があるソフトなら、リソースDLL使うとか、独自のライブラリで言語設定に
あわせてファイルから文字列を読込むとかしてる。
>>675 > そんなに4.4.0に不安があるのなら、gccだけ独立して正式リリースにしなければいいのに。
> エンドユーザーが自分で選択できるようにすればよいだけの話し。
大半のユーザーはとりあえずバージョンナンバーが大きい方を選択してしまうよ。
エンドユーザーってのはそんなもんだろうが。
> そもそも本家はgcc3系とgcc4系でバイナリの互換性がなくなってしまった。
> ディレクトリ構成も大きく変更してしまった。
バイナリ互換性が維持されればそれに越したことはないんだけど、
これは根本的な設計から大幅に変わってしまったので、仕方ないとしか…
> そう。そういう少数派への配慮が足りない所が問題。
> 余計なお世話。そんなのは状況次第。
配慮したらその分だけファイルサイズも増える。
少数派に配慮したら多数派に多少なりとも不便を強いるじゃないか。
ファイルサイズ程度なら些細な問題だけど、依存ライブラリが増えると管理が面倒なんじゃね?
これは開発リソースの割り振りの問題だろう。
それに意見する方が余計なお世話ってもんだろ。
開発状況は libiconv をリンクしたくない状況だったんだろ。
677 :
デフォルトの名無しさん :2009/11/22(日) 15:55:37
>>676 > 大半のユーザーはとりあえずバージョンナンバーが大きい方を選択してしまうよ。
> エンドユーザーってのはそんなもんだろうが。
何が言いたいのかわからん、俺には
>>673 に書いてあることと矛盾してるようにしか
受け取れない。悪いがちゃんと説明してくれないか?
> バイナリ互換性が維持されればそれに越したことはないんだけど、
> これは根本的な設計から大幅に変わってしまったので、仕方ないとしか…
TDM版gcc4.4.1は本家のgcc3.4.5とバイナリレベルの互換性を保ってるよ。
> これは開発リソースの割り振りの問題だろう。
> それに意見する方が余計なお世話ってもんだろ。
> 開発状況は libiconv をリンクしたくない状況だったんだろ。
ファイルサイズの話はかなり無理矢理感があるなあぁ。
で。本家のgcc4.4.0の説明書き(gcc-4.4.0-mingw32-notes.txt)には、必要ファイルだけ
分割してダウンロードする場合、
> libiconv Runtime [REQUIRED]
> libiconv-1.13-mingw32-dll-2.tar.gz
と書いてあるんだが(つまり必須と言うこと)。リンクを怠ったか、ドキュメントの修正を
怠ったかのどっちかだとしか思えない。どっちみち瑕疵であることに変わりはない。
で、TDM氏のHPには、
> TDM-GCC is not formally affiliated with or endorsed by the MinGW project
> (although several MinGW team members make use of it)
なんて書いてある。それなら性格がきっちりしていそうなTDM氏に本家のチームに
加わってもらえば、もっと良くなると思うんだが...
>>677 > 何が言いたいのかわからん、俺には
>>673 に書いてあることと矛盾してるようにしか
> 受け取れない。悪いがちゃんと説明してくれないか?
問題点を認識せずにとりあえず最新版を入れてしまうユーザーもいるから
インストーラは 4 を選ばせないようにしたんじゃね? と言いたかった。
> TDM版 gcc4.4.1 は本家のgcc3.4.5とバイナリレベルの互換性を保ってるよ。
んなわけねーだろ。 何が出来ることをもってバイナリ互換性って呼んでるの?
> ファイルサイズの話はかなり無理矢理感があるなあぁ。
そりゃそーだ。 だから些細なことって書いてるだろ。
結論は開発リソースの割り振りだ。
どっかには問題が残ることもあるだろうさ。
リソースは有限だし、どの問題をどこまで解決するか、
時には手抜きするのもひとつの選択だということだ。
TDM 版だって致命的な問題があったものを警告を書くだけで出したわけだろう?
本家じゃやっちゃいけないことだけど、 TDM 版はそれでも出すという選択をしたわけだ。
一応誤解が無いようにいっとくけど、俺は本家を擁護したいわけじゃないよ。
どこを重要視するかが違うだけのことであって、どっちが良いとか言えるものじゃないというのが俺の主張。
もちろん、本家がよりよくなってくれるのが最も望ましい。
>>678 > 問題点を認識せずにとりあえず最新版を入れてしまうユーザーもいるから
> インストーラは 4 を選ばせないようにしたんじゃね? と言いたかった。
了解。ただ、インストーラーでgcc3.4.5をインストールした後でgcc4を入れようと思うと簡単じゃない
(ディレクトリ構成が変わっているから戸惑う)。そういう点で問題だと俺は言いたい。
> んなわけねーだろ。 何が出来ることをもってバイナリ互換性って呼んでるの?
GUIツールキットQt 4.5のMinGW用のバイナリインストーラーでインストールされるライブラリは本家の
gcc3.4.5でビルドされたものだが、TDM gcc4.4.1でビルドしたアプリからちゃんと使えた。
ところがQt 4.6のbeta-1には、本家のgcc3.4.5でビルドされたライブラリの他に、本家のgcc4.4.0(Qtライブラリ
ではなくてコンパイラそのもの)もバンドルされてきた。ところがこの4.4.0でアプリをビルドすると、エラーが
出てしまう(3.4.5でビルドされたライブラリと互換性がない)。
Qt 4.6 RCになって、ライブラリも本家のgcc4.4.0でビルドされたものに変わった。そうしたら今度はアプリを
TDM gcc4.4.1でビルドするとエラーが出る。仕方なくQt 4.6 RCのソースからTDM gcc4.4.1でQtをビルドしたら
うまく行った。これでわかるだろ?
> TDM 版だって致命的な問題があったものを警告を書くだけで出したわけだろう?
> 本家じゃやっちゃいけないことだけど、 TDM 版はそれでも出すという選択をしたわけだ。
出した後から発覚したんで、緊急で警告を書いたんだよ。だから「修正するまで、一つ前の4.3.3を使ってくれ」
って書いてあった。テストが足りなかったのは確かだが、やるべきことを迅速にやっている。
本家はlibiconvがリンクされていなくても、アナウンス一つしてないんじゃないか?3系と4系でバイナリ互換性
がないというアナウンスも何処かにある?
> もちろん、本家がよりよくなってくれるのが最も望ましい。
俺だって本家を貶すのが目的じゃない。ただ、もっとしっかりしてくれと言いたい。
現状だとTDM版の方が良い選択だと言わざるを得ない状況だ。
>>679 > 了解。ただ、インストーラーで gcc3.4.5 をインストールした後で gcc4 を入れようと思うと簡単じゃない
> (ディレクトリ構成が変わっているから戸惑う)。そういう点で問題だと俺は言いたい。
単に展開するだけだし、俺はディレクトリ構成が変わっていることに気づいてさえいなかったぜ!!
(後から気付いたけど。 これは俺がいいかげんなだけかもしれん。)
> GUIツールキットQt 4.5のMinGW用のバイナリインストーラーでインストールされるライブラリは本家の
> gcc3.4.5でビルドされたものだが、TDM gcc4.4.1でビルドしたアプリからちゃんと使えた。
TDM がどうとかいう以前に gcc の変更だ。 実験してみた結果がどうあれ偶然。
何が起こってもおかしくない。 鼻から悪魔。
> ところがQt 4.6のbeta-1には、本家のgcc3.4.5でビルドされたライブラリの他に、本家のgcc4.4.0(Qtライブラリ
> ではなくてコンパイラそのもの)もバンドルされてきた。ところがこの4.4.0でアプリをビルドすると、エラーが
> 出てしまう(3.4.5でビルドされたライブラリと互換性がない)。
エラーの内容が気になる。
エラーが単なる undefined reference の場合、環境構成上のしょーもないことである場合がある。
> テストが足りなかったのは確かだが、やるべきことを迅速にやっている。
迅速だけどテストが足りなかったんだろ。 だからそれは単にスタンスの違いなんだって。
> 本家はlibiconvがリンクされていなくても、アナウンス一つしてないんじゃないか?
required の記述が間違っとるが、どれどれをリンクしたなんていちいち書くかよ。
> 3系と4系でバイナリ互換性がないというアナウンスも何処かにある?
これは常識だと思ってたから疑わなかったけど、一見さんにわかる形では無いかも。
GCC のサイトの方にも目立つようには書いてない。
きめえ話してんじゃねーよ オープンソースなんだから好きにやれや
>>681 まったくそのとおりだ。 だから好きに議論する。
便宜上「本家」なんていってるがそれほど絶対的なものではない。
それぞれのスタンスがあるのは当然。
と、言うわけで
>>679 が主張するように「TDM 版の方が良い選択」
とする主張を否定するわけじゃないし、その主張が正しいと言える状況はあるんだろう。
でも、そうじゃない状況もある。 それだけの話。
話長いw
>>680 > 単に展開するだけだし、俺はディレクトリ構成が変わっていることに気づいてさえいなかったぜ!!
> (後から気付いたけど。 これは俺がいいかげんなだけかもしれん。)
環境変数変えなきゃダメだろ?本当に動かしてみたんかね?
少なくともC_INCLUDE_PATHやCPLUS_INCLUDE_PATH、LIBRARY_PATHは変更する必要がある。もしかして単に
展開しただけで環境変数変えてないから、gcc4.4.0使ってるつもりで実は3..4.5のままだったりしてw
> TDM がどうとかいう以前に gcc の変更だ。 実験してみた結果がどうあれ偶然。
> 何が起こってもおかしくない。 鼻から悪魔。
(中略)
> > 3系と4系でバイナリ互換性がないというアナウンスも何処かにある?
>
> これは常識だと思ってたから疑わなかったけど、一見さんにわかる形では無いかも。
> GCC のサイトの方にも目立つようには書いてない。
そんないい加減な情報じゃなくて、しっかり「ここに書いてある」って示して欲しい。そうじゃないと、アンタに「偶然」
だの「鼻から悪魔」なんて書く資格はない。単に実験のレベルじゃないよ。暫く使ってるが、何の問題もない。
> > テストが足りなかったのは確かだが、やるべきことを迅速にやっている。
>
> 迅速だけどテストが足りなかったんだろ。 だからそれは単にスタンスの違いなんだって。
違う。本家はアナウンスすべきことをアナウンスしていない。例えば、MinGW5.1.6のgccは4.4.0じゃなくて3.4.5だって
ことはどこに書いてある?要するにいい加減すぎるんだよ。「スタンスの違い」ってのが「ユーザー重視」と「ユーザー
軽視」の違いってのなら納得できるが。
例えば、
ttp://www.mingw.org/wiki/GCCStatus は2009-04-20 以降更新されておらず、現状と合ってない。
SourceForgeのファイルツリーを見ても、「Automated MinGW Installer」のところにリリースノートすら置いてない。
MinGW、いったいいつになったら gcc4採用するんだよ・・・
goはbuildできますか?
出来ません。
>>685 TDM-MinGWはとうにgcc4.4.1なんだが・・・
690 :
684 :2009/11/23(月) 07:36:00
>>685 本家MinGWだってMinGW5.1.6に含まれていないだけで、gcc 4.4.0は単独で「current release」になってるよ。
TDM版については
>>688 の言うとおり。
長い話で悪かったが、そのことでずっと
>>680 とやりあってたんだ。
そろそろ長話を止めてくれ
cygwinをアンインストールしたいんだがどうしても削除できないフォルダとファイルがある(Windows7) usr\sbin\sendmailとvar\cron\tabs アクセス許可云々と出てフォルダが削除できない 所有者が長ったらしい変な名前だったのでアクセス権を自分にしてもできない コマンドプロンプトや強制削除ソフトとか使っても無理 (あと一つ同じようなフォルダがあったがなぜか削除できた) どなたか知恵をおかしくだ足
msysでcoreを吐かせるにはどうすればいい? ulimit -a でみてもunlimitedになってるんだが・・・
>>692 どこかのプロセスのカレントフォルダや
オープンしているファイルなどが、そこのフォルダにあると
消せないみたいだよ。
そこにアクセスしているプロセスを終了すればいいと思うけど、
たぶんわからないのだろうから、一回ログオフするか再起動すれば消えるはず。
今TDM版MinDW gcc4.4.1-2のテストを行っています 今までは日本語入出力の問題があってgcc3.4.2を使っていました あるプログラムを-O3でコンパイルしてみると両方とも10分程度で終わるのですが 3.4.2のほうが20%ほど早くなりました 途中のlogと結果を見るとどちらも-O0の時と同じように動いているように見えます 実際にはこれからプログラムを書き直して10倍100倍の計算をさせたいと思っているのですが 書き方がよくなればTDMの方が早くなるようなものなのでしょうか?
ぶっちゃけ状況による。 3 と 4 はかなり根本から変わってしまってて、 最適化フェイズの構成からして違う。 どちらが速くなるかは実測するべし。
>>696 レスありがとうございます
インストールがめんどくさいですが、
両方でコンパイルしてみて試して見ることにします
え?例えばc:/gcc4/とc:/gcc3/に解凍して 環境変数を使い分ければいいだけの話でないの
mingwのgcc4は for(i=0;i<10;i++){ for(j=0;j<10;j++){ int a = i; } } みたいなことをしたときに、2重ループ内のiが未初期化だったことがあったのでgcc3に落とした。
それはないだろう
>>699 そんなこと無いだろjk
おおかた中でiを新しく書いちゃったとかそんなレベルだろ?
702 :
697 :2009/11/26(木) 23:30:39
>>698 それが私は、MinGWよく知らないでgcc使っているもので。
最近は、cmd環境に行ってdoskey定義バッチ起動してディレクトリ移動するのが面倒くさくて
プログラムごとにこんなバッチ作ってウィンドウ環境で作業してます
g++ -o backend.exe backend.cpp 2>errout.txt
type errout.txt
pause
たまにgrepとdiffとか使うときはウィンドウ環境のものを使えばいいし、makeもこんな感じでやっています
したがって環境変数変えるのも結構面倒です
この場合は別のバッチ作っておいて環境変数変えるバッチをcallすればいい気もしますが
ぱっと見た感じLIBもINCLUDEも無いのでpathを変えるだけでいいのでしょうか?
msysがMinGWのディレクトリ聞いてくるのもmsys環境でマウントするディレクトリを変えてるだけならいいのですが
あまり高度なことはできないので
インストーラで別ディレクトリに2つインストールしておいてpathを変えるだけでいいのでしょうか?
頻繁にコンパイラ変えないならインストールし直した方が早い気もしますが
localeまわりは絶対パスだけど、他は相対パスで動いてたような?
705 :
699 :2009/11/27(金) 00:29:56
gcc3やPGIやvcでちゃんと動いていたプログラムだったんだけど。
706 :
デフォルトの名無しさん :2009/11/27(金) 01:17:24
質問 Eclipse 3.4.2 / Pleiades All in One の C/C++(MinGW) を使ってるんだけど ワークスペースに、「実行可能プロジェクト」(A.exe)と「共有ライブラリプロジェクト」(B.dll)を作って A.exeのライブラリにB.dllをリンクして使いのだけど、実行もデバッグも出来ない。 だけど、A.exeと同じフォルダ(たとえばDebug)にB.dllをコピーすると、実行できたりデバッグ出来る。 VisualStudioみたいに、参照設定しただけじゃダメで、コピーまでする必要があるの? 面倒なんだけど、みなさんDLL作って、EXEから呼び出す時ってどうしてんの?
__,,/ _, ----`ヽ :. :. / _ ___ 、\ / / i \ \\ :. :. ,'./ i ヽ:. ヽ:.:.. ヽ.ヽ ,'/ / .ハ ヽ ヽ:.:.:.:. ヽ::.. ヽヽ :. :. |i .i i .i / ヽ ト 、 \、:.:.:. ',:.',:.:.lヽ} |i .i l :N_, -弋 \弌弋ナ:}:.:} :. |i∧ ', :{ ,ィjモト \ イjミトイイV :. な… .| :メヽ.', `ozZ} izN。ハ::{ なんなんだよもん? :. | :ヾ_! ゝ "゙゙ ' `゙ ハ.:', :. ここ、どこだよもん? | :.:_イ .:.ヽ. (二フ , イ :.:.:!:.ヽ なんであたし :. / rィイ | :.:.ヽ: >r/`<ノ .:.::.}ヽ、\:. 貼られたんだよもん? / ∧l;l ! :.:.:.://{二 ̄ .} ..:..::リ//ハ.:\ :. / .{. ',ヾ、ヽi .:.:.{ /(^` |.:.:.:.//: : :.}: . ヽ.:. / / ) ヽ ヾ、ヽ:.ハ ヤ{ ∧/.-‐'": : |:.:. i ', ./ .,イ .:..} : :\ヾレ'ハ ∧__ノノハヾ、 : : : l:.:.: .ハ ', { /| .:.:ハ : : :i Y {ヾ`Yヽニン'ノ}: : } : : : :/:.:.:/ }:.} V | .:.:/:.:|_,ィ' ̄ ヽ三{ `ー-ノ : イ : : :/:.:i.:{ リ ヽ:.:{、.:.V : : ヘ : : {: : :/:.::∧| ヽ! )人 : : :人 : : : / \! :. " ヽ : : : : :/イ{ :.ノ: : : :.\ :. :. \__///: :\______/: : : : : : : ヽ / //: : :|;|: : : : : : i: : : __: : : : ', :. / 、 {;{ |;| . : i/. : : : : : :| / `Y;{. . . .|;|. : : : /i: : : : : : : : :l
「共有ライブラリプロジェクト」(B.dll)をPATHに追加すれば
709 :
706 :2009/11/27(金) 02:22:35
Windowsの環境変数? 実行構成の環境変数に入れたときは、実行できるんだけどデバッグできなかったから Windowsの環境変数は試してない。 他にPATH追加するところあったっけ?
710 :
デフォルトの名無しさん :2009/11/27(金) 14:58:02
virtual void hoge( void ) = 0; とやると undefined reference to `vtable for ... とエラーが出ます。 調べたところ virtual void hoge( void ) {}; としたらOKでした。 純粋仮想関数って使えないのでしょうか?
派生クラスでちゃんと仮想関数のオーバーロードやってないだろ。
>>711 いろいろやってるうちにコンパイルが通ってしまいまして
原因が分からずじまいでした。
スレ汚し失礼しました。
magic death car
717 :
716 :2009/11/27(金) 20:36:03
しかしまあ2chで「てめーぶっ殺す」みたいなことを書いても 逮捕されないんだから(*いや、具体的に書いたらだめだろうけど) そのくらいでは大丈夫だろうけどさ。
こうなごの件は?
>>718 こうなごは・・・ありゃダメじゃない?
まあ検察がどう考えるか次第だろうし
最終的にはその辺の判断は裁判してみないと分からないし。
「殺す」はダメで「死ね」はOKですか?
>>721 まあ微妙なラインだよな。
「殺す」は明らかに殺人予告であり、厳密に考えたらダメだろう。
一方「死んでくれればいいのに」はOKだろう。だって本人の希望とか考えを
述べただけであり、それだけでは処罰の対象にはならないだろうな。
そして「死ね」は微妙なラインだと思う。
別に殺人未遂で逮捕されたわけじゃないだろう 小女子はともかく学校名書くから、関係者に迷惑がかかる 99%ネタだと分かってても何もしないと責任問題になるし まあ、当時は似たような事件が多発してたから、見せしめの意味もあるだろうね
>>723 殺人予告は殺人未遂とは全然意味が違うし
俺だって別に殺人未遂で逮捕されたとは申し上げていないよ。
残り3行は激しく同意。
gccの話をしろよばかども
gccの話をしろよばかども
まったくスレ違いもはなはだしいな カスは死ねばいいのに
∧_∧ / ̄ ̄ ̄ ̄ ̄ ( ‘∀‘)< オマエガナー ( ) \_____ | | | (__)_)
MinGWというのをインストールしたのですが日本語が表示されないみたいです。 不便です。
>>730 意味がわかりません。
何をすると何がどうなって
どう困るんですか?
本当はどうなって欲しかったんですか?
>>730 ソースコードをUTF-8で書けば大丈夫なはずです。
SJISで書きたければ、コンパイラオプションに --input-charset=cp932 --exec-charset=cp932 を
つければ大丈夫ですが、これは本家MinGWだとgcc4系では機能しません。
TDM's MinGW 4.4.1なら大丈夫です。
>>733 やさしい
>>732 がエスパーだったおかげで
無能なお前のレスを解釈してくれて良かったな。
通報?むしろしてくれ。
なんの通報なんよ プライドを傷つけられたからか? こちらはただ質問の意味が日本語になってなくて分からないから 質問しただけなんだけど
論理がわからない質問をム板で見るとかなりうんざりはする。 他ならともかくム板で!!
そうだそうだあ!
過疎スレが盛り上がってきたね
その調子で死ねばいいのにね
( ^ω^)おっおっおー♪
他人に自分の意図を伝えられない奴が、 コンピュータに自分の意図を伝えるプログラミングができるわけがない。
( ゚∀゚)o彡° 過疎!過疎!
ラムダ式が使いたいのですが、いつから使えるようになりますか?
GCC4.5から
馬鹿は黙ってろよな・・・マジで
747 :
731 :2009/12/03(木) 20:58:48
>>745 お前、まさかまだ俺のレスを引きずっているんじゃないよなw
そんなに傷ついたか?
ヘッダファイルとかライブラリが数フォルダに散らばって気持ち悪い
>>748 実装は関係なくないか?
まさか直接いじりたい人?
( ^ω^)おっおっおー♪
ツリー構造になってるディレクトリのソースをコンパイルして 一つのディレクトリにobjを入れたいんだが、ぜんぜんできない
vpath
Makefileの書き方を工夫するとか?
>>752 だけど。
vpathは昨日はなぜか利かなかったのに今日は利きました!
結局objや最終ターゲット全てmake実行したところに作られて
理想には程遠いけどもうあきらめますたorZ。
mAKefiLE こうですか?わかりません!
aho aho.cpp aho.h boke boke.cpp boke.h obj Makefile aho.o: ../aho/aho.cpp ../aho/aho.h boke.o: ../boke/boke.cpp ../boke/boke.h
$objd=./obj $(objd)/%.o: %.cpp $(CC) -c &< -o $@ で出来る
$ac_cv_mingw32って何ですか?
>760 名前だけ見て判断すれば Autoconf で mingw32 について判定した結果のキャッシュ値だな。
762 :
デフォルトの名無しさん :2009/12/17(木) 09:56:52
MinGW+gccを使うのに適当な統合環境ってありますか? EclipseもNetbeansもうまくデバッグできないので 私の設定が不十分な可能性もあるので、調査中なのですが、 情報があれば教えて下さい。
>>762 Qt Creator
日本語デバッグはできないけど。
Code::Blocksとかどうよ
767 :
デフォルトの名無しさん :2009/12/17(木) 13:55:04
>>764-766 ありがとうございます。
Code::Blocksは候補にはいってましたが、未調査でした。
早速調査してみます。
768 :
デフォルトの名無しさん :2009/12/21(月) 18:44:54
よかったね
1.7.1リリース!
770 :
デフォルトの名無しさん :2009/12/23(水) 23:33:45
771 :
770 :2009/12/23(水) 23:34:55
NEW Cygwin 1.7.1 just released! これか。
TDM MinGWは別に新しいの出てないしな
やっと1.7系列が標準になったのか? これからまともに利用者が増えて ノウハウもたまって安定するだろうか。
さんざんテストリリース期間置いてのリリースなのに、まだ安定してないの?
775 :
デフォルトの名無しさん :2009/12/24(木) 15:43:42
質問です。.dll.a から .lib を作る方法はありますか?
しらない
何でそんなことしたいの? まさかVC++でgccで作ったdllを利用しようなんてことじゃ...
778 :
775 :2009/12/24(木) 17:34:07
くっはー・・・
c++の奴は無理でしょ
昔Borlandがそんなツール提供してたような。
782 :
デフォルトの名無しさん :2009/12/24(木) 19:22:06
LoadLibraryとか呼び出せば普通に相互利用できるじゃん。
一番いいTex環境ってなんですか?
ffmpegをCygwin環境でビルドしています。 ビルド自体は問題なく終了したのですが、ffmpeg.exeを Windowsのコマンドプロンプトで実行する際、日本語ファイルを引数として渡すと 日本語が化けてしまいます。 MSYS環境でビルドした際は特に問題がなかったので、Cygwinの環境設定で 何か行ってやる必要があるかと思うのですが、 どのような設定を行えばよいでしょうか。
786 :
デフォルトの名無しさん :2010/01/02(土) 15:11:38
MinGW-5.1.6.exeを実行したら iniやらgzが勝手にDLされたがどうするのこれ
787 :
デフォルトの名無しさん :2010/01/02(土) 19:27:11
MinGWてなに?
cygwinじゃでかすぎるぞボケって人のためのGNUツール郡 ・・・なのかね。dllを共有しない分でかくなるような気がするけど
789 :
デフォルトの名無しさん :2010/01/04(月) 21:19:35
MinGW について頻繁に尋ねられる質問と回答(MinGW FAQ)
ttp://www.sixnine.net/cygwin/translation/mingw-doc/mingwfaq.html ここに
> MinGW とは何ですか?
> (中略)
> MinGW は Windows オペレーティングシステムと共に配布されている
> Microsoft のランタイムライブラリを利用します。
> Windows に対して移植された他の GCC とは異なり、
> このランタイムライブラリは
> GNU 一般公有使用許諾契約書の元では配布されていません。
> 従って、あなたのプログラムと共にあなたのソースコードも配布する必要はありません。
> 勿論、あなたのプログラムが GPL のライブラリを利用していない限りですが…
ってのがあるんですが、これは、
MinGW上で
PublicDomainのライブラリX
標準Cライブラリ
標準C++ライブラリ
を使って全部staticリンクしてクローズドソースな実行ファイル.exeを一般に配布する
ということは可能だと解釈してよろしいですか?
標準ライブラリのライセンスに依ると思うけど。 実際にどうなのかというと、知らない。
>>789 標準Cライブラリのstaticリンクは無理な筈だな
mingwはMSのCランタイムDLLとリンクするから
792 :
789 :2010/01/04(月) 23:28:45
>>790-789 > mingwはMSのCランタイムDLLとリンクするから
これって、
> MinGW は Windows オペレーティングシステムと共に配布されている
> Microsoft のランタイムライブラリを利用します。
> Windows に対して移植された他の GCC とは異なり、
> このランタイムライブラリは
> GNU 一般公有使用許諾契約書の元では配布されていません。
> 従って、あなたのプログラムと共にあなたのソースコードも配布する必要はありません。
ここにある記載とは別の事柄でしょうか??
>>792 いや同じだよ
ただ、「Windowsとともに配布されているMicrosoftのランタイムライブラリ」
はDLLであって、staticリンクライブラリではないので
staticリンクはできないよ
795 :
789 :2010/01/05(火) 06:36:04
>>793-794 ありがとうございます。
確かに
「ライセンスうんぬんの前にそもそもstaticリンクが無理だよ」
ということですね。
標準C++ライブラリに関しましてはいかがでしょうか?
>>795 C++の場合は、MicrosoftのC++ランタイムではなくGNUの実装が
staticに埋め込まれるようだね
C++の場合はname manglingなどABIまわりの仕様がMSVCとGCCで
互換性が無いから当たり前だが
つまり、ライセンスとしてはGNU C++標準ライブラリをstaticリンクした
場合のケースに従うことになる
ああ念のため C++の場合も、MSの「Cの」ランタイムDLLはダイナミックリンクされるよ 「C++専用の」ライブラリに関して、MS実装が使われないということね
>>796-797 ありがとうございます。
> ライセンスとしてはGNU C++標準ライブラリを
> staticリンクした場合のケース
は、いったいどんなことになるのですか?
>>798 GCC Runtime Library ExceptionはGNU C++標準ライブラリにも適用されていますか?
TDMビルドのMinGWを使っているのですが、
COPYING
COPYING.LIB
COPYING.lib-gcc-tdm.txt
COPYING-gcc-tdm.txt
の中からいったいどれが標準C++ライブラリのライセンスなのか
分からないのです。
いいかげんうぜえ・・・
--dynamicbase付けてもヘッダにビットが立つだけで再配置セクション無いな
805 :
デフォルトの名無しさん :2010/01/07(木) 10:13:36
Cでプログラミングしているのだけど、簡単にCPU使用率を取得する方法はありませんか?
もう一度聞きますが・・・ Cでプログラミングしているのだけど、簡単にCPU使用率を取得する方法はありませんか?
スレ違いなのでは?
移植性のある方法では無い。
CPU使用率を取得して、何するんだろ
cygwin1.dll のバージョンが違うんだろ。 その原因となると再現条件がわからんから なんとも言えんけど、 bison をソースからビルドするのが最もてっとりばやい方法だと思う。
ありがとうございます。 ソースからビルドのやり方がわからないけど、 普通にcygwinを起動しても同じエラーメッセージ出すようになったので、 cygwin1.dllを入れなおす方向でやってみます。 ちょっと出かけるので分からないことがあったら聞きに来ます。
815 :
806 :2010/01/10(日) 23:05:42
え、俺スルーされたの? なんだかなぁ・・
最近1.7になったからその関係じゃない? 入れなおすなら丸ごと1.7にした方が良い希ガス
ややこしいから一回消してからcygwinを最初から入れなおすことにしたんだけど、 アンインストールが出来ないから手動で削除しようとしたらアクセスできません、 とかで削除すらできなかった。 火曜日に間に合えばいいのでとりあえずノートPCに入ってるcygwin触ってみたら bisonのコマンドは使えた・・・のですが、指定ディレクトリが何処か分かりません。 lsって入れたら一応中に入ってるものは分かったんですが、その場所が分かりませんでした。 どうやって確認すればいいんでしょうか?
which コマンド
boostをmingwでコンパイルするときにbjam --toolset=gcc --with-regex --with-filesystem link=static runtime-link=static release stage --prefix=/usr/local install としたら拡張子が.aじゃなくて.libになるんですがこれは仕様なんでしょうか。 それとも何か間違っていますか?拡張子を.aに直したら動いているようですが。
tools/build/v2/tools/gcc.jam の中に ># On windows (mingw): ># libxxx.lib static library ># xxx.dll DLL ># xxx.lib import library と書いてあるから仕様だと思われ。
mignwはlibもリンク出来るんだよ 確か、それで出来たlibはVC++からも利用できるはず
ハードウェアメーカーが提供するSDKが、MSVC用のヘッダやライブラリなんだけど、 GCCでライブラリにリンクする方法ありますか? wrapper書くしかないのかな。
C++だったら、そうだね。
>>820 >>821 ありがとうございます。
libもリンクできるとのことですがaにしないとMKVToolnixのconfigureが通りません。
これはconfigureがlibを想定していないとかそういうことでしょうか。
そういうこと
crypt.exeがBackDoorとかでウイルスセキュリティに削除されるんだが どうすれば・・・
828 :
826 :2010/01/15(金) 00:12:06
exe ファイルを書換えるプログラムを問答無用でマルウェアとして検出するソフトがあったりする。 実行ファイル形式のパッチはねこそぎマルウェア扱いになったり。 特定の API を使ってるものや、コードセクションを書換える種類のものもかなりの確率で マルウェア扱いになるよ。
書き換えるのとは違う気が
833 :
826 :2010/01/15(金) 23:22:37
ありがとう やってみます! あのソースネクストのウイルスセキュリティZEROです
834 :
デフォルトの名無しさん :2010/01/16(土) 08:42:02
教えた甲斐があった。さすが俺じゃんw
836 :
デフォルトの名無しさん :2010/01/16(土) 21:17:03
mingw使い始めたんだけどマルチスレッドのオプションって-lpthreadじゃないの? cannnot find -lpthreadとエラーが出るんだが
837 :
デフォルトの名無しさん :2010/01/16(土) 21:25:35
それともう一つ、日本語が文字化けするのだが
>>836 それは pthread ライブラリをリンクするオプション。
pthread は主要な環境に対応したマルチスレッドライブラリだが、windows 自身は pthread 互換層をもっていない。
必要ならこれ ↓ を入れればいい。
http://sourceware.org/pthreads-win32/ windows のマルチスレッド API を覆って pthread 互換にしているので、
Windows のみで使うことを前提にするなら直接 Windows API を呼んだほうが融通が効いてよいと思う。
マルチスレッドは色々と複雑な理屈があるので、
他のライブラリと組み合わせるときにはそれがスレッドセーフかどうかとかちゃんと意識すること。
もちろん自分が書く部分もかなり意識しないと結構躓く。
どうしてmingwにはd3dx9がないの?
842 :
デフォルトの名無しさん :2010/01/17(日) 18:35:33
Mesa3Dがコンパイルできない・・・。 X11って何? 7.0.xまではできたのに
質問しようかと思ったのに事故解決したorz 消すのも嫌なので書き残してみるテスト ちなみに、リンカにも同じオプション渡してclean、リビルドで通った Dev C++4.9.9.2(MinGW runtime 3.14)をwin2kで使ってるんだけど、 配列の上限ってある? これから変数一つでも増やすと落ちるんだ longがcharのちょうど1/4な辺り、メモリ絡みかと思うんだけど、 -Wl,--stack,10485760 (10MB)をCとC++コンパイラにオプション渡してスタック領域広げても落ちるからどうしようかと #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { // unsigned char buf[2080448]; long lbuf[520112]; // short i; system("PAUSE"); return EXIT_SUCCESS; }
>>846 > ちなみに、リンカにも同じオプション渡してclean、リビルドで通った
そりゃー、-Wl,xxx ってリンカに渡すオプションだもの。リンカを起動
しないコンパイルフェイズのみのときに指定しても意味ない。
>>849 デバッグ情報が最初から要らないならコンパイル時に -s オプション付けれ
cadforte落ちてる? ウチから繋がらないだけかね。
mingw.orgが…
TDMをここでの標準にしちまおうぜ
>>853 俺もTDM使っているんだけど、最新のgccがバンドルされないのはどうしてですかいな?
待ち遠しいんだけど。
別に最新の機能を使う訳じゃ無いにせよ、さ。
TDMの方が本家MinGWよりgccのバージョンは上だよ。 TDMは4.4.1だけど本家は4.4.0。ちなみに本家MinGWの5.1.6というのはgccのバージョンでは ないよ。 Linuxだってgccのバージョンはディストリビューションによってまちまち。 さほど気にすることでもないと思うが。
なるほど。 gccの最新版は4.4.3だが、 本家MinGWで採用されているgccは4.4.0で、 TDMで採用されているgccは4.4.1なのね。
cygwinのgcc4は4.3
あるバージョンがどのアーキテクチャでも同じように安定して使えるかっていうとそんなこともなくて、 それぞれの環境ごとにある程度使い込んで検証しないと安心して使えない。 それぞれの環境で公式に追従しているバージョンを使うのが最も安全。 違うバージョンの gcc でビルドしたライブラリが混在すると非常に稀ではあるが変なことになったりもするので、 gcc だけ安定していてもそれだけじゃダメなこともある。
ぶっちゃけ MinGW は安定するのにかなり時間がかかるな…
しかしwww.mingw.orgはどうしたんだろ。 例のちょっとエラの張った感じのオネエチャンの写真が出てくるな。 SourceForgeの方は生きてて、MSYSが2010-01-28に更新されてるんだが...
ドメインの更新を忘れたんじゃね mingw.orgをwhoisで見ると Created On:30-Jan-2000 01:56:24 UTC Last Updated On:31-Jan-2010 01:22:57 UTC てなってるから2000年1月30日に取得してから今まで更新してたけど 今回更新を忘れたから期限の翌日に潰されたって感じで
戻ったね
Mumit Khanは去年の2月に支払い情報をクリアして ドメイン管理をEarnie Boydに引き継いでいたらしい 更新の通知が来た時もEarnieに言ったんだけど音沙汰なしだったと んで費用を出してくれるなら協力はするけど…って言ってたけど 結局誰がどのように解決したのかは不明
費用っつったってドメインなんて年間1000円くらいじゃん その程度の費用も出せないの? もうそれならsourceforgeでいいじゃんって話だわな
いーじゃん すげーじゃん
ユーキ君のことはもう忘れてください
MigGWを使用しています GDB6.3.2をインストーラを使用してインストールしたのですが 7.0.1へのアップデートはどのように行えばいいのか教えてください
何がわからんのかわからん。 つっかえてるところはどこ?
自力でやるしかないでしょ、GDB7.0.1のインストールは
871 :
868 :2010/02/06(土) 13:08:09
>869-870 返信ありがとうございます そもそも7.0.1のバイナリをどうしたらいいのが分かりません 上書きもだめでしたし・・ C言語を勉強するためにMigGW+Eclipseで環境を作ってる最中で どうせ最新モジュールがあるならアップデートしようとしたものの 全くわからずにお聞きした次第です
>>871 だからその「だめでした」のはどういうことか書けっての。
どう駄目だったんだ? 勉強がどうとかどうでもいいよ。
まず必要なことが日本語で書けるようになれよ。
>>871 だめでした
それだけで分かると思うてか!
答えようとしたんですが、だめでした・・・
お聞きしようとしたんですが、だめでした・・・
◆だめでした…
つーかフォルダ構成見れば分かりそうなものだけどな MinGWをC:/windows/Program Files/System32/Eclipse/gcc/4.4.0/mingw/にインストールしたとして SourceForgeから落としてきたgdb-7.0.1-mingw32-mingw64-bin.src.mingw.eclipse.tar.gzを展開して生成されたbinフォルダとshareディレクトリを C:/windows/Program Files/System32/Eclipse/gcc/4.4.0/mingw/にカット&ペーストすれば まぁ十中ハック動くと思うけどな
どうでもいいんだが、system32 に eclipse 突っ込む って危険が危ないッ…再インストールみたいな事例が 起こり得そうだから c:\直下辺りに入れるほうがいいと思うんだ・・・
C:/windows/Program Files/System32
system ファイルはプログラムファイルじゃない、と思うの /usr/local/bin /usr/bin/ gcc/4.4.0/mingw/ のあとに仮想的な環境がぶら下がるし C:/windows/Program Files/System32/gcc/4.4.0/mingw/usr/bin 下の 云々を云々してとか、堪らんですorz c:/Users/ユーザー名/System32/gcc/4.4.0/mingw/ ならまだ納得できるけれども・・・
冗談に付き合ってくれてるのか真に受けてるのか分からんけど、後者だとしたらすまんかった mingw-5.1.6.exeでインストールしたなら大抵はc:/mingw/になると思うよ
基本的な質問で恐縮です。 日本語が扱えないのですが解決策はありますか?
「扱う」というのがどういう意味かによります。
例えば #include<stdio.h> main() { printf("こんにちは"); } をコンパイルすると コンパイルは出来るけど 画面に何も表示されないんです。 アルファベットだと大丈夫なんですけどね。
ソースコード中の日本語のエンコードは? 出力したいエンコードは?
cp932でスレ検索
UNICODEの1バイト目が'\0'だから 表示しないで終了してるのかw
はあ
ひぃ
>>888 ふぅ。何度も同じこと書いてるんだがw
本家MinGWだとlibiconvが抜けてるからそのコンパイルオプションは使えない。
TDM版MinGWを使えばOK。
もう一つの選択肢は,ソースコードをUTF-8で書くこと。
893 :
デフォルトの名無しさん :2010/02/17(水) 09:08:57
今までcygwin1.5を使ってたんだけど、
今日違うマシンに1.7.1をインストールしたら
>>885 と同じ症状になった。
日本語がprintfとかで出力できない。日本語が\0に置き換わったかのような挙動。
ソースはUTF-8だろうとSJISだろうと症状は変わらず。
>>893 Cygwin のやつなら
>>484 が効くだろ。
input をソースのエンコーディングに合わせて、 exec を LANG の設定に合わせれば
いけるはず。
日本語で不自由な思いをするのによく使う気になるなあ
cygwin じゃないけど MinGW + Qt だと日本語に不自由しなくなったし国際化も完璧になった
Qt かわいいよ
mintty 使ってutf8で書いてるからそういう問題は起きない。
いまどき sjis でソース書くなんて狂気の沙汰
別にコメントだけって場合はS-JISでもいいだろ。 全否定するなよ。 まあ今みたいに日本語出力する場合は・・・ 環境に合わせろとしか言えんが。
sjisとpc98の独占状態が日本をダメにしたらしい
ダメになってない。 変化についていけない人がいるだけでしょ
バカがよりみすぼらしくなっていき、 頭の良いやつはちゃんと対応できる。 すばらしいことじゃないか。
-finput-charsetって、2004年から使えるようになってるんだけどね
なんだあ、mingwの自動インストーラーはもうメンテされてないのかあ。ははは。 今はマニュアルインストが推奨かあ。別にそう手間じゃないもんなあ。 ははは。 3時間前の俺のバーカバーカ 復元ポイントとらなかった俺のバーカ 死のう
>>906 たががマニュアルインストールくらいで手間を感じるような
お前さんがMinGW使ってもろくな事にならない。
>>906 >>908 TDM版の方がいいよー
オフラインインストーラーだから過去Ver手軽に置いておけるし
-finput-charset=cp932 -fexec-charset=cp932そのまま使えるし
>>906 復元ポイントが必要なほどシステムに食い込んでないと思うが。
911 :
908 :2010/02/25(木) 12:50:36
これフォルダ消すだけで大丈夫だろ。
>>914 レジストリ使わないのか。しらんかった。
Cygwinならともかく、今してるのはMinGWの話だからね。
MinGWのgccとかは、どういうわけか適当にincludeディレクトリやlibディレクトリを見つけてくれるから レジストリ怖い怖いと思っていた時期が 俺にもありました。 でも未だに理屈がわからん。
gcc -print-search-dirs
>>916 Cygwinは使うのに、
MinGWは使わないのか。
へー。
>>917 ディレクトリ構成が決まってるから
自分自身の存在するディレクトリとコンパイルオプションが分かれば
>>918 のように決定出来る
・・・だよね?
環境変数とかコンパイラオプションでincやlibディレクトリが指定されてなかったら、 コンパイラがGetModuleFileName関数で得たパスから決め打ちでアクセスする感じかと。
923 :
デフォルトの名無しさん :2010/03/04(木) 06:33:45
これはすごい!乙 nuwen.netがすごくキレイにまとまってるようで興味あるなあ
mamedevのはmingw-w64と同じじゃないか?
>>923 ビルドオプションか何かで設定するんじゃなかった?
929 :
デフォルトの名無しさん :2010/03/08(月) 22:09:12
>>925 今までそれ使っていたけど、DLLがすべて動的リンク・・・。
ちなみに、自分はmingw-cross-env+komisarで環境作ってます。
http://cid-367e73e8cc6137b0.skydrive.live.com/self.aspx/Development%20Tools/Logue%20Pack/MinGW%5E_Logue%5E_pack%5E_20100228.7z 入っているもの:
w32api version 3.14.0
gmp-4.3.1
mpfr-2.4.1
ppl-0.10.2
cloog-ppl-0.15.4
mpc-0.7
GNU Binutils 2.20.51.20100124
gcc version 4.4.3 (x86.core2.Komisar) (GCC)
zlib-1.2.3
bzip2-1.0.5
pthreads 2.9.0.0 GC-static
+
boost-1.4.2, flac-1.2.1, freetype-2.3.12, glew-1.5.2, jpeg-8, iconv-1.13.1(const改造済み),libmad-0.15.1b, libmikmod-3.2.0,
libpng-1.4.1, libsndfile-1.0.21, libogg-1.1.4, SDL-1.2.14, SDL_image-1.2.10, SDL_mixer-1.2.11(難あり), SDL_net-1.2.7,
SDL_ttf-2.0.9, smpeg-0.4.5svn389改, speex-1.2rc1, sqlite-amalgamation-3.6.22, libvorbis-1.2.3, zziplib-0.13.58
特定しますた フォローもしましたw 自力で環境構築できるまで頑張ってみる、つもり
932 :
デフォルトの名無しさん :2010/03/09(火) 22:14:42
mingw-w64は64bit専用なの?
>>932 32bit用は-m32でコンパイルできるんじゃないの?
934 :
デフォルトの名無しさん :2010/03/10(水) 14:47:48
"表"とか"ソ"とかのダメ文字が通らなくて腹立ってきた。
utf-8 使うと幸せになれますよ
--input-charset=cp932 --exec-charset=cp932
コメント以外は全部英語にすればいいじゃんって思えてきた。
ハードコーディングしなければいいじゃん
そうだね Qt で QObject::tr とか m18n で書いておけばいいよね
コメントこそ英語でいいよ 文字化けするコメントほどうざいものはない
>>941 > コメントこそ英語でいいよ
いやそれはおかしい
英語のコメントとか、どうせコーダの英語力なんてたかがしれているのだから
やめるべき。
roman letterの出番だな
>>943 > 文字化けするコメントほどうざいものはない
おおげさだな。
コメントなら文字化けしても大して問題ないだろう。
バカが書いた英語風の謎言語コメントもウザイだろう。
本家mingwは、gcc4.5.0をやってるんだ
TDMにメール送っておくか 4.5.0はやくビルドしろって
TDMはたぶん安定感のあるバージョンを 優先しているのでは?
でもffmpegとかmplayerとかの周りでは4.4.1は問題ありってことで みんなkomisarに乗り換えちゃったよ
じゃあやっぱりTDMがさぼっているだけ。。。
>>948 TDMのgccが、ですか?
本家に問題があるようなので乗り換えようと思ってたのですがこっちも問題ありですか…
>>948 TDMというよりgcc自体にってことじゃない?
952 :
デフォルトの名無しさん :2010/03/15(月) 21:13:59
そう、gcc4.4.1自体に色々問題があるのでみんな4.4.2にする必要があった でもTDMは4.4.2を出さないのでkomisarに替えた バグフィックスも大量にあったのに更新もせずアナウンスもなしだから、 もはや終了ととらえてもいいのかもしれない
だだのもんに文句言ってもしょうがないでしょ
まあTDMのスレじゃねぇから、俺らとしては
別にそんなに悲しくはないよな。
>>934 の中では何がいいってか何が違うの??
Komisar Mingwが一番人気なのかもしれんけど
ライセンス的に人気なの?
955 :
デフォルトの名無しさん :2010/03/15(月) 23:18:52
komisar使ってるけど、これもそろそろ更新して欲しい。
956 :
デフォルトの名無しさん :2010/03/15(月) 23:23:05
XvidVideo.RUを使ってる人はいる?
スレ違いかもしれませんが、cygstart の UNC 表記について質問させてくださ い。cygstart をつかって、ファイルサーバ上にある、エクセルファイルを開 こうとしていますが、ファイルが見つからないと エラーがでます。そのエラーにパスが表記してあり以下の文字列を先頭につけ ています。 \\?\unc ワードは、エラーはでないがやはり開けず、新規ファイルを開いた上体にな る。ローカルマシンのファイルはエクセルでも問題なく開けるし、フォルダな どはサーバ上でも exploreで普通に開いてくれます。 これは、エクセルが UNC に対応してないということだと思いますが、何か回 避の方法がありましら教えてください。
ドライブレター振ってみたら?
>>957 mingw-w64はmingwとは別プロジェクト。中の人も別。
経緯は知らないけどあまり仲は良くなさそな気がする
mingw-w64やってる人って、かなり勢いがあるみたいだけど
猪突猛進
963 :
958 :2010/03/16(火) 10:23:32
もう少し詳しく書くと、以下のようなパスを持ってきて、cygstart に渡して います。(この段階ですでに、UNC 表記になってる) \\servername\path\foobar.xls これが、ファイルが見つかりませんと表示されるメッセージボックスには、以 下のように表示されます。 \\?\unc\servername\path\foobar.xls なので cygstartに渡されたあとに、UNC 表記に変換されてエクセルに渡され ているようです。以前のバージョンでは、これで問題なく開いてくれました。 (以前のバージョンは 1.7 であることは間違いありませんが、いくつだった か覚えてません) cygstart にこの表記をしないでエクセルに渡すような、引数はないようでし た。
gcc4.4.1自体の問題に遭遇できる人が何人いるんだかわかんないのに...
>>958 ちょっとだけ試してみた。
(581) cygstart --verbose //hostname/dirname
ShellExecute(NULL, "(null)", "\\?\UNC\hostname\dirname", "(null)", "(null)", 1)
Unable to start '\\?\UNC\hostname\dirname': The specified path was not found.
(582) cygstart --verbose //hostname/dirname/tmp/
ShellExecute(NULL, "(null)", "\\?\UNC\hostname\dirname\tmp", "(null)", "(null)",
手元の環境では1つ目のフォルダは開けないけど2つめのは開けた。
ファイルの場合も同じで開けるパスと開くのに失敗するパスがある。
*.xls でも *.xlsx でも *.doc でも *.docx でも開けるファイルと
開けないファイルがある。 条件はよくわからん。
試した環境は Windows 7 64bit + Office 2007 です。
967 :
デフォルトの名無しさん :2010/03/18(木) 02:05:35
ビルドできましたって、だけでしょ
971 :
デフォルトの名無しさん :2010/03/21(日) 01:22:20
誰かTDMを焚き付けてくれ!!
英語で「早く4.5.0にせんかいカス」と送ってみようか
974 :
972 :2010/03/21(日) 12:30:36
もうちょっと優しく送ろっか。 いつも TDM mingw32 をありがたく使用させていただいております。 この度、g++がversion 4.5.0となり、TDM mingw32 もそれに追従して バージョンアップしていただけませんでしょうか。 待ち遠しくてなりません。 どうかよろしくお願い申し上げます。 これを英訳すればOK?
それとももしかして
ttp://en.wikipedia.org/wiki/Mingw Stable release 4.4.0 / June 22, 2009; 8 month(s) ago (2009-06-22)
Preview release 4.5.0 / January 1, 2009; 14 month(s) ago (2009-01-01)
とのことで、まだ4.5.0はPreview releaseだからヤダとか
思っているのかな?
でも別に今までのインストーラだって捨てないで取っておけばいいわけだし、
Preview release の 4.5.0 も作ってくれてもいいよね。
依頼してみたい所だ。
依頼しなくても、自前でビルドすりゃいいじゃん gcc version 4.5.0 20100311 (experimental) (GCC)
そんな能力あったらインストーラーつかいません。
978 :
デフォルトの名無しさん :2010/03/21(日) 16:17:37
gcc.exe (GCC) 4.5.0 20100319 (experimental)
979 :
デフォルトの名無しさん :2010/03/21(日) 16:36:50
そもそもgccの4.5系列は開発中のものということを分かって言ってるんか
982 :
デフォルトの名無しさん :2010/03/21(日) 22:38:12
gcc.exe (GCC) 4.4.4 20100318 (prerelease) [svn/rev.157541 - mingw-w64/oz] 4.4.4も開発中か。
放置プレイかw g++ (TDM-2 mingw32) 4.4.1 って結局何がまずいのでしょうか?
mingw-w64について疑問があるんだが、解凍先\binフォルダ内のやたら長いファイル名のやつじゃないとコンパイルできないんだよね mingwフォルダや、x86_64-w64-mingw32フォルダにはgcc.exeみたいに短いファイル名のファイルもあるけど、そっちのフォルダを環境変数に指定しても正常に動作しないんだが なぜあんな変に長ったらしいファイル名になってるの?まさか既存のmingwと共存とか変なことかんがえちゃってるの?
986 :
デフォルトの名無しさん :2010/03/23(火) 10:51:34
早くしてくれないとラムダが使いたいという欲求が満たせない。
988 :
デフォルトの名無しさん :2010/03/23(火) 14:53:58
Personal Buildsの方は4.4.4ベースだけど、こっちのが使いやすい。
番号ごとに開発が別々なんて変わってるね。
990 :
デフォルトの名無しさん :2010/03/23(火) 23:16:12
>>990 sezeroってPersonal Buildのカテゴリの中に入ってるけど、一般ユーザーはこれを使ってろってこと?
猫科研究所パック使ってバグ報告してやってくれよ いま一番使えるのはこれだと思う。 すべて最新板とは限らないだろうが。 利用者増えれば更新もよくなるはず
猫料理研究所なんてあんの?
猫科研究所(felid labo) - MinGW猫科研究所パック assemble005 gdb-7.0.50以外の主要コンポーネントはa004と同じ。 assemble004 gcc-3.4.5(gccとg++のみ) Twilight Dragon Media版gcc-4.4.1-tdm-2(gccとg++のみ) mingwrt-3.17 w32api-3.14 binutils-2.20-1 gdb-7.0-2 SIMD版libjpeg libpng libiconv + cp932パッチ libxml2 こんな感じなのか。 結局TDMがリリースされない限り新しいgccも手に入らないんじゃね。
まあ別に gcc4.5.x系が正式リリースされたら初めて TDMが重い腰を上げるんじゃないかな。 それまで待てばいいじゃないか。
いい加減最新房うざい 欲しければ自分でコンパイルしろ 低スキルの奴ほど訳も分からずに番号の大きいバージョンを使いたがる
こういうヤツに限って自分でコンパイルできない罠
自前でビルドするって、結構大変だよ
おお
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。