Cygwin + MinGW + GCC ..
[2ch|▼Menu]
554:デフォルトの名無しさん
08/02/23 12:18:37
x86のFPUは、80ビット精度と64ビット精度が存在する。
SSE2は64ビット精度。
とかそのへんの問題かな?

>>551に一票。

浮動小数点演算の検算で精度気にしすぎると禿げるぞ。
ε使えε

555:デフォルトの名無しさん
08/02/23 12:55:41
テキストで出力すると計算の問題なのか出力関数の問題なのか分からんな。
バイナリで出力(あるいは16進ダンプ)してみて
どうなるかチェックした方がいいと思う。

例えば
fprintf(fp, "%.16e\n", x[5]);
これを
output(fp, x[5]);
にして、output を別翻訳単位で下のように定義してみたらどう?

void output(FILE *fp, double value)
{
 union {
  double value;
  char array[sizeof (double)];
 } dc = { value };
 int i;

 for(i = 0; i < sizeof (double); ++i) {
  fprintf(fp, "%02X ", dc.array[i]);
 }
 fputchar('\n', fp);
}

556:デフォルトの名無しさん
08/02/23 12:56:53
_controlfp あたりでぐぐれ

557:デフォルトの名無しさん
08/02/23 13:05:31
VCとgccのデフォルトのFPU計算精度は異なるらしい
URLリンク(homepage1.nifty.com)
_controlfpでいじると同じ精度にできる

558:デフォルトの名無しさん
08/02/23 13:11:46
おー、それだそれだ、思い出した。

559:544
08/02/25 14:04:07
皆さまコメントありがとうございました。>>556-557の方法で解決いたしました。

使用していた Windows 環境では MinGW でコンパイルしたコンソールアプリは 53 ビット、
MinGW でコンパイルした GUI アプリと VC++ Toolkit 2003 でコンパイルした両アプリは
64 ビットの演算精度を用いていたようです。

別の Windows 環境で試したところ MinGW でも両アプリとも同じ計算結果になりました。

コンソールアプリを MinGW でコンパイルすると演算精度が 53 ビットになる環境がある、
確実を期すなら  _controlfp を使え、ということですね。

髪がすこし減ってしまった気がします。本当にありがとうございました。

560:デフォルトの名無しさん
08/02/25 14:29:41
つーか、doubleの精度以上の処を云々すると禿げるよ。
どうせ微小誤差が付き纏うんだから適当な桁で丸めて表示するとかしないと。

561:544
08/02/25 15:57:08
>>560
おっしゃる通りです。

今回の件が気になってしまったのは、シミュレーションコードのデバッグ中だったためです。
実行環境やコンパイラが違ったら気にしないところですが、同じ環境で同じオブジェクトコードに
同じ入力データを与えているにも関わらず計算結果が違うことにとまどってしまいました。
原因はdoubleの範囲を越えた部分の誤差でしたが、この問題を調べるきっかけになった
シミュレーション結果の違いはもっと有意な差だったので看過できませんでした。

育毛にはげみます。

562:554
08/02/25 21:54:36
>>561
> シミュレーション結果の違いはもっと有意な差だったので

俺は予言する
もまいは禿げる。

肝心のアルゴリズム、あるいはテストベクタが草ってんじゃない?

563:デフォルトの名無しさん
08/02/25 22:13:26
>>561
IEEEに準拠するように80bitではなく強制64bitにするオプションがあったはずだが

564:デフォルトの名無しさん
08/02/26 13:18:47
>>563
>556-559

565:デフォルトの名無しさん
08/02/27 14:03:31
そんなあなたを禿増してあげましょう

566:デフォルトの名無しさん
08/03/04 02:29:06
>>541 発見しますた
URLリンク(sohda.net)

567:デフォルトの名無しさん
08/03/07 09:16:50
OS再インスコしてdevcpp+SDLで以前のソースコンパイルしたらWinMain@16なエラーが('A`)
int main(ryから始めてるし-mwindowsも付けてるのに
cygwinでもインスコすれば変わるかなあ

568:デフォルトの名無しさん
08/03/07 10:14:40
-lSDLmain付け忘れ&-l順番ミスでしたサーセン
SDL外したらコンパイル通って、sdl-config見てやっと思い出した

569:デフォルトの名無しさん
08/03/24 17:59:52
相談じゃなくて雑談になるんだけど
g++4.3.0をビルドしてみたんだけど、g++のbinが460,475ってでかくね?
cygwinのインストーラからのg++3.4.4は96,789、verうpとかモジュール化とか考えてもねぇ。
とか思いながら動作テストで↓コンパイルしたら、2,339,843、メガってどうなの。(ちなみに3.4.4でも477,682、g++4.3.0binよりでけぇ
#include <iostream>
int main(){return0;}
これって一体何がバイナリに組み込まれてるのか気になるんだけど、分かる人教えてー、誘導だけでもいいから。
ちなみに#include<iostream>だけ消したら3.4.4が7,673、4.3.0が10,915と小さくなった。(勿論gccじゃなくてg++で

570:デフォルトの名無しさん
08/03/24 18:09:00
stripしろよ
ライブラリのdebug infoもな

571:デフォルトの名無しさん
08/03/24 18:30:48
なるほど、どうもー。

572:デフォルトの名無しさん
08/03/25 07:07:47
g++ 普通にビルドできるのか?
それならなんで Cygwin のパッケージは 3.4 のままいっこうに動かないんだろう。

573:デフォルトの名無しさん
08/03/25 13:33:08
そのうち、stripしてもまだサイズがでかいがどうしてだ? といった
ググれば5秒で分かるFAQを聞きに戻ってきそうだ

574:デフォルトの名無しさん
08/03/25 14:25:42
嫌味だけは一丁前でな

575:デフォルトの名無しさん
08/03/25 17:16:47
>>572
できたよー
そういや俺も昔クロスコンパイラ作ろうとしたけどビルド出来なかった覚えがあるな
そんときは原因分からず仕舞いやったけど

cygwinのパッケージはlinuxでビルドされてるらしいから3.4で動かない原因は別なんじゃない?

576:デフォルトの名無しさん
08/03/29 06:08:53
Windows XP SP2 上で Cygwin gcc 3.4.4 の MinGW モードで開発してるんですが、
システムメニューの項目を EnableMenuItem() を使ってグレーアウトさせようとしてもできません。

具体的には、ウィンドウプロシージャで WM_CREATE を受け取ったとき

 EnableMenuItem(GetSystemMenu(hWnd, FALSE), SC_MOVE, MF_GRAYED);

としても、システムメニューの「移動」がグレーアウトせず、有効なままになってしまいます(実際にウィンドウ移動もできる)。
MF_GRAYED を MF_DISABLED にしても同様で、システムメニューからウィンドウ移動ができてしまいます。

 DeleteMenu(GetSystemMenu(hWnd, FALSE), SC_MOVE, MF_BYCOMMAND);

ならば正常に機能し、項目が削除されるんですが…。

似たような環境で EnableMenuItem() によるシステムメニュー項目のグレーアウトができている方がいれば
方法など教えていただけないでしょうか?

577:デフォルトの名無しさん
08/03/29 06:18:22
すみません。追記です。

 EnableMenuItem(GetSystemMenu(hWnd, FALSE), SC_CLOSE, MF_GRAYED);

は正常に機能し、システムメニューの「閉じる」とタイトルバーの×ボタンがグレーアウトするようです。
となると「移動」とか「サイズ変更」がグレーアウト/無効化できないのは Windows API 自体の仕様なんですかね?
もしそうだったらスルーしてください。Cygwin + MinGW 環境固有の問題かと早合点してしまったので。

578:デフォルトの名無しさん
08/03/29 17:36:49
Win32 API スレの管轄だろうな。
ま、それはともかく設定するタイミングが駄目だと思う。


URLリンク(msdn.microsoft.com)
>GetSystemMenu
>
>状況によって、システムはウィンドウメニューの標準的なメニュー項目の一部を自動的に淡色表示にします。
>アプリケーションは、どのメニューも表示されていないうちに WM_INITMENU メッセージに応答することにより、
>メニュー項目を独自に選択したり淡色表示にすることができます。

ということで、WM_INITMENU でやればいいと思う。っつーか、普通のメニューでも項目の無効化等はそこでやると思うんだけど。

579:デフォルトの名無しさん
08/03/31 13:20:29
>>578
スレ違いの質問にお答えいただいて恐縮です。
仰る通り WM_INITMENU を受け取ったときに設定することで「移動」「サイズ変更」もグレーアウトさせることができました。

ただし、WM_INITMENU メッセージでは wParam に対象メニューハンドルが格納されるらしいのですが、
システムメニューに関してはこれは当てはまらないようです。なので、

 if(wParam == (WPARAM)GetSystemMenu(hWnd, FALSE)){
  ...
 }

などとすると if 文の中身は決して実行されないようです。
よって、システムメニューを設定するだけなら wParam は無視すべき、ということみたいです。

580:デフォルトの名無しさん
08/03/31 13:46:42
WM_INITMENUPOPUPなら見分けがつくんでない?

581:デフォルトの名無しさん
08/03/31 14:43:40
>>580 アドバイスありがとうございます。やってみましたが、

 if(HIWORD(lParam) == 1){
  ...
 }

というテストはうまくいくものの、wParam にはシステムメニューのハンドルが入っていないようです。
ですので、EnableMenuItem() などに渡すメニューハンドルはやはり GetSystemMenu() を使って自前で取得しなければ
ならないようです。
また、WM_INITMENUPOPUP を受け取ったときに EnableMenuItem() を呼ぶと、タイトルバーから初めてシステムメニュー
を呼び出したとき、システムメニューの表示位置が若干上にずれて、タイトルバーを覆い隠すような形で出てくるようです。
まあ2回目以降は正常に戻るので、気にするほどのことではないかもしれないですが…。
あと、WM_INITMENU の場合は対象がシステムメニューかどうか見分けが付かないので、自分で初回スイッチのような
ものを用意して対処する必要がありそうですね。

それと、さっき色々試していて気が付いたのですが、WM_INITMENU または WM_INITMENUPOPUP を受け取ったときに
EnableMenuItem() する方法だと、タスクバーを初めて右クリックしたときに項目が無効にならないようです。
2回目以降、もしくは初回であっても事前にタイトルバーからシステムメニューを表示させていれば EnableMenuItem()
の設定が反映されるんですが…。

調べてみたところ、タスクバーが右クリックされたときには非公開メッセージ 0x313 が送られてくるとの情報があったので、
(参考: URLリンク(www.hey-to.net))
0x313 を捕捉し、そのハンドラで EnableMenuItem() などの設定を行い、
さらに DefWindowProc() にメッセージを処理させればよい…みたいです。

>>576の環境でしかテストしていないのであまり自信がないですが、これだと一応タスクバー初回右クリック時も正しく
項目が無効化されたシステムメニューが表示されます。
とはいえ、非公開メッセージに依存するのも微妙な感じなので、いっそ WM_CREATE のハンドラで無効にしたい項目を
DeleteMenu() してしまうのが一番簡単かもしれないですね。

長文失礼しました。Windows って難しいです。

582:デフォルトの名無しさん
08/03/31 15:22:25
>>581
Win32 API スレいって揉まれてくるといい

583:デフォルトの名無しさん
08/04/01 13:51:30
cygwinでopenmpは使える??

584:デフォルトの名無しさん
08/04/01 18:57:24
>>581
これじゃダメなんかい?

DWORD dwStyle = GetWindowLong(hWnd, GWL_STYLE) & ~WS_SIZEBOX;
SetWindowLong(hWnd, GWL_STYLE, dwStyle);


585:デフォルトの名無しさん
08/04/03 15:23:40
windows2k MinGW を入れたいのです
MinGWインストーラがネット無いので使えません
ソースフォージからどれを落とせば良いでしょうか
またそれは全て同じフォルダに上書きで良いでしょうか
binフォルダなどかぶっているものがおおいんです
使いたいのはC、C++、SDL、OpenGLです
パスは適当に通そうと思っています

586:デフォルトの名無しさん
08/04/03 17:14:48
MinGWインストーラはDownload Onlyを選べば、落とすだけを選択できるぞ
あとは上書きで桶

587:デフォルトの名無しさん
08/04/03 17:18:07
>>586
おおありがとう!
じゃあ遠かったHelloWorldも近づきますノシッ

588:デフォルトの名無しさん
08/04/11 13:50:57
ちょっとお聞きしたいのですが、mingwでは-Iオプションは使えないのでしょうか?
g++ --help でリストに出てこないのです。
しかしg++ -I とすると argument to `-I' missing のような感じで、unrecognize option `-j' みたいな感じではでてこないので、使えるような気もするのですが・・

589:デフォルトの名無しさん
08/04/11 14:32:18
>>588
g++ -v --help で出てきませんかな。
正直 gccのオプションはかなり多いので g++ --version でバージョンを確認してから
ぐぐるなり GCC online document URLリンク(www.gnu.org)
から探すなりしてマニュアルを読んだほうがよいかと思います。

590:デフォルトの名無しさん
08/04/11 14:42:10
>>588
使える

591:588
08/04/11 15:00:25
>>588さん
>>580さん

レスありがとうございます。
使えるのですか。
-I使う場合は、Windows用に
-IC:\Program Files\...
みたいな感じで書けばよいのでしょうか?

上記の感じでやってみたのですが、うまくいかなく・・

592:588
08/04/11 15:01:37
>>588さん→>>589さん
>>580さん→>>590さん


593:デフォルトの名無しさん
08/04/11 15:06:08
>>591
スペースが入ってるみたいだけど...

594:デフォルトの名無しさん
08/04/11 15:21:52
>>591
パスにスペースを含む場合は "" で囲むと聞いたことがあるけど
-I"C:\Program Files\..." ではだめかな

595:デフォルトの名無しさん
08/04/11 15:48:56
分割されなきゃいいのだから、空白をエスケープするだけでもいいかも。
それはさて、ディレクトリ区切りのバックスラッシュってエスケープする必要あるんでない?

596:デフォルトの名無しさん
08/04/11 16:17:38
スラッシュにした方がいいな
-l"C:/Program files/..."

ていうか相対パス指定できるように環境を整えた方が
のちのち便利だと思う

597:デフォルトの名無しさん
08/04/11 17:43:01
レス下さった方々、ありがとうございます。

-l"C:/Program files/..."
こんな感じでとりあえず目的のコンパイルはできるようになりました。多謝です。

相対パス指定のための環境構築について、検索してみたのですが、それっぽいのが出てきませんでした。
スレ違いで申し訳ないのですが、よろしければどなたか解説してるサイト教えて頂けると幸いです。


598:デフォルトの名無しさん
08/04/11 18:01:43
msysかcygwinをいれちゃう。
あなたならおそらくmsysのほうがおすすめ。

ふと思ったがmingw単体で使ってる人ってけっこういるんだろうか。



599:デフォルトの名無しさん
08/04/11 20:46:30
あっちの関連スレにここがあったから貼り返し。

Cygwin使っている人いますか? その18
スレリンク(unix板)

600:デフォルトの名無しさん
08/04/11 22:11:33
>>598
俺々、俺だよ
msysはgccのsnapshotをコンパイルするときくらいしか使ってない

601:デフォルトの名無しさん
08/04/11 22:17:04
msysはUNIX系用に書かれたアプリをWindows環境で
makeや./configureするためだけにあるようなもんだから
純粋なWindowsアプリ作るときは、いらんだろ。
それともWindowsアプリ書くときも、mv や cp や sh コマンドを使うヤツがおるのか?

602:デフォルトの名無しさん
08/04/11 22:28:16
そこまで使うような奴だったらCygwinを入れているだろうしな。

603:597
08/04/11 23:26:58
レスありがとうございますー。
なるほど、msysからなら相対パスで指定できたのですか。

実はmsysは導入してるんですが、今コンパイルしようとしてるソースがeclipseのプロジェクトのもので、
eclipseのbuildセッティングからオプション指定しなければいけないが気がするのです。

eclipseからのオプション指定付きのコンパイルは、絶対パスでですが成功したのでとりあえず解決しました。
eclipseからも相対パスで指定できたら便利なのかもしれませんが、スレ違いなのでここではやめておきます。

色々ご教示くださりありがとうございましたm(_ _)m


604:デフォルトの名無しさん
08/04/12 15:11:57
よく分からないんだが、prefix を適当なマクロ名(たとえばSRC_DIR)で定義しておいて
-I"$SRC_DIR/include" とか書けばいい、という話?
Makefile内ではダブルクオートで囲んであってもマクロ展開が行なわれる。
ダブルクオート付きのまま実行されるので SRC_DIR=C:/Program Files/GnuWin32 のように
スペースを含んでいても無問題。

605:デフォルトの名無しさん
08/04/12 15:21:51
>>601-602
俺はWindows環境でMinGWを使ってプログラムを書くときはいつも
Makefileを書いてるからmsysがないと不便かもー。
exe単体(dll不要)で実行できるのがMinGWのいいところだから
俺的には MinGW + msys = Cygwin ではない。

606:デフォルトの名無しさん
08/04/12 16:54:08
>605
-mno-cygwin つければ cygwin1.dll 使わなくなるんだから、MinGW + msys ⊂ Cygwin とか混ぜっ返してみる。

607:デフォルトの名無しさん
08/04/12 17:58:19
>>606
なるほろ。どうもです。

608:デフォルトの名無しさん
08/04/12 18:39:40
全く混ぜっ返せてない気がするのは気の所為だろうか。

609:デフォルトの名無しさん
08/04/12 23:38:33
>>605
nmake 使った事無いの?

610:デフォルトの名無しさん
08/04/13 02:43:01
なぜそこでnmakeがでてくるんだ?

611:デフォルトの名無しさん
08/04/13 03:50:56
>>609
聖徳太子って知ってる?

612:デフォルトの名無しさん
08/04/13 04:06:39
知ってる。
人に非ずな美人な子供で同性愛者な上にマザコンな皇子でしょ?

613:デフォルトの名無しさん
08/04/13 05:10:58
知ってる。
突然びっくりするぐらいブチ切れる人でしょ

614:デフォルトの名無しさん
08/04/13 15:09:40
知ってる。
100万人が同時にしゃべっても聞き分けられた人でしょ

615:デフォルトの名無しさん
08/04/13 16:14:52
それってさ
聖徳太子が聞き分けられてる
と気づいた人のほうが数段上だよね

616:デフォルトの名無しさん
08/04/13 16:58:47
みんなして同じことしかいってなかったんだよね

617:デフォルトの名無しさん
08/04/13 17:11:04
MinGWに付いているwindres.exeは
windres --language=0411 ファイル名.rc
とすればShift-JISのrcファイルを読めるけど、UTF-16のrcファイルは読めますか?
languageオプションに指定できる値の情報がどこにも無くて、UTF-16に対応してるかどうか分からない…
(ちなみにVC9のrc.exeは文字コードを自動判定してるようでShift-JISもUTF-16もオプションなしで読めるみたい)

618:デフォルトの名無しさん
08/04/13 19:35:39
windresのソースのこの辺り↓を見るしかなさげ?
URLリンク(sourceware.org)
URLリンク(sourceware.org)
なんだかコードページしか指定できないように見える・・・。

619:デフォルトの名無しさん
08/04/14 18:28:10
G++でのコンパイルやリンク実行時に自分で作ったバッチファイルを引数として噛ませたいのですが、どのように書けばできますでしょうか??
どなたかご教示頂けると幸いです。


620:デフォルトの名無しさん
08/04/14 18:29:40
> G++でのコンパイルやリンク実行時に自分で作ったバッチファイルを引数として噛ませたい

詳しく

621:619
08/04/14 18:35:55
すいません、Windowsのコマンドラインから使う場合の話です。

>>620さん
レスありがとうございます。

例えば、
g++ sample.o -lC:/aa.. -lC:/bb.. -lC:/cc.. -lC:/dd..
のようにインクルードファイルを呼び出してリンクしたいとき、
-lC:/aa.. 以下を毎回打つのは面倒なので、inc.batのようなバッチファイルにまとめてしまい

G++ sample.o inc.bat

のような感じでリンクできるようにしたいのですが、
上のような書式では失敗するので、inc.batの前になにか必要なのかな??という疑問です。


622:デフォルトの名無しさん
08/04/14 18:56:36
つMakefile

623:619
08/04/14 19:05:56
レスありがとうございます。

すいません、makefileがどんなものかは大体分かっているのです。
今回はバッチでどうしてもやりたい事情がありまして・・


624:デフォルトの名無しさん
08/04/14 19:11:17
環境変数使うってのは?

625:デフォルトの名無しさん
08/04/14 19:12:55
もしくは、$1とかでファイル名渡すとか?

626:デフォルトの名無しさん
08/04/14 19:55:21
>>623
SET CXX=B:\MinGW\bin\g++
SET CFLAGS=-IB:\hoge\include -IB:\fuga\include
SET LDFLAGS=-LB:\hoge\lib -LB:\fuga\lib -lhoge -lfuga
%CXX% %CFLAGS% %LDFLAGS% %*
みたいなのをmygcc.batに保存して
> mygcc sample.cc
でコンパイル。オプションとかは適当に追加してくれ。
バッチファイルも書けなくてC++でプログラム書けるのかが心配だが…

627:デフォルトの名無しさん
08/04/14 22:31:52
>>619
ふつうにバッチファイルじゃいかんの?

unko.bat の中身はこう書く
g++ %* -lC:/aa.. -lC:/bb.. -lC:/cc.. -lC:/dd..

で、コンパイルはこう
C> unko sample.o

これも事情があってダメなの?

628:619
08/04/14 22:55:52
レスありがとうございます。
なるほど、バッチの中にg++も入れたりできるんですね。

ただ、それだとやっぱりだめで、事情っていうのが、wxWidgetsっていうGUIツールキットを使っていて、それを使ったリンク時に

g++ sample.o -LC:/wx/(以下略)...

みたいにするんですが、どうもWindows版だと

g++ -LC:/wx/(以下略)... sample.o

みたいに、オプションがインプットファイルより前にくるとエラーになるみたいなんです。

makefileを使わないと言っても、eclispeのexcutableプロジェクトなので、makefileは勝手に生成される=使っています。
勝手に生成されるので自由には編集できない、ってことです。
で、そのmakefileのオプションの部分だけをバッチにしたいんです。
直接全部手書きでもよいのですが、かなり長いのでスマートじゃないなぁと思いまして・・

>>バッチファイルも書けなくてC++でプログラム書けるのかが心配だが…
初心者なので大目に見てください(^^;)

環境変数ってのはなんの環境変数でしょうか??


629:デフォルトの名無しさん
08/04/14 23:24:07
>>628
eclipseにコンパイル、リンクオプションを設定するところがあるはずだから探せ。
-LC:/... とリンク先ディレクトリ指定のオプションだけのように見えるが、本当はリンクするライブラリもその「バッチ」とやらに書いてるだろ。
それだと.oより先にあったらダメだ。
それはwindowsだろうがなんだろうがダメ。
.oから呼ばれている関数をリストアップして、その後その関数をライブラリからワンパスで探すから。


630:デフォルトの名無しさん
08/04/15 00:27:21
>>628
>>627 を試してみたのか?
バッチに渡した引数は %* の位置に展開されるのよ?

>なるほど、バッチの中にg++も入れたりできるんですね。
とかいう時点でバッチが何か理解してないと思われ

631:デフォルトの名無しさん
08/04/15 00:39:07
野球で振り回すあれでしょ?

632:デフォルトの名無しさん
08/04/15 01:13:11
>>630
バッチってバッチファイルのことじゃなくて、ライブラリのファイル名を羅列したファイルのつもりなんだろう。


633:デフォルトの名無しさん
08/04/15 03:16:00
チラシの裏
MinGWでコモンコントロール使うなら
#define _WIN32_IE 0x0300
とか必須

634:デフォルトの名無しさん
08/04/15 03:37:30
チラシの裏
ncurses5.6 cygncurses-8.dll 文字化け 日本語
→ use_legacy_coding(2) 追加

635:デフォルトの名無しさん
08/04/15 10:11:30
EIPに入ってるアドレスから共有ライブラリやEXEのベースアドレスを調べたいのですが
windowsのPSAPIを使うやりかたで良いのでしょうか?
cygwinではこう書くみたいなやりかたはありますか?

636:デフォルトの名無しさん
08/04/15 14:35:20
Win32環境にCygwinかMinGWのどちらかを入れようと迷っているのですが、
何か判断基準になるものはありますか?

637:デフォルトの名無しさん
08/04/15 14:39:32
両方入れて、自分で比較した方がいいんじゃないの?

638:デフォルトの名無しさん
08/04/15 19:49:07
基本MinGWでいいと思う
別の用途でCygwin使ってる人はそのままCygwinを使う

639:デフォルトの名無しさん
08/04/15 23:13:21
CygwinはUnix環境として使うなら便利だけど、窓の開発したいだけなら開発環境に組み込まれてたりするMinGWのほうがいいんじゃね?

640:628
08/04/16 23:44:28
レス下さった方々ありがとうございますm(_ _)m
お礼遅れてすいません。

>>lipseにコンパイル、リンクオプションを設定するところがあるはずだから探せ。
オプション設定するところあるのですが、-mwindowsというのを設定しなくてはいけなくて、それ用のフォームがなくて困ってたのですが、全部まとめてかけるところが見つかってそっちに書くことで解決しました。
>>/... とリンク先ディレクトリ指定のオプションだけのように見えるが、本当はリンクするライブラリもその「バッチ」とやらに書いてるだろ。
その通りです!
>>それだと.oより先にあったらダメだ。
それはwindowsだろうがなんだろうがダメ。
.oから呼ばれている関数をリストアップして、その後その関数をライブラリからワンパスで探すから。
そうだったんですか!知りませんでした。貴重な情報ありがとうございます。
>>627 を試してみたのか?
バッチに渡した引数は %* の位置に展開されるのよ?
これも知りませんでした汗
そうだったのですか。なるほど!
ありがとうございます。
>>バッチってバッチファイルのことじゃなくて、ライブラリのファイル名を羅列したファイルのつもりなんだろう。
そんな感じです(^^;)
>>MinGWでコモンコントロール使うなら
>>#define _WIN32_IE 0x0300
>>とか必須
>>ncurses5.6 cygncurses-8.dll 文字化け 日本語
>>→ use_legacy_coding(2) 追加
ありがとうございます!


641:デフォルトの名無しさん
08/04/17 22:41:46
>>640
%* や、バッチファイルのその他の機能の説明を読んだ方がよさそう。
Windowsの「スタート」ボタン→「ヘルプとサポート」
→検索窓に「バッチ」と入力して検索→「バッチ パラメータを使用する」
→検索窓に「シェル」と入力して検索 →「コマンド シェルの概要」


642:デフォルトの名無しさん
08/04/18 03:40:54
1.cygwin.batから起動したbash上で「ls --color」を実行→color表示。うっわ見づらいなコレ
2.「ls」を実行→あれ、color表示のままだぞ?
3.「ls --color=none」を実行→うむ、color表示じゃなくなった
4.「ls」を実行→あれ、やっぱcolor表示のままだぞ・・・?
5.「source ~/.bashrc」を実行後、「ls」を実行→よし、今度こそcolor表示じゃなくなった
6.「exit」を実行後、cygwin.batからbashを起動し「ls」を実行→ひいい、color表示のままだぞ!?
7.(´・ω・`)

*cygwin.bat----------
@echo off
C:
chdir C:\cygwin\bin
bash --login -i

*.bashrc(インスト時に手を加えたところだけ抜粋)------
export JLESSCHARSET=japanese-sjis
alias ls="ls -F --color=none --show-control-chars"
export LANG=ja_JP.SJIS

他のCygwinプロセスは起動してません。
.bashrcをちゃんと読んでない気がするのですが、lsのデフォルト動作を非カラー表示に
戻す方法をご教授いただければ幸いです。

643:デフォルトの名無しさん
08/04/18 04:21:48
>>642
alias 打って実際の登録状況を見るとか。
set -x して実際に起動されたプロセスの引数を確認するとか。

644:デフォルトの名無しさん
08/04/18 06:52:13
>>643
このalias内容から、>>642でも書いてるように.bashrcを読んでないと
思ったんですがねえ・・・どこから読んできたのやら

$ alias
alias ls='ls --show-control-chars --color -F'
alias mc='. /usr/share/mc/bin/mc-wrapper.sh'
$ set -x
(なし)

645:デフォルトの名無しさん
08/04/18 08:40:49
.bashrcに echo hello とか入れてみれば読まれてるかどうか分かるんじゃ?

646:デフォルトの名無しさん
08/04/18 08:55:12
質問には「.bashrcが読み込まれているかどうか分かりません」なんて書かれてないだろう

>>644
URLリンク(www.google.com)

647:デフォルトの名無しさん
08/04/20 09:05:36
【質問】 Xfce4を利用できない
【希望】 Xfce4デスクトップ環境を利用したい
【やったこと】
URLリンク(www.compuspec.net)
上記のサイトを参考にしました。

setup.exeより、リポジトリ「fURLリンク(sunsite.dk)」を追加し、
Xfce4関連のパッケージ全てをインストール。.bashrcに
PATH=/opt/xfce4/bin:$PATH
export PATH
を追記し、bash上からパスが通っていることを確認。
$ startxfce4
を実行すると、xscreenserverがないとメッセージが出たので、
setup.exeよりxscreenserverを選択しインストール。

再度startxfce4を実行すると、X画面が表示されるものの下記のようなログが出て
Xfce4が起動できていない。

ちなみに利用OSはWindowsXPでユーザ名は「root」としています。

648:デフォルトの名無しさん
08/04/20 09:08:00
startxfce4のログ

/usr/bin/startxfce4: Starting X server
(中略)
_XSERVTransmkdir: Owner of /tmp/.X11-unix should be set to root
winValidateArgs - g_iNumScreens: 1 iMaxConsecutiveScreen: 1
(II) XF86Config is not supported
(II) See URLリンク(x.cygwin.com) for more information
winDetectSupportedEngines - Windows NT/2000/XP
winDetectSupportedEngines - DirectDraw installed
winDetectSupportedEngines - DirectDraw4 installed
winDetectSupportedEngines - Returning, supported engines 00000007
winSetEngine - Using Shadow DirectDraw NonLocking
winAdjustVideoModeShadowDDNL - Using Windows display depth of 32 bits per pixel
winFinishScreenInitFB - Masks: 00ff0000 0000ff00 000000ff
(中略)
Could not init font path element /usr/X11R6/lib/X11/fonts/CID/, removing from list!
Could not init font path element /usr/X11R6/lib/X11/fonts/100dpi/, removing from list!
winPointerWarpCursor - Discarding first warp: 836 512
winProcEstablishConnection - Hello
winProcEstablishConnection - Clipboard is not enabled, returning.
Agent pid 2492
xscreensaver: 09:01:36: locking is disabled (running as root).
xscreensaver: 09:01:36: locking only works when xscreensaver is launched
by a normal, non-privileged user (e.g., not "root".)
See the manual for details.
FreeFontPath: FPE "/usr/X11R6/lib/X11/fonts/misc/" refcount is 2, should be 1; fixing.
# ここで下記URLのような何もない画面とXのカーソル(×印)が表示されて停止
# URLリンク(img224.echo.cx)

649:デフォルトの名無しさん
08/04/20 09:19:24
理想
URLリンク(blawat2015.no-ip.com)

650:デフォルトの名無しさん
08/04/20 22:10:32
URLリンク(www.geekpage.jp)

ここを見て最初からやっていったのですが、コンパイルは出来たものの
>CygwinだけではなくWindowsコマンドプロンプトで実行したい場合
のところにある「-mno-cygwin」を使おうとすると
gcc: installation problem, cannot exec `cc1': No such file or directory
と出てきてしまいます
どうしたらいいでしょうか?

651:デフォルトの名無しさん
08/04/20 23:54:24
>650
必要なパッケージが足りてない。
-mno-cygwin が使いたい場合、gcc-core だけじゃなくて gcc-mingw-core も必要。

652:デフォルトの名無しさん
08/04/21 13:53:13
都合でMinGWを使いたいんだけど、Cygwin導入済みのWindowsに入れたら競合が起こるかな
CygwinパッケージにもMinGWがあった気がするけど、両方とも干渉せずスタンドアロンで使いたいっす

653:デフォルトの名無しさん
08/04/21 16:26:13
>>652
cygwinでmingwのコマンド類のある場所にパス通したりしなければ問題ない。
うちは普通に cygwin と mingw + MSYS が両方入ってる。

654:デフォルトの名無しさん
08/04/21 22:37:48
>>651
解決しました
ありがとうございました

655:デフォルトの名無しさん
08/04/26 15:13:24
libtoolがスタティックライブラリは作るのですがdllを作ってくれません ><

/bin/sh ..//libtool --quiet --mode=link gcc -no-undefined -L/home/myname/install//lib
  -rpath /home/myname/install/lib -version-info 25:5:0 -export-symbols-regex '^ne_[^_]'
  -o libneon.la ne_request.lo ne_session.lo ne_basic.lo  ne_string.lo ne_uri.lo ne_dates.lo
  ne_alloc.lo ne_md5.lo ne_utils.lo ne_socket.lo ne_auth.lo ne_redirect.lo ne_compress.lo ne_207.lo
  ne_xml.lo ne_props.lo ne_locks.lo ne_xmlreq.lo  ne_acl.lo ne_openssl.lo
  -lssl -lcrypto  -lz -L/home/myname/install/lib -lxml2 -lz -lm
が実行されると
*** Warning: linker path does not have real file for library -lssl....
*** using a file magic. Last file checked: /home/myname/install/lib/libssl.dll.a

*** Warning: linker path does not have real file for library -lcrypto....
*** using a file magic. Last file checked: /home/myname/install/lib/libcrypto.dll.a

*** Warning: linker path does not have real file for library -lz....
*** using a file magic. Last file checked: /lib/libz.dll.a
*** The inter-library dependencies that have been dropped here will be
*** automatically added whenever a program is linked with this library
*** or is declared to -dlopen it.

*** Since this library must not contain undefined symbols,
*** because either the platform does not support them or
*** it was explicitly requested with -no-undefined,
*** libtool will only create a static version of it.
といわれます

ssl、crypto、zはaファイルのみでlaファイルがないためリンクが失敗してると思います
configureし直して、この三つのライブラリがリンクされないようにしたらdllが出力され
Since this library must not contain undefined symbols...も出なくなったのですが
aファイルしかないライブラリをlaファイル捏造とか以外の方法(オプションとか環境変数とか)で
libtoolによるリンクを成功させるにはどのようにすればよいでしょうか?

656:デフォルトの名無しさん
08/04/27 09:02:53
laファイル捏造が嫌なら libtool 自体を書き換えるしかないと思うが。

657:デフォルトの名無しさん
08/05/04 16:29:31
i686-elfがターゲットなbinutilsを作ったのですがgccにこれを使うよう指示する方法が分かりません

URLリンク(iwatam-server.dyndns.org)とかを見ると
オレオレbinutilsを使いたい場合gccも作らなくてはならない感じなのですがどうにかする方法はないでしょうか?

658:デフォルトの名無しさん
08/05/05 17:40:58
>>657
gccにはそういうオプションなどなかったと思うけど、
gcc -S でアセンブリソースを出して、
オレオレas でオブジェクトを作って、
オレオレld でリンクすればいいだけ。


659:デフォルトの名無しさん
08/05/05 18:40:18
specsのinvoke_asとlinker書き換えて -specs= で読ませりゃいいんでない?

660:デフォルトの名無しさん
08/05/06 12:21:35
高速に質の良さそうな乱数を取得する方法を探しております。
「Mersenne Twister」というのに行き当たったのですが、もっと高速なものを探していたところ、
「/dev/rand」というものがあるというのを知りました。
下記に関し日本語サイト探しているんですが、なかなか詳しいところが見つけられません。
 1./dev/randとはハードか何かで乱数作るんでしょうか?
 2./dev/randはWindowsで使うことは出来ますか?
  また使い方は?

661:デフォルトの名無しさん
08/05/06 12:26:41
乱数スレで質問すれば誰か詳しい人がいるかもしれないよ

662:デフォルトの名無しさん
08/05/06 12:36:14
>>661
そうですか。
ただマルチになると申し訳ないので、2〜3日寝かしてレス付かないようなら移動しますね。

663:デフォルトの名無しさん
08/05/06 13:36:56
>>657
-B prefix と -b target ジャマイカ?

664:デフォルトの名無しさん
08/05/06 15:46:41
>>660
もうすっかり忘れたけどrand()は線型合同法かなんかだっけ?
メルセンヌツイスタを見つけたならひと口に乱数と言っても
目的によって適不適があるというような注意書きを
メルセンヌツイスタの作者が書いてるのに行き当たったり
しているはずだが。

665:デフォルトの名無しさん
08/05/06 15:55:16
>>662
取り下げによる移動はマルチではない。
移動の方法としてはいくつか在るがたとえば
ここに、「〜〜(移動先URL)へ移動しました」などと書いたうえで
移動先に「〜〜(ここのURLとレス番)から誘導を頂きました」
とでも書いておけばその時点でマルチではなくなる。

666:デフォルトの名無しさん
08/05/06 16:06:09
乱数スレの住人ってバカばっかりだからなぁ

667:デフォルトの名無しさん
08/05/06 16:08:18
>>660
> 高速に質の良さそうな乱数を取得する方法を探しております。
目的を述べよ

>  1./dev/randとはハードか何かで乱数作るんでしょうか?

割り込み間隔とかネットワークのIO間隔等で乱数 seed を揺さぶり続けるため
品質的にはそれなりだが, 再現性のある乱数系列を取得することは不可能

>  2./dev/randはWindowsで使うことは出来ますか?

/dev/rand に相当するデバイスドライバを書けば OK

>   また使い方は?
fd = open("/dev/rand", O_RDONLY);
read(fd, random_buff, sizeof random_buff);


668:デフォルトの名無しさん
08/05/06 16:44:44
> /dev/rand に相当するデバイスドライバを書けば OK

ほら。もう、バカばっかり・・・

669:デフォルトの名無しさん
08/05/06 21:28:53
>>660
/dev/random
/dev/urandom
のこと? だったら、参考資料としてはこの辺とか。
URLリンク(www.linux.or.jp)
とりあえずCygwinなら使えるが、Linux等と同じ動作をしてるわけでは
ないと思われるため、品質や速度については不明。MinGWは知らん。

/dev/rand はぐぐってみると結構ヒットするけど、実在するの?

670:デフォルトの名無しさん
08/05/06 23:01:34
作ればできるよ。ああできるよ。何だってできるよ、作れば。

671:デフォルトの名無しさん
08/05/06 23:51:01
>>669
作ればあります。

672:デフォルトの名無しさん
08/05/07 03:08:41
作らんでもエイリアス張るだけちゃうん

673:デフォルトの名無しさん
08/05/07 12:09:13
WindowsにEGD移植されてないんだっけ?

674:デフォルトの名無しさん
08/05/07 16:19:35
すいません、MinGWにUTF-8を認識させるようにしたいのですが、そこらへん設定するにはどうすればよいでしょうか??
どなたか教えて頂けると幸いです。


675:デフォルトの名無しさん
08/05/07 16:23:27
>>674
MinGWに認識させるとは?
gccのオプション指定で入力エンコードと出力エンコードを指定するって話なら判るんだけど。

676:674
08/05/07 16:47:30
レスありがとうございます。

>> gccのオプション指定で入力エンコードと出力エンコードを指定するって話なら判るんだけど。
分かりにくくてすいません、そんな感じのことを言いたかったのでした。
コンパイル時のオプションで設定できたんですか。
調べたら
--input-charset, --exec-charset
など、出てきました。

ありがとうございましたm(_ _)m

677:デフォルトの名無しさん
08/05/07 19:08:07
不完全な質問にヒント程度のエスパー回答、そして解決報告
素晴らしい流れに心が洗われるようだ

678:デフォルトの名無しさん
08/05/07 22:24:33
URLリンク(sourceforge.net)
> Testing: gcc-4.3.0-20080502-mingw32-alpha

いきなり 4.3.0 ですかい

679:デフォルトの名無しさん
08/05/08 00:24:46
x64対応はまだかね?

680:デフォルトの名無しさん
08/05/08 21:00:27
おまいらソースを嫁
URLリンク(cygwin.com)
URLリンク(msdn.microsoft.com)(VS.85).aspx
各種外乱使った暗号論的擬似乱数っぽい

暗号論的に優秀なのとMCやなんかで優秀なのは違ったと思うんで
用途によるはずだがそのあたりは詳しく知らない

681:デフォルトの名無しさん
08/05/09 13:17:06
MinGWでのコンパイルってこの方法であってますよね?
コマンドプロンプトで、chdir ソースファイルが保存してあるディレクトリまでの絶対パスまたは相対パス
そしたら
ソースファイルが保存してあるディレクトリまでのパス>gcc ソースファイル.C -o ソースファイル.exe
これでコンパイルしてもエラーでるからコンパイルの方法が悪いのかなって思ったんだけどさ
ソースファイルは本通りに入力したはずだからあってるはず。
もうプログラミング挫折しそうです。

682:デフォルトの名無しさん
08/05/09 13:31:28
エラーを貼り付けないと回答のしようがない。
コマンドライン慣れてないならVisual C++ 2008 Express Editionや
Eclipse CDT使うのも手。

683:デフォルトの名無しさん
08/05/09 13:34:32
すいません
>>681の通りに入力して
gcc: installation problem, cannot exec `cc1plus': No such file or directory
と表示されます。


684:デフォルトの名無しさん
08/05/09 14:14:33
目的がプログラミングの学習で、
英語が全く分からない&英語を勉強する気はない
なら VC++ 使った方がいい。

685:デフォルトの名無しさん
08/05/09 14:14:45
そりゃめげるわな
URLリンク(zieaon.co.uk)
PATH通せ

686:デフォルトの名無しさん
08/05/09 15:22:57
ありがとうございます。
VC++ってC言語でもつかえるんですか?


687:デフォルトの名無しさん
08/05/09 15:29:17
使えるよ
でもスレ違い

688:デフォルトの名無しさん
08/05/09 15:35:34
おぉ そうなんですか!!
スレ違いになりますね;;
みなさんありがとうございました。
VC++で頑張ってみます

689:デフォルトの名無しさん
08/05/09 15:57:33
華麗にスルーされた俺カワイソス

690:デフォルトの名無しさん
08/05/09 16:23:16
大丈夫か?初心者にVCなんか勧めて。
どうせ今度は sprintf_s、strcpys、strcat_s・・・ でつまづくだろ。
オレなら Borland C++ Compiler を薦める。

691:デフォルトの名無しさん
08/05/09 18:13:24
gcc(ry

692:デフォルトの名無しさん
08/05/09 18:53:08
その前に日本語

693:デフォルトの名無しさん
08/05/11 01:38:33
mallocのインターポジショニングがしたいのですが
以下のようにやってもうまくいきません。
環境はWindowsVista+cygwinでgccは3.4.4です

---main.c---
#include <stdlib.h>
#include <stdio.h>

int main(void)
{
printf("start\n");
char* c = (char*)malloc(10);
return 0;
}

---malloc.c---
#include <stdlib.h>
#include <stdio.h>

void* malloc(size_t size)
{
printf("malloc\n");
return NULL;
}



694:デフォルトの名無しさん
08/05/11 01:39:53
これを以下のようにコンパイルしました
gcc -c -o testmalloc.o malloc.c
gcc -o main.exe main.c testmalloc.o
そして実行すると
./main.exe

4 [main] c 1924 sig_send: wait for sig_complete event failed, signal -34,
rc 258, Win32 error 0

とエラーになります。そのあとにstartと表示されます。
どこがまずいのでしょうか?

695:デフォルトの名無しさん
08/05/11 02:49:43
>>694
main()に入る前にmalloc()が呼ばれることもあるので、そういうハリボ
テ実装ではダメ。



696:694
08/05/11 04:02:19
>>695さんありがとうございます。
ハリボテは駄目とのことなので、
置き換えたmallocの中で本物のmallocを呼ぼうとしたのですが、
やり方がわかりませんでした。
ためしに以下のようにしてみたのですが、駄目でした。

---malloc.c---
#include <stdlib.h>
#include <stdio.h>

static void* (*malloc_org) (size_t size);


__attribute__((constructor))

void save_malloc()

{
printf("save_malloc\n");

// 本物mallocを保存。
  malloc_org = (void*(*)(size_t)) dlsym((void*)-1L, "malloc");

}

void* malloc(size_t size)

{
printf("malloc\n");
return malloc_org(size);

}

697:694
08/05/11 04:05:44


gcc -c -o testmalloc.o malloc.c
gcc -o main.exe main.c testmalloc.o
./main.exe

ここで、save_mallocと出るよりも前に
mallocと表示され、そこで前回と同じ症状となりました。
何かよい方法はないでしょうか?




698:デフォルトの名無しさん
08/05/11 10:15:40
Cygwinだよね?

 ソ ー ス 嫁

そうすれば malloc などの置き換えのために何をすればいいかわかってくる。
ただ、今回は malloc の書き直しが目標なのではないだろう?
ヘッダ・ソースから内部構造体を調べて、ヒープヲークする程度で充分なんでは?

> ここで、save_mallocと出るよりも前に
> mallocと表示され、そこで前回と同じ症状となりました。

オリジナルの malloc を"セーブ"することには意味がないよ。
むしろ malloc_org が初期化されていない場面があるってことだから
DLLから都度ポインタ得ても同じこと。
そして、DLL内部で完結している malloc を、この方法で
置き換えることは困難(つーか不可能)だ。
(たとえば strdup の内部 malloc 呼び出しをこの方法で乗っ取れるか
どうか実験してみるといい)

699:デフォルトの名無しさん
08/05/11 13:03:46
動作確認してないけど、こんなのどう?

---main.c---
#include <stdlib.h>
#include <stdio.h>

void* (*unko) (size_t size);
#define malloc unko
int main(void)
{
  printf("start\n");
  char* c = (char*)malloc(10);
  return 0;
}

---unko.c---
#include <stdlib.h>
#include <stdio.h>

void* unko(size_t size)
{
  printf("malloc\n");
  return malloc(size);
}

700:デフォルトの名無しさん
08/05/12 20:31:43
既にCygwin環境があるWindowsで、「他者のCygwin環境でWindowsに移植されたソフトウェア」を実行しようとすると
cygwin1.dllのバージョンの差異でエラー(fatal error - system shared memory version mismatch detected)が発生します。
既にCygwin環境があるWindowsで、それぞれが独立した形(スタンドアロン)として実行する最善の方法をご教授ください。

701:デフォルトの名無しさん
08/05/12 22:01:14
>>700
Cygnusにコンサル料払え。

702:デフォルトの名無しさん
08/05/12 22:32:49
>>700
Cygwin のバージョンを合わせるしかないんじゃね?

703:デフォルトの名無しさん
08/05/12 22:34:07
MinGWで移植できないか考える

704:デフォルトの名無しさん
08/05/12 23:33:16
>>700
かたっぽのCygwin1.dll消すんじゃあかんの?

705:デフォルトの名無しさん
08/05/13 00:09:35
>>700
その他者の移植したソフトウェアと一緒に他者のCygwin環境のcygwin1.dllを貰ってきて
そっちがロードされるようにして起動すればいいんでない?

706:700
08/05/13 02:54:02
具体例を書いておいたほうが良かったか・・・。質問やり直し。

URLリンク(blogs.windowsnetworking.com)
こういうスタンドアロンで使う事を目的としたcygwin環境を含むソフトウェアを
CygwinがインストールされてるWindowsにインストールすると、ソフトウェア同梱のcygwin1.dllよりも先に
パスが通ってるディレクトリにあるcygwin1.dllを読みに行こうとします。

バージョンの差異で起動できないのは表示されるエラーメッセージで明白なので、
早い話パスが通ってるディレクトリにあるcygwin1.dllを、同梱されてるcygwin1.dllで上書きすればいいんですが、
ソフトを使うたびにファイルを入れ替えやらをしていたら、バイナリ配布がやり易いWindowsの特権がryという話です。
# そもそも、入れ替えするくらいならソースを持ってきてコンパイルした方が早い。

そこで、>>705にある「そっちがロードされるようにして起動」の部分が知りたいと思いました。
オープンソースの恩恵を受けてるユーザだと、結構ぶち当たる問題かと思い、こちらで質問しました。
物理的にDLLを入れ替える方法しかない場合は、大人しくソースからコンパイルしマス。

707:デフォルトの名無しさん
08/05/13 06:10:22
いやだから、お互いのCygwinのリビジョンを合わせればいいって話じゃないの?


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4776日前に更新/237 KB
担当:undef