[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 01/06 13:57 / Filesize : 237 KB / Number-of Response : 832
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Cygwin + MinGW + GCC 相談室 Part 3



1 名前:デフォルトの名無しさん [2007/04/30(月) 23:52:47 ]
Windows上で動作するフリーの開発環境 CygwinとMinGWに関する相談スレッドです。

過去スレ:
cygwin + mingwn + gcc 相談室 Part2
pc11.2ch.net/test/read.cgi/tech/1126103347/
cygwin + mingwn + gcc 相談室
pc8.2ch.net/test/read.cgi/tech/1058134693/

関連サイト:
Cygwin www.cygwin.com/
MinGW www.mingw.org/

関連スレッド:
GCCについて part7
pc11.2ch.net/test/read.cgi/tech/1145357824/
【激遅】AppleGCC【絶望】
pc11.2ch.net/test/read.cgi/tech/1173267844/


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

詳しく

621 名前:619 mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 18:56:36 ]
つMakefile

623 名前:619 mailto:sage [2008/04/14(月) 19:05:56 ]
レスありがとうございます。

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


624 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 19:11:17 ]
環境変数使うってのは?

625 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 19:12:55 ]
もしくは、$1とかでファイル名渡すとか?

626 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん [2008/04/14(月) 22:31:52 ]
>>619
ふつうにバッチファイルじゃいかんの?

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

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

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

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


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

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

631 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 00:39:07 ]
野球で振り回すあれでしょ?

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


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

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

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

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

637 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 14:39:32 ]
両方入れて、自分で比較した方がいいんじゃないの?

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



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

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


642 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 04:21:48 ]
>>642
alias 打って実際の登録状況を見るとか。
set -x して実際に起動されたプロセスの引数を確認するとか。

644 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 08:40:49 ]
.bashrcに echo hello とか入れてみれば読まれてるかどうか分かるんじゃ?

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

>>644
www.google.com/search?q=cygwin+bashrc+%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%81%BE%E3%81%AA%E3%81%84

647 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 09:05:36 ]
【質問】 Xfce4を利用できない
【希望】 Xfce4デスクトップ環境を利用したい
【やったこと】
www.compuspec.net/reference/os/cygwin/installation.shtml
上記のサイトを参考にしました。

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

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

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

648 名前:デフォルトの名無しさん mailto:sage [2008/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 x.cygwin.com/docs/faq/cygwin-x-faq.html 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のカーソル(×印)が表示されて停止
# img224.echo.cx/img224/5445/cygwin5bh.jpg



649 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 09:19:24 ]
理想
ttp://blawat2015.no-ip.com/~mieki256/diary/img/20050224_weirdx_screenshot_03.gif

650 名前:デフォルトの名無しさん [2008/04/20(日) 22:10:32 ]
ttp://www.geekpage.jp/programming/c/helloworld.php

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

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

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

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

654 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 22:37:48 ]
>>651
解決しました
ありがとうございました

655 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 09:02:53 ]
laファイル捏造が嫌なら libtool 自体を書き換えるしかないと思うが。

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

ttp://iwatam-server.dyndns.org/hardware/h8comm/doc/CrossDevel-jp.html/ch-inst.htmlとかを見ると
オレオレbinutilsを使いたい場合gccも作らなくてはならない感じなのですがどうにかする方法はないでしょうか?

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




659 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 18:40:18 ]
specsのinvoke_asとlinker書き換えて -specs= で読ませりゃいいんでない?

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

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

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

663 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 13:36:56 ]
>>657
-B prefix と -b target ジャマイカ?

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

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

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

667 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん [2008/05/06(火) 16:44:44 ]
> /dev/rand に相当するデバイスドライバを書けば OK

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



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

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

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

671 名前:デフォルトの名無しさん [2008/05/06(火) 23:51:01 ]
>>669
作ればあります。

672 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 03:08:41 ]
作らんでもエイリアス張るだけちゃうん

673 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 12:09:13 ]
WindowsにEGD移植されてないんだっけ?

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


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

676 名前:674 mailto:sage [2008/05/07(水) 16:47:30 ]
レスありがとうございます。

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

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

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

678 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 22:24:33 ]
ttp://sourceforge.net/forum/forum.php?forum_id=820558
> Testing: gcc-4.3.0-20080502-mingw32-alpha

いきなり 4.3.0 ですかい



679 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 00:24:46 ]
x64対応はまだかね?

680 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 21:00:27 ]
おまいらソースを嫁
cygwin.com/cgi-bin/cvsweb.cgi/src/winsup/cygwin/fhandler_random.cc?rev=1.36&content-type=text/x-cvsweb-markup&cvsroot=src
msdn.microsoft.com/en-us/library/aa379942(VS.85).aspx
各種外乱使った暗号論的擬似乱数っぽい

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

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

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

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


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

685 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 14:14:45 ]
そりゃめげるわな
zieaon.co.uk/MinGW-cc1plus.html
PATH通せ

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


687 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 15:29:17 ]
使えるよ
でもスレ違い

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



689 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 15:57:33 ]
華麗にスルーされた俺カワイソス

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

691 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 18:13:24 ]
gcc(ry

692 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 18:53:08 ]
その前に日本語

693 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 02:49:43 ]
>>694
main()に入る前にmalloc()が呼ばれることもあるので、そういうハリボ
テ実装ではダメ。



696 名前:694 mailto:sage [2008/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 mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 10:15:40 ]
Cygwinだよね?

 ソ ー ス 嫁

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

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

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



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

701 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 22:01:14 ]
>>700
Cygnusにコンサル料払え。

702 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 22:32:49 ]
>>700
Cygwin のバージョンを合わせるしかないんじゃね?

703 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 22:34:07 ]
MinGWで移植できないか考える

704 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 23:33:16 ]
>>700
かたっぽのCygwin1.dll消すんじゃあかんの?

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

706 名前:700 mailto:sage [2008/05/13(火) 02:54:02 ]
具体例を書いておいたほうが良かったか・・・。質問やり直し。

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

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

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

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

708 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 10:57:44 ]
>>700
.local とか .manifest を用意すればOK。




709 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 17:23:58 ]
>>706
そのソフトってcygwinのシェルから起動するのか?
だとしたらパスの順番変えて付属のdllが先に見えるようにして起動すれば済む気がするけど…

そうじゃないとしたら普通にcygwinをインストールした場合cygwin1.dllのある
ディレクトリにパスが通ったりはしない(Windowsの環境変数の方のPATHね)からそんな
問題は起こらない気がする…

710 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 02:26:23 ]
挑発しているのでもなんでもなく
残念だがvirtualboxを使って複数のOSをシームレスに同居させられる今
わざわざcygwinを使う意味がまったくわからない。
古い Win環境でもcygwin使うより快適だよ

試していないならやってみるべきだと思うな。

711 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 04:12:26 ]
なるほど、仮想マシンに Linux 入れてクロスコンパイル用
のgccを用意してwin32用のバイナリを開発するということだな?
確かに快適だろうがその環境を作れるやつがどの程度いるのか…
# ここは一応 GCC のスレらしいよ?

712 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 06:00:07 ]
単にWindowsアプリケーションでPosixAPIを使いたいだけです

713 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 07:27:36 ]
単にシームレスにUnix系ツールを使いたいだけです。

714 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 11:13:00 ]
単にWin上でGCC系コンパイラーを使いたいだけです
Cygは使ってませんし

715 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 13:36:32 ]
>>712
つ Cygwin

>>713
つ MSYS

>>714
つ MinGW

716 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 13:49:31 ]
それ全部このスレの話題だよな。

717 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 17:46:54 ]
そもそもmsysってcygwinから派生したものだろ・・・

718 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 17:59:09 ]
敢えてWindows Services for UNIX



719 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 00:43:41 ]
>>718
それなんてWine

720 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:52:12 ]
CygwinもColinuxもSFUもWineも微妙…
もっとwinとUNIXとが渾然一体になってるような
ハイブリッドカーネルみたいなんは無いもんか……







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<237KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef