[表示 : 全て 最新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/


331 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 00:48:57 ]
realpathでいいじゃん

332 名前:328 mailto:sage [2007/12/14(金) 01:38:32 ]
>>331
おおおお まさしくこれです
ありがとうございます

333 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 17:12:16 ]
これでx−window動かしたいんですけど
手順教えてください。

334 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 17:18:36 ]
板違いになるから
Windows板のCygwinスレか
pc11.2ch.net/test/read.cgi/win/1175419995/l50
Unix板のCygwinスレでやってくれ
pc11.2ch.net/test/read.cgi/unix/1184677144/l50

335 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 17:36:12 ]
すみませんでした

336 名前:デフォルトの名無しさん [2007/12/18(火) 13:44:38 ]
www.mingw.org/MinGWiki/index.php/mingw%20hosted%20cross%20compiler
を参考にしてクロスコンパイラを生成しようとしていますが、問題が2つ出てきました。

環境はbuild-system = host-system = i386-pc-mingw32でtarget-system = arm-unknwon-elf (arm7tdmi)です。

1.本当に成功したのかわからない(Build and installing the c compiler)
サイトにはmkfixinc.shをi?86-*-mingw32*からi?86-*-armにしろと書いてありましたが、
fixincでmakeエラーになったのでarm-*-elf*に変更してやったらmake installまで成功しました。
しかし、インストール先のフォルダを見ると直下のincludeフォルダが空になっています。
fixincはどうやら、includeファイルを生成するもののようなのですが、これは成功なのでしょうか?

以下スクリプトを一部書き換えたところです。
$SRCDIR/configure \
--with-gcc --with-gnu-ld --with-gnu-as --host=mingw32 --target=arm-elf --with-cpu=arm7tdmi
-with-newlib --prefix=$prefix --enable-threads --disable-nls --enable-languages=c,c++
--disable-win32-registry --disable-shared --enable-sjlj-exceptions --enable-libgcj
--disable-java-awt --without-x --disable-libgcj-debug --enable-interpreter
--enable-hash-synchronization --enable-libstdcxx-debug 2>&1 | tee
gcc_configure.log

make all-gcc CFLAGS="-O2 -pipe" CXXFLAGS="-O2 -pipe" LDFLAGS=-s | tee
make-c-only.log 2>&1

成功するがインストール先フォルダ直下のincludeフォルダは空になっている。

2は次をご覧ください。

337 名前:デフォルトの名無しさん [2007/12/18(火) 13:49:41 ]
2.newlibのmakeが失敗する
これも>>336で言ったサイト(Building and installing newlib)を参考にしています。
そのシェルスクリプトをそのまま実行しました。
しかしmakeでエラーになってしまいます。
make[3]: Entering directory
`/home/(UserName)/build/arm-elf/ARM7TDMI/newlib/etc'
/C/msys/1.0/home/(UserName)/newlib-1.15.0/missing
makeinfo --split-size=5000000 --split-size=5000000 --no-split -I/C/msys/1.0/home/(UserName)/newlib-1.15.0/etc
-o standards.info
/C/msys/1.0/home/(UserName)/newlib-1.15.0/etc/standards.texi
WARNING: `makeinfo' is missing on your system. You should only need it if
you modified a `.texi' or `.texinfo' file, or any other file
indirectly affecting the aspect of the manual. The spurious
call might also be the consequence of using a buggy `make' (AIX,
DU, IRIX). You might want to install the `Texinfo' package or
the `GNU make' package. Grab either from any GNU archive site.
make[3]: *** [standards.info] Error 1
make[3]: Leaving directory
`/home/(UserName)/build/arm-elf/ARM7TDMI/newlib/etc'
make[2]: *** [info] Error 1
make[2]: Leaving directory
`/home/(UserName)/build/arm-elf/ARM7TDMI/newlib/etc'
make[1]: *** [all-etc] Error 2
make[1]: Leaving directory `/home/(UserName)/build/arm-elf/ARM7TDMI/newlib'
make: *** [all] Error 2

WARNINGに書かれているようにTexInfoを
sourceforge.net/project/showfiles.php?group_id=2435
からダウンロードしてインストールしても変わりませんでした。どうかよろしくお願いします。

338 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 15:25:46 ]
sourceforge.net/project/showfiles.php?group_id=114505&package_id=124206&release_id=434286
DS用のビルドスクリプトだけど
多分、いや確実に参考に出来る

339 名前:sage [2007/12/18(火) 16:43:26 ]
>>328さん、ありがとうございます。早速試してみたいと思います。



340 名前:sage [2007/12/18(火) 16:43:54 ]
>>338さんでした。。。

341 名前:337 [2007/12/19(水) 11:41:12 ]
>>338さんから教えていただいたシェルスクリプトで、c compilerのインストールまでは
完了したのですが、newlibのmakeで>>337と同じくエラーになってしまいました。
newlibをMinGW(WinXP)のmakeの方法を知ってらっしゃる方、よろしくお願いします。

342 名前:デフォルトの名無しさん [2007/12/19(水) 17:18:00 ]
dllからのC++例外をexe側で捕捉できないでしかもhangupするのは仕様ですか?
dllとexeはともにcygwinのg++で作ったものです

ちなみに例外のthrowとcatchがexeで完結してるならちゃんと捕捉できます

343 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 22:46:12 ]
>342
これが Cygwin にも適用されるかどうかはわからないけど
ttp://gcc.gnu.org/faq.html#dso

344 名前:デフォルトの名無しさん [2007/12/22(土) 10:35:01 ]
MinGW使ったんだけどsys/ioctl.hとかのヘッダーがないけど、
これってMinGWがまだ不完全だからってこと?
それともどっかに落ちてるのを適当に拾って入れればいいの?

345 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 11:49:24 ]
wikiから
>MinGWの名称はMinimalist GNU for Windows(Windowsのための最小限度の
>GNUの意)を表わす。
>CygwinはLinuxや他のUNIXシステムに見られるような、Windows上に完全な
>POSIX層を提供することを目標にしており、互換性のために必要であれば性能も
>犠牲にしている。一方でMinGWはフリーのコンパイラと各種ツールのみを行い、
>性能を重視している。
>MinGWはPOSIX APIを提供していないので、Cygwinでコンパイル可能だが
>MinGWでは可能で無いUnixアプリケーションが存在する。

346 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 20:06:51 ]
つまり、ioctl使いたかったらcygwin使っとけってこと。

347 名前:デフォルトの名無しさん [2007/12/24(月) 11:04:13 ]
sourceforge.net/project/showfiles.php?group_id=2435
SourceForgeのMinGWダウンロードのところのソースファイルをダウンロードして自分でmake installしようとしたんだけど、
makeで必ず失敗する。
WinXPでMinGW環境だとだめってこと?
なんでMinGWのダウンロードのところにあるのにmakeができないの?俺だけ?
i386用のバイナリがあるからそれ使えっていうのもわかるけど、
ちょっとバージョンの新しいのを入れたいからmakeしようとしたら全然だめ。
確認のため、今すでにMinGW版としてあるやつのソースもmakeしたら全然だめ。具体的にはTexInfoね。
これどうゆうこと?

348 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 11:31:14 ]
エラーメッセージが理解できるようになってから来てください

349 名前:デフォルトの名無しさん [2007/12/24(月) 11:51:51 ]
エラーメッセージくらいわかってるよ。
でもMinGWにはないヘッダーとか使ってるソースがMinGWにあるんだぜ?
しかもバイナリ形式もあるんだぜ?
おかしくない?
それとも俺が何か入れ忘れてるの?



350 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 11:58:02 ]
入れ忘れてんじゃネーの?
makeに必要な環境がなかったらmakeは通らんだろ。

351 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 12:25:24 ]
> でもMinGWにはないヘッダーとか使ってるソースがMinGWにあるんだぜ?

なにも不自然な点は見受けられないんだが

352 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 12:58:36 ]
「環境を構築するための資源」と、「環境を利用するための資源」は違うんだぜ。

353 名前:デフォルトの名無しさん [2007/12/24(月) 13:07:03 ]
それってどっかからライブラリなりヘッダーなりを調達する必要があるときはあるってこと?
それってMinGW用とかじゃなくて適当なところから持ってきて適当に追加すんの?
具体例とかあるとわかりやすくてうれしいんだが。

354 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 14:34:58 ]
適当ってなんだよ適当って。
MinGW側でパッチが必要なものはMinGW側に置いてあるだろうし、
置いてないものはGNUサイトとかミラーからでも拾って来ればいいだろう常識的に考えて。

355 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 14:52:57 ]
README.devとINSTALL.genericは読んだのか?
configureはちゃんと通ってるのか?
根本的に、スキルが足りないんじゃないのか?

356 名前:デフォルトの名無しさん [2007/12/24(月) 15:13:53 ]
すまん。もしかしてmsysDVLPRを入れてなかったからなのか?
とりあえずやってみるが、うまくいかなかったらフォローしてくれ。

357 名前:デフォルトの名無しさん [2007/12/24(月) 17:24:42 ]
www.mingw.org/MinGWiki/index.php/MSYSBuildEnvironment
とか読んでみたんだが、よくわからん。
とりあえずmsys直下にmsysDVLPRを解凍していれてやればいいみたいなんだが。
このmsysDVLPRもgcc-libの中にexeがあったりして、これでいいのかとよくわかんない。
それと.profileを編集するようなんだが、これもよくわからん。
くれくれ君ですまないが、誰か知ってる人正しいmsysDVLPRの入れ方とかmsysBuild環境の作り方教えテルミー。

358 名前:デフォルトの名無しさん [2007/12/24(月) 17:26:34 ]
それと適当に入れてbashのmakeをINSTALL.MSYSにならってしてみたんだが、cc1.exeが-fnative-structというオプションがわからんとか言ってエラーになった。
やっぱり環境構築がおかしいんだろうか。詳しい人たのむ。

359 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 19:17:58 ]
あのさ、一々アゲて「俺、ソースmake初挑戦日記」書くの止めてくんないかな。
そういうのは、mixiでやってくれ。冬休みに入ったのはわかったから。



360 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 11:09:03 ]
>>347

TexInfoのロケールの問題で引っかかってるんじゃない?
以前俺がBuildしたときは、それでエラーになってた。

そんときは LC_ALL=C でBuildしたら通った。


361 名前:デフォルトの名無しさん [2007/12/25(火) 12:12:18 ]
>>360
すまん。今MinGW/MSYS環境を作り直してるところでそのレベルに行ってない。
昨日適当な環境でTexInfo4.9をmakeしてみたんだがinclude/pwd.hの65行目がおかしいとかいって終了した。
今は正しい環境づくりのため、>>357であげたサイトを調べてる。
正直英語は辛い。訳も半分ぐらいしたが、なんかあやしげ。
msysDVLPRってmsysとmsysDTKをインストールしたあとにそのインストールしたフォルダに入れればいいんだろうか?
それともmsysDVLPRだけでいいんだろうか?
訳してみるとmsysDVLPRだけっぽいんだが、実際としてはmsysインストールしてから追加インストールするものだと思う。
TexInfoとかのビルドが成功した人はどんな風にMSYS環境を作ったのか教えてほしい。

362 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 12:52:23 ]
>>361

基本的にはMSYSとmsysDTK入れただけだな。
あとは msys用bisonとflex入れた程度

mingwはlibiconv入れた



363 名前:デフォルトの名無しさん [2007/12/25(火) 13:06:24 ]
>>362
環境はWinXP?
俺はMinGW Download pageにあるTexInfo4.11すらビルド失敗。

364 名前:デフォルトの名無しさん [2007/12/25(火) 14:48:20 ]
mingwのgccのmingw-local patchesって何処にあるの?

365 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 15:40:08 ]
>>363

うん。 WinXP

TexInfoのBuildは、いろいろ入れないとできなかった気がするんで、
うちはバイナリをダウンロードしてきて入れた。

TexInfo入れずに configureしてBuildできなかったっけ?
このTexInfo関係はドキュメント作成するのに必要なだけなんでスキップしても
問題ないんだけどね。


366 名前:デフォルトの名無しさん [2007/12/25(火) 16:04:10 ]
>>365
うん。俺もドキュメントだから関係ないと思ったけど、
やっぱりみんなが(外人とか)当たり前にビルドしてるのに
できないのが、なんか納得いかなくてな。
それにTexInfoのバージョンあげないと、他のツールをビルドするときにMakefileとかを
強制的に書き換えないといけないのが、なんか嫌だったんだ。
とりあえず今はbashのMinGW Download pageにおいてあるやつをビルドしようと思ってるんだが、
INSTALL.MSYSとか読むと
www.mingw.org/MinGWiki/index.php/MSYSBuildEnvironment
が必要らしんだな。でも英語得意じゃないからそれっぽくやってみてもうまくいかないし。
正直もうお手上げ状態だ。英語をちゃんと理解できればいいんだがな。愚痴っぽくなってすまん。

367 名前:デフォルトの名無しさん mailto:sage [2007/12/25(火) 16:21:08 ]
mingwにあるtexinfo-4.11は
adaのgnat_ugn__unw.texiでエラーでるんでtexinfo-4.8使ってるんだが
これは正常なの?

368 名前:デフォルトの名無しさん [2007/12/26(水) 14:17:32 ]
誰か頼むからWinXPでMinGW5.13とMSYS1.0.10とmsysDTK-1.0.1入れてbash3.1のソースとか
をビルドできるか試してくれ。
俺はできないと思う。
msysDVLPRも入れてみたがだめだった。えろい人たのむ。

369 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 14:41:02 ]
とりあえずあきらめて悟りを開くかCygwinに乗り換えるかしれ。
立てよ国民!gcc -mno-cygwin!!



370 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 14:59:08 ]
いや俺はあきらめたくない。
mingw-usersとかのメーリングリスト見てるとみんな当たり前にやってんだぜ。
英語が苦手なだけでMinGWを利用できないなんて悔しくてやだ。
でも解決策はわからん。

371 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 15:16:57 ]
どこの中二病患者?

372 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 15:27:33 ]
英語もダメ。スキルもない。出来ないと暴れる。最悪だな。

373 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 15:38:52 ]
>>370
そろそろウザイって言われてることにさっさと気づけよ、邪魔なんだよ。

374 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 15:54:43 ]
お前らだってできねーんだろ?

375 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 15:55:15 ]
煽っても無駄なのにね

376 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 16:02:33 ]
>>368

なんでUNIX系シェルとか依存性の強い物をBuildしようとするかな・・・
たぶんMingw用のglibcヘッダとかライブラリが必要だと思うよ。

たしかどっかにあったはず。

あと binutilとかバグがあるバージョンもあるから、そのあたりも変えてみたら。
binutilは上記のものとかなくてもbuildできるはず。


377 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 17:04:33 ]
ごめんな。感情的になってしまった。
確かに俺は頭悪いが、>>368みたいに親切なやつもいるから
またがんばるよ。

378 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 17:33:01 ]
いみふめい

379 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 17:47:15 ]
>>368
暇だからビルドしてみた。
msysDVLPRとbisonとflexを追加。
www.mingw.org/MinGWiki/index.php/bug-termios_h
このバグでちょっとハマった。
おしまい。



380 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 17:51:13 ]
っていうかここに全部書いてあった。
www.mingw.org/MinGWiki/index.php/Build%20bash
このページすら読めないようならまず英語の勉強した方がいい。

381 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:10:50 ]
おお、みんなありがd。
>>379
俺もこれはやった。msys/includeじゃなくてmsys/lib/gcc-lib/...の方をこれで直して少し進んだんだが、
そのあとやっぱり失敗した。
>>380
俺もそれは読んだよ。gnuwin32のflexとbisonいれてtermiosも>>379のように修正。
だがだめだった。
www.mingw.org/MinGWiki/index.php/MSYSBuildEnvironment
ここがちゃんと理解できてないからなのかだめだ。

>>376
glibcのmingwバージョン探してるが、みつからない。


382 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 18:27:51 ]
>>379
どのツールのビルドした?
あとmsysDVLPRだが、以下に書く手順であってるか知りたい。
MinGW5.13、msys1.10.11、msysDTKをインストーラからインストール。
msysDVLPRをtar -zxvf msysDVLPR-1.0.0-alpha-1.tar.gzでmsys/1.0直下から展開。
それと.profileを
if [ $MSYSTEM == MINGW32 ]; then
export PATH=".:/usr/local/bin:/bin:$PATH"
else
export PATH=".:/msys/bin:/usr/local/bin:/bin:$PATH"
fi
といじって、そのごmsysdvlprシェルを起動して白いmsysコンソールからビルド。
違うところがあったら教えてくれ。

383 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 19:05:38 ]
はっきり言ってチョーウザイ。
日記はmixiでやれって言ってんの。
おまいには無理、それでいいだろ。

384 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 09:57:36 ]
>>382

念のために書いておくけど、ちゃんと

./configure

してからmakeしてるよな?
まぁ基本的なことだから大丈夫だとは思うが。

それから msysDVLPRを MinGW5.13の上に上書きするのはちとマズいかもな。
msysDVLPRにも gcc及びライブラリが入ってるから。

385 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 10:16:22 ]
もちコース。./configure、make、make installぐらいは知ってるぜ。
msysDVLPRはmsysの方に入れてるんだがこれって間違い?
MinGWiki読むとmsysの方に解凍してるみたいだが。

386 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 10:18:12 ]
でもbashのビルドはINSTALL.MSYSにしたがって、一応msysrlsbldっていうスクリプトやってるけどな。
中身は結局configure、makeみたいな感じだ。

387 名前:デフォルトの名無しさん [2007/12/28(金) 23:45:45 ]
Mingwでソケットを使おうとしたら使えない!
インクルードファイルがみあたらないのですがなんででしょう・・・。

388 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 01:14:53 ]
MinGWなんだからwinsock使えよ…

389 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:43:17 ]
基本的過ぎる質問だと思うのですが
検索してもわからなかったので書き込ませて頂きます

cygwinのgccを使ってC,やC++の開発を行うときのライブラリは
やはりcygwinのそれっぽいのをとってくるんでしょうか?

それとも別のIDEからライブラリ部分を持ってきたりするんでしょうか?

windows.h 関係が欲しいのですが
通常はどこで手に入れるものなんでしょう?



390 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 02:53:46 ]
w32api

391 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 08:17:47 ]
>>390
ありがとうございます。適当に必要なものとどこからでも良いので
とってくればOKなんでしょうか?

とりあえずcppunitとw32api(3.9-1)をcygwinのsetup.exeからインストールしたんですが
cygwin\lib\w32api 配下に windows.h が存在せず
どこから手に入れればよいのか困っています

「普通はここから持ってくる」そんな場所はありますか?

392 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 08:27:55 ]
どんなオプションを選んだかなんて覚えていないけど、
特に何もしなくても<windows.h>をインクルードできるし、
特にライブラリ指定しなくてもWin32 API使えている。

393 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 10:50:40 ]
$ find /usr/include -name windows.h
/usr/include/w32api/windows.h


394 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 11:05:03 ]
>>391はなんでヘッダファイルをlib配下でのみ探したのだろう

395 名前:389 mailto:sage [2007/12/30(日) 17:38:53 ]
>>392
何が違うんでしょうか…? 俺にはさっぱりです
>>393-394
それは>>389がアホだからに他ならないわけで…。
…ありがとうございました
わからなかったのでPSDK入れようとしてました。


結局こんな感じでコンパイルしたら動きました
g++ test.cpp -I/usr/include -I/usr/include/mingw -v

includeされているパスが色々出てきて
それらがどこで設定されてるのかがイマイチわかっていませんが
おいおい調べていくことにします

396 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 17:57:30 ]
>>395
/usr/include と /usr/include/mingw を一緒に使うのはどうかと思う…
ってかこの辺は解り難いとこなんだけど cygwin の gcc には使うlibcに応じて
2つモードがあるんよ.
- cygwinの提供するPOSIX APIを使う通常の cygwin のモード
- POSIX の API を使わずに Win32 API だけを使ってプログラムを書くための MinGW モード
gcc に -mno-cygwin オプションを付けると後者のモードになって /usr/include/mingw
ってのはその場合に使われるヘッダが入ってるのね。なので両方参照する必要はないはずなのよ?
それぞれのメリットやデメリットは…まぁ適当にぐぐってくださいね。

397 名前:389 mailto:sage [2007/12/30(日) 19:07:24 ]
>>396
なるほど解説ありがとうございます。

初めに /usr/include だけを使った所 windows.h が読み込めて
その後に #include <tchar.h> する必要があったので /usr/include/mingw を読み込んでました。
/usr/include/mingw のみ -I すればコンパイルできました。

-mno-cygwin をつけるだけでもOKなのも確認しました。
クロスコンパイルやらなんやらの問題みたいですね。
とりあえず色々眺めてみることにします


398 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 20:04:19 ]
>397
POSIX API を使うつもりがなくいなら -mno-cygwin を付けた方が
cygwin1.dll をリンクしないでいい分ライセンスとかいろいろ楽。
作りたいアプリケーションに応じて選んでくれ。

399 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 20:20:31 ]
POSIX APIを使わないつもりがなくいときはどうしたらいいでしょう。



400 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 20:43:54 ]
gccでデバッグオプション(-g -O0)を付けてコンパイルしたいのですが、
いったいどうやればいいのでしょうか?
いまのところはMakefile.amのINCLUDE変数に'-g -O0'を追加しているのですが、
明らかにおかしいので正しいやりかたを教えていただきたいのです。
環境はubuntu + gcc + autotoolsです。

(Linux板も探したのですが、適当なスレが見つけられなかったため
こちらに質問させていただきます)

401 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 21:02:09 ]
大抵のMakefileなら、CFLAGS辺りに書けばよさそうだが。

402 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 21:35:22 ]
autotool なら環境変数から引っ張ってきてるよね
CFLAGS="$CFLAGS -g -O0" ./configure
俺はこうして使ってるけど

403 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 21:35:26 ]
>>400
この場合 Autoconf/Automake/Libtool スレあたりが適切かな…?

404 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 21:49:40 ]
>>401
そうですよね

>>402
CFLAGS="$CFLAGS -g -O0" ./configure
のやりかたでできました。
ありがとうございました。

>>403
すいません。次から気を付けたいと思います。

405 名前:デフォルトの名無しさん mailto:sage [2007/12/31(月) 02:00:32 ]
よくあるのは configure に --enable-debug 付けると
デバッグオプションが付くように作ってあるとかかなぁ

406 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 20:05:29 ]
wxWidgetsをリンクするために
'wx-config --cppflags'の出力されたものを
作成ファイルのMakefile.am内オプションに追加したいのですが
いったいどうやればいいのですか?

何度か同じことをする必要があるので
共通の変数か何かに設定できるとうれしいのですが。
(他のスレでも聞いたのですが、全く反応が無いのでマルポしています)

407 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 20:42:20 ]
>>406
wc-config の出力結果を Makefile.am に書いたら意味ないだろw
configure.in を書いて configure 実行時に wc-config を実行してその結果
がMakefileの変数CXXFLAGSやLIBSに展開されるようにしてやればいいんじゃね?
あと autotools の使い方を基本から勉強しなおしてくれ。
そもそも autotoolize する必要があるのかってところから見直すといいかもしれん。

408 名前:407 mailto:sage [2008/01/01(火) 20:43:27 ]
wc-configってなんだ… wx-config ね

409 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 23:42:35 ]
>407
ありがとうございます。

> Makefileの変数CXXFLAGSやLIBSに展開されるようにして
これはいったいどうやればいいのでしょうか?
configure.inに
 WXCXXFLAGS = 'wx-config --cppflags'
 AC_SUBST(WXCXXFLAGS)
とやってもなしのつぶてで全く効果がありません。

あとautotoolsに関してなのですが、自分はもともとVCを使っていて
linuxでコンパイルする必要が出てきたので最近になってautotoolsを使い始めました。
なので残念ながらautotoolsをほとんど知りません。

これを使っているのは、いろいろなプロジェクトで
configureファイルを見かけるからなのですが
これを使わないとしたら他にどのようなツールが考えられますか?
自分はmakeをそのまま使うかbjamなどが思いつくのですが、
どれを選ぶにしろ大変そうで困っています。
ある程度ポータブルで分かり易いツールであればなんでもいいのですが、
良さそうなものがあれば紹介して頂きたいくらいです。

ちなみに、このプロジェクトのコンパイルに必要な手順は
1、プロジェクトに添付された(小さめの)外部ライブラリのソースからスタティックライブラリを生成
  (この際、wxWidgetsが必要になるものもあります)
2、それらとライブラリのソースから一つのダイナミックライブラリを生成
3、最後に、メインプログラム(というかテストプログラム)をDLLをリンクして生成
と少し複雑です。



410 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:29:31 ]
他のスレでもって、wxスレでもautoconfスレでも見かけなかったなぁ
まぁ別にどこでもいいんだけど

411 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 09:11:52 ]
探したら pc11.2ch.net/test/read.cgi/tech/1148393695/ にいた…
>>409
基本的に広い範囲で移植性を確保しようと思ったら大変なのはどのツール使っても同じなの
はその通りなんだけど、どの程度の移植性が欲しいのかってところかな?
autotools使うなら本でも読んでじっくり取り組んでくれ。
- www.amazon.co.jp/Autoconf-Automake-Libtool-Gary-Vaughan/dp/4274064115/
あまり出来のいい本でもないけど…

412 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 09:30:35 ]
>>411
基本的には
Windows(cygwin), Linux, FreeBSD, Mac
あたりで使えれば嬉しいのですが。
あまりマイナーな環境に対応するのは大変ですしね。
いい環境が見つかるまでは、マニュアルと本でがんばりたいと思います。

413 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 10:20:29 ]
WXCXXFLAGS="`wx-config --cppflags`"
・・・ではないのかな 試してないけど
俺なら AC_PATH_PROG で wx-config あるかチェックするかな

414 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 15:12:07 ]
>>413
ありがとうございます。ただ、それでもダメでした。
(>>409のWXCXXFLAGSはWXCPPFLAGSの間違いでした。すみません)

Makefile.inを見ると変数自体はちゃんと出力されているのですが
その中身がどうも空のようです。
Makefile.amではどちらか分からないので
一応@WXCPPFLAGS@と$(WXCPPFLAGS)の両方の形式で出力させています。

415 名前:414 mailto:sage [2008/01/02(水) 16:27:37 ]
テストプログラムを作成しました。
原因の分かる方いましたら、是非教えてください。

www.uploda.org/uporg1184897.tar.html

416 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 17:00:06 ]
>>415
configure.ac の中身
WXCPPFLAGS=`wx-config --cppflags`
- 変数と'='の間にスペースは入れない
- 展開はバッククォート
普段UNIXライクOS使ってないならアレだがシェルスクリプトの基本を勉強する必要があるかも

417 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 17:02:34 ]
>>415
そうそう Makefile.am の方は @WXCPPFLAGS@ でよくて $(WXCPPFLAGS) はいらない

418 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 22:37:44 ]
>>416-417
できました!
やっとコンパイルに取りかかれそうです。
ありがとうございました。

419 名前:デフォルトの名無しさん [2008/01/04(金) 07:52:12 ]
>>418
Net BeansIDE V6 R3を実装し、C/C++コンポーネントのアドイン指定をし、
Cygwin言語処系gmake,g++,gcc等をインストールし、 Net BeansIDEを起動
することにより、自動でビルド環境が出来るじゃん。
まあ、autoconf automake の勉強するつもりならこんなやり方は為にならんが。
まあ、学生さんだったら時間あって勉強がてらハンドでやるのも良いんだろうけどw
よく考えたら、正月だったのか。じゃあ時間作れそうだな。






420 名前:419 [2008/01/04(金) 07:58:25 ]
こっちの方が正確だったな
ja.netbeans.org/
Net BeansIDE V6 R3→表記ミス

組込系なら制約が有るかもしれんな。
ま、その辺り臨機応変にな。

人間がやるより早いぞ。

421 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 09:54:43 ]
>>419
本人はVC使ってて他の環境(LinuxやFreeBSD)で容易にコンパイルできるように
autotoolize してるって書いてあるだろ…
そこで Cygwin + NetBeans 勧めても…

422 名前:デフォルトの名無しさん [2008/01/04(金) 21:04:54 ]
>>421
奨めないとPGままだろ?
ソフトウェア開発技術者とPGは違うぞ。
コンポーネントプログラミングの妙技も味わって貰わないとなw

423 名前:デフォルトの名無しさん [2008/01/04(金) 21:21:17 ]
>>421
autotoolizeって何?

スペルミスするくらいならオーソライズって書けよw


424 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 21:25:18 ]
>>423
autoconf/automake 使って
./configure && make all && make install
って, やればインストール出来るようになってる
という意味ではないのか?


425 名前:デフォルトの名無しさん [2008/01/04(金) 21:45:50 ]
>>424
個人の造語を空想で断定しては恥かくだろう?
俺はレスの文脈からオーソライズと認識したまで。
何ならそのスペルで英和辞典なりコンピュータ用語事典を
探して見たら良い。
一生掛かっても見っからないことは断言できる。
ま、そんなチンケな話で揉めても仕方ないのでここで
ペンを置く。


426 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 22:07:03 ]
うるせーよググれカス

427 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 22:08:42 ]
>>425
レスの文脈からautotool-izeとしか認識できなかったがな。
オーソライズってのはauthorizeのことか?だとしても意味が通らんな
もっと文脈読まないと恥かくぞ?

428 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 22:11:01 ]
>>417
その情報は古い。
Makefile.amでは、$(WXCPPFLAGS)と書くのが今風です。
Makefile.inでよきに計らってくれるので。

そうすると、$ make WXCPPFLAGS="-I/anotherdir/include"
なんかが使えます。

429 名前:デフォルトの名無しさん [2008/01/04(金) 22:13:26 ]
>>427
ふふ、暇なオジンやな?
本件にレスして道ズレにしようちゅう魂胆かなw
まあ、おまえが口べただと言うことは良く解った。ググった上でのレスだw>>426




430 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 22:22:17 ]
冬休み学生のへたくそな煽りにわざわざ釣られるなよ…

431 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 23:13:08 ]
>>423
これほど「プギャー(AAry」を貼りたくなったレスは初めて見た希ガス。

432 名前:デフォルトの名無しさん [2008/01/05(土) 01:06:06 ]
世代間ギャップだろw

433 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 01:14:29 ]
>>425
この辺を理解して出直してこい
www.catb.org/~esr/jargon/html/construction.html


434 名前:デフォルトの名無しさん [2008/01/05(土) 02:27:02 ]
↑この粘着馬鹿きも

435 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 08:05:03 ]
お前も十分粘着だよ。

436 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 10:25:14 ]
ageてる人はわかりやすくて良いな

437 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 13:13:44 ]
4+3=7

438 名前:デフォルトの名無しさん [2008/01/05(土) 17:53:22 ]
新年から運営バイト乙
さくらも必要だからな2ちゃんにはw

車 寅二郎

439 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 18:17:23 ]
To you cotton I dead no death she.



440 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 10:13:59 ]
最近気づいたんだけど、速いCPUでCygwinのgcc使ってコンパイルするより、
遅いCPUでLinuxのgcc使ってコンパイルしたほうが速いのね・・・
体感的にはCygwin@X2 3800+ < Linux@CelD 2.4GHz, Cygwin@CelD 2.4GHz < Linux@P3 900MHzくらい
-pipeつけたらちょっとマシになったけど、それでもやっと同じくらい。
やっぱstat(2)とかが効いてるのかね?

441 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 10:39:27 ]
Windowsはプロセスの起動が遅いうえに
Cygwinでエミュレートまでしてるからかなり遅くなると思うよ

442 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 11:50:41 ]
cygwinと比較してる時点でバイアス満載。

443 名前:デフォルトの名無しさん [2008/01/06(日) 12:14:27 ]
MinGW使え

444 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 12:29:43 ]
普通は、fgetc()をループで回してもfgets()やfread()を使っても(I/O速度で制限されるので)大差ない時間で処理できるが、
cygwinに限っては、fgetc()版は遥かに遅くなってしまうからね。

445 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 15:35:36 ]
なんで?

446 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 18:02:26 ]
エミュレートしているからでしょ。

447 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 18:26:53 ]
それはfgetcが遅くてfreadが遅くない理由にならなくね?

448 名前:デフォルトの名無しさん [2008/01/06(日) 19:02:11 ]
>>447
なんでそう思う?

449 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 19:13:11 ]
cygwinはファイルの読み書きは特に重いよね。MinGWにすると凄い速くなる。



450 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 19:35:46 ]
>>447
freadも遅いがエミュレート+ループでfgetcが遥かに遅い理由にならなくね?

451 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 20:47:21 ]
fread()一回では、エミュレートのオーバーヘッドは1回分であることが期待できる。
多くても、BUFSIZごとに1回だろう。
fgetc()では、毎回の呼び出しごとにオーバーヘッドが発生する懸念がある。
ungetc()のために毎回余計に読み込まなくてはいけないと言う事情がこれに拍車を掛けるだろう。

452 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 21:18:40 ]
そゆのってオーバーヘッドのかからない層で
バッファリングすると思うんだけど・・・。

453 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 21:21:49 ]
いや、そうじゃないからこそ、cygwinのエミュレーションは問題だといっている。

454 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 22:18:45 ]
MinGWのgccやg++は、標準ヘッダの検索パスをどこで決めているんでしょ?

c:\mingwにインストールしたときはbinのpathを通すだけでコンパイルできたソースが、
j:\!repos\softwares\mingwにインストールしたときはbinのpathを通すだけだと、
no include path in which to search for stdio.hとか言われる。
C_INCLUDE_PATHやCPLUS_INCLUDE_PATHを設定すればいいみたいだけど・・・。


455 名前:デフォルトの名無しさん [2008/01/06(日) 22:19:31 ]
>>443
MSYSもいっしょに

456 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 03:31:02 ]
>>451
ソースを読んでどこが悪いとか具体的に確信を持って言ってる?
なんか勘違いしてる気が…

457 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 05:35:00 ]
そのへんを計測してみた人どこかにいないかな

458 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 06:23:28 ]
なんかどっかのスレでも書いた気がするけど
俺のVista(HPx64)でMSYSちゃんが上手く動いてくれない

459 名前:デフォルトの名無しさん [2008/01/07(月) 10:14:15 ]
XPならHomeでもおk



460 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 10:27:17 ]
MSYS1.0.10に1.0.11の何か上書きしたらイケましたわ。

461 名前:デフォルトの名無しさん [2008/01/07(月) 13:00:45 ]
使いもしないツールを多く含んだメタボ気味なコンパイラ使うより
いいかもね

462 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 00:20:59 ]
少しスレ違いかもしれませんが質問させてください。

環境は、
MinGW 5.1.3
MSYS  1.0.10

自前のC++ソースをビルドしようとすると、
こんな感じのシンボル未定義のメッセージが並んでリンクエラーになります。
foo.cpp:(.gnu.linkonce.t._ZNK11foo16hogeERKSt6vectorIdSaIdEEj+0x14a) : undefined reference to `_cxa_begin_catch'

nmで見るとlibstdc++.aが必要なようですが、-lでばっちり指定しています。
./libstdc++.a:eh_catch.o:00000000 T ___cxa_begin_catch
./libsupc++.a:eh_catch.o:00000000 T ___cxa_begin_catch

何が原因なんでしょう。。打つ手なしっす。

463 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 00:33:27 ]
-lの方が先に指定されていたりはしないよね?

464 名前:462 mailto:sage [2008/01/09(水) 01:08:24 ]
>>463
-lstdc++を一番後ろに置いてます。
not foundが出るわけではないのでライブラリは見つけてるはずなのですが、、
コンパイラのインストールからやり直すべきなのでしょうか?

465 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 01:13:59 ]
g++コマンドでリンクすりゃ、libstdc++を明示する必要はないはずだが。(勝手にリンカに適切なオプション渡してくれる)

466 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 01:31:54 ]
>>465
一度g++に切り替えて試したときもlstdc++を付けたままで、まったく同じエラーが出ました。
早速明日外してやってみます。

467 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 01:52:52 ]
>>462
アンダースコアの数が違うからリンクできるように見えない。
マップファイルとかアセンブリのソースとか確認しないとわかんないね。

468 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 21:12:22 ]
バージョンが合ってないとか

469 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 22:14:59 ]
C/C++の開発環境を整備:MinGWとEclipse CDT
builder.japan.zdnet.com/sp/c-programming-language/story/0,3800083430,20364539,00.htm



470 名前:デフォルトの名無しさん [2008/01/13(日) 16:32:21 ]
UACが有効なVistaでcygwin使うとき、sudoみたいに管理者権限を動的に(必要なときに)与えるようにしたいんです。
ここで間違えないで欲しいのは、実行したユーザーが属するAdministratorsが保有するACL管理下の権限であって、Administratorの強制執行権限ではありません。
引数をコマンドとして実行するだけのプログラムにマニフェストを組み込んでもcygwinから実行するとNo permissionでキャンセルされます。
runasではadministratorでの実行は可能ですが、条件に合いません。
何かいい方法は無いでしょうか?

471 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 20:36:11 ]
VisualStudio, gcc, vim, Cygwinで開発しています。
MinGWというのは使ったことがあるのですが、メリットがよく分かりませんでした。
上記の開発ツールに加えてMinGWも使うとしたときのメリットにどんなものがありますか?


472 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 21:46:31 ]
Cygwinというのは苦肉の策であって、
例えばパス名の区切りがスラッシュになるなど、環境との親和性に問題がある。

VisualStudioはアクチがあり、法外に高額で、
かといってラーニングやスタンダードはライセンスにいろんな制約がある。
ただしカネがあるなら最適化他の面で圧倒的に有利だ。

gccってNTリソースパックのgcc?
NTのPOSIXサブシステム用はOSの汎用性がない。

MingWは完成度さえ高ければ素晴らしいのだがw
ハローワールドで数メガとか恐ろしいことになったりするw

473 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 22:18:13 ]
>>471
その列挙の意味がよく分かりませんが、VSとcygwin上のgccとvimを併用してると解釈します。

ja.wikipedia.org/wiki/MinGW#Cygwin.E3.81.A8.E3.81.AE.E6.AF.94.E8.BC.83
↑cygwinとmingwの比較です。2つは哲学が異なります。

cygwinはmingwに比べwindowsシステムとの互換性が低い(パスとか)のでwindows向けの開発であれば避けた方がいいかもしれません。
しかし、cygwinにmingwが包括されています(詳しい位置づけはよく分かりませんが)。
dllの不要化やWindows APIの利用も可能です。cygwinとmingwを併用する利点はあまり無いと思います。


474 名前:471 mailto:sage [2008/01/13(日) 22:58:52 ]
>>472
ありがとうございます。

Win32を使ったアプリを作らないせいか、環境とし親和性はあまり意識いたことないです。
やはり、Win32APIを使うと問題になってきますか。
VS Express 2005のフリー版を使っています。
gccはCygwin上のgccです。

>>473
リンクありがとうございます。

> VSとcygwin上のgccとvimを併用してると解釈します。
そうです。わかりにくくてすみません。

> しかし、cygwinにmingwが包括されています
それは初耳です。cygwinを使っていれば、mingwと同じかそれ以上の
ことが出来るということですか。

> cygwinはmingwに比べwindowsシステムとの互換性が低い(パスとか)ので
> windows向けの開発であれば避けた方がいいかもしれません。

windows向けの開発をする予定があるので、今からVSを使って慣れておこうかと思っている次第です。
windows向けであればcygwinよりmingwがいいんですか。
あるいは、windows向けであればビジネス的にはVSが圧倒的シェアかと思いますが、
個人的使用(趣味のプログラミング)であればVisualStudio2008などは高額で敷居が高いですね。
個人向けであれば、mingwが最適なのかなと思って、最近mingwが気になりだした次第です。

475 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 23:20:30 ]
素直にVS使っとけ。どうせ2008も無償版が出るんだから。
POSIXを意識しないならWindows上でまでgcc使う必要はない。

476 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 01:43:18 ]
>>472
ハローワールドで数メガとかならねーよw
# あ…Javaで書いてgcjでコンパイルとかしたらなるか

477 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 02:33:08 ]
デバッグ情報てんこもりとか

478 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 03:08:49 ]
[Test.java]
public class Test {
  public static void main(String[] args) {
    System.out.println("Hello, world.");
  }
}

> gcj -O2 --main=Test -o test Test.java
> ls -lh test.exe
-rwxr-xr-x 1 hoge none 6.1M Jan 14 03:04 test.exe*
> strip test.exe
> ls -lh test.exe
-rwxr-xr-x 1 hoge none 2.1M Jan 14 03:06 test.exe*

うはwww

479 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 14:10:45 ]
>>471
VS と MinGW の両方でコンパイルできるコードが割と簡単に書けるところが MinGW のメリット。
MinGW では基本的に Win32 API を使う。
スレッド、WinSock2、DLL のロードなどは Win32 API を利用するので
VS 用と MinGW 用のコードの差分は小さくなることが多い。
コンパイラ依存の部分を #ifdef で分ければ大半のコードを共用できる。

Cygwin は使ったこと無いのでパス。



480 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 14:43:38 ]
逆に、cygwinだとWinSockを使わないでソケット周りを書けるのが魅力。
要は、Linuxと同じソースでいける可能性が高い。

481 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:47:17 ]
>>474
windows用のソースをwindows用にコンパイルするのがmingw、勿論VSも
linux用のソースをwindows用にコンパイルするのがcygwinのgcc
cygwinでもwindows用のソースをコンパイルする事はできます、そこで使われているのがmingw
このcygwinのmingwが本家と同一なのかどうなのかはよく知りませんが。

gcc --target-help の最初の10行程を見てみてください、参考になるかと思います。

482 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 04:56:41 ]
一部のファイルをインクルードすると

failure to convert cp932 to UTF-8

というエラーが発生するんですが
これは何が原因なんでしょう?

別のエディタで文字コードをUTF-8にして保存しても直りませんでした

483 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 05:46:45 ]
改行コードかも

484 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 06:25:37 ]
>>483
阿呆ですか。

>>482
--input-charsetは?

485 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 07:23:08 ]
いやまじであるぜ?
改行コード

486 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 14:22:35 ]
>>482
「一部のファイル」ってのを明確すると話が早かったりするかも。
boostだったりしない?


487 名前:本田 [2008/01/17(木) 17:40:38 ]
>COMプログラマの解説書
>Crispin Goswell
>Microsoft Office Product Unit
>1995年 春
>1995年9月13日改訂
msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdncomp/htm/com_co.asp
>抄録
>この解説書は、
>Microsoft(r) OLE Component Object Model(COM)オブジェクトを作成し、
>効果的に使用する方法を説明しています。
>例文はほとんどCで書かれていますので、実際に何が行われているかが、大変分かりやすく示されています。
>プログラマの中には、オブジェクトを実行するためにC++を好んで使用する人もいるでしょう。
>C++プログラマの観点からCOMの概念および基本的な使用法を論じているのは
>Kraig Brockschmidt著のInside OLE (第2版)(MSDN Library(Books))です。
>COMとは何か、またその設計や哲学の後ろにある動機付けをより理解する事に興味がある読者なら、
>Component Object Model Specification(MSDN Library(Specifications))の最初の2章を読んでください。
>第1章には簡単なイントロダクションを、第2章では徹底的に概要を解説してあります。
>この解説書ではInside OLEとCOM Specificationにある情報を、
>COMオブジェクトを実装する良い方法をいくつか示しながら解説するようにしてあります。

488 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 18:01:35 ]
>>482
input-charset を CP932 として使っていながら、欧州由来のコードで
CP932的に不正なものを含むソースをコンパイルしたんだと思う。
ffmpegの何かのヘッダとか。

489 名前:デフォルトの名無しさん [2008/01/20(日) 14:26:15 ]
エクスプローラーを使っているときに
今見ているフォルダでCgywin窓を開きたいのですが
どうしたらいいですか?




490 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 15:01:59 ]
アドレスバーからコピーして、cdすれば?

491 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 15:39:29 ]
>>489
cygwin hereでググれ

492 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 19:41:55 ]
俺はこうしてる
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\WinHandPrompt]
@="Zsh(&C)"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\WinHandPrompt\command]
@="cmd.exe /F:on /K \"cd %L&&zsh\""

493 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 21:47:51 ]
窓の手の流用か

494 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 02:51:02 ]
あれ、なんでばれたんだろう?
、と思ったら書いてあったねハッキリと

495 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 01:51:09 ]
MSYSからgetchとかkbhitを拾うのはどうしたらいい?

コマンドプロンプトではできることが
MSYSでは上手くいかないことが意外に多い
printfは必ずfflushも書かないと表示されないし・・・(TT

496 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 05:18:27 ]
毎回のようにfflushするくらいならsetvbufに_IOLBFしとけ。

で、getchやkbhitはC/C++にもPOSIXにも準拠していないし、Win32にも無い。
強いて言えば、DOSのデファクトスタンダードだったので残してある、というだけ。

Win32APIを使わないとするなら、
conio.hじゃなくてcursesとかを使うんじゃないの?知らないけど。

497 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 11:11:00 ]
>>495
>printfは必ずfflushも書かないと表示されないし・・・(TT
リダイレクトする用途を考慮しなくていいなら、printf()ではなくfprintf(stderr, ...)したまえ。

498 名前:デフォルトの名無しさん [2008/01/26(土) 15:58:13 ]
いま操作しているPC(ネットワーク上でのコンピュータ名はPC1)のcygwin(以下cygwin1)から
sshでほかのPC(ネットワーク上でのコンピュータ名はPC2)のcygwin(以下cygwin2)にログインして
\\PC1\Shareにアクセスしようとすると"-bash: cd: \\yy-x60s\Share: Permission denied"と言われてしまいます

cygwin2から直接"cd \\\\PC1\\Share"を実行するとこちらは成功します

cygwin2で"setfacl -m user:SYSTEM:rwx \\\\PC1\\Share"を実行して
直後に"getfacl \\\\PC1\\Share"を実行すると
# file: \\PC1\Share
# owner: pc2user
# group: なし
user::rwx
group::r-x
other:r-x
mask:rwx
とでていて設定が反映されてないことが原因なような気がするのですが、どのように設定するばよいか分かりません

499 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 15:58:46 ]
そういえばstderrはバッファリングされないからflushする必要もないよね



500 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 16:13:01 ]
でなきゃ困るだろ.そもそも
>printfは必ずfflushも書かないと表示されないし・・・(TT
は,それが当たり前だということを知らずに泣いてるだけの話だろ

501 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:20:24 ]
>>495-496
MSYS では、ってのは rxvt では、ってことだよね。
pdcurses の getch を使うプログラムを書いて試してみたけど rxvt ではダメっぽい。

LINES value must be >= 2 and <= -4096: got 1
initscr(): LINES=1 COLS=1: too small.

とか出てプログラムが異常終了する。
ググってみると lynx や aspell で同じ問題が起こっているみたい。
rxvt では (pd)curses は NG。

502 名前:デフォルトの名無しさん [2008/01/30(水) 21:32:07 ]
質問です。非常に初歩的ですみません。

ジョークコマンド sl を、Cygwin や その他 dll 等に依存しない、exeファイ
ル単体で動く形にコンパイルしたいのです。

chaosweb.complex.eng.hokudai.ac.jp/~hagi/contents/memo-cygwin.html#sl
freethink.way-nifty.com/action/2006/06/gnuwin32_6362.html
これらを参考に、Mingw、GnuWin32 をそれぞれフルインストールしました。
makefile の -lcurses と sl.c の usleep を書き換えました。
また、makefile を
CC=c:/mingw/bin/gcc.exe
と書き換えました。
そこから先が分かりません。

gnuwin32 のコマンドプロンプトから、makeを実行すると、以下のようなエラー
が出ます。
gcc -O -o sl sl.c -lpdcurses -ltermcap
sl.c:30:20: curses.h: No such file or directory
sl.c: In function `my_mvaddstr':
sl.c:42: error: `ERR' undeclared (first use in this function)
sl.c:42: error: (Each undeclared identifier is reported only once
...(略)

ということで質問です。GnuWin32 の termcap と pdcurses を、MinGW から利
用できるようにするには、どのように何を設定したらいいのでしょうか?


503 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 23:04:14 ]
>>502
gcc の -I オプションで curses.h があるディレクトリを指定


504 名前:502 mailto:sage [2008/01/30(水) 23:57:09 ]
>>503
ありがとうございます。makefileのCFLAGSを以下のように修正したところ、
CFLAGS=-O -I "/Program Files/gnuwin32/include/"
一歩前進し、今度はこんなエラーが出るようになりました。

c:\mingw\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe:
cannot find -lpdcurses
collect2: ld returned 1 exit status
make: *** [sl] Error 1

今度はどこに何を設定したら良いでしょう?

505 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 00:01:20 ]
1を聞いて10を知れ、とは言わないがちょっとな・・・

506 名前:502 mailto:sage [2008/01/31(木) 00:46:02 ]
ごめんなさい、図々しいお願いですね。

gcc の man を見ているのですが、ライブラリの検索パスを追加するオプショ
ンが見つかりません。
また、C:\Program Files\gnuwin32 の下に pdcurses に相当するライブラリが
あるのかと思ったのですが、libpdcurses.a というファイルが見つかりません。
行き詰ってしまいました。

507 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 00:49:24 ]
-L でしょ?

508 名前:502 mailto:sage [2008/01/31(木) 01:08:26 ]
うわあ、これは恥ずかしい。申し訳ありません。
日本語manを"ライブラリ"で検索していたので見つかりませんでした。

c:\program files\gnuwin32\lib に pdcurses がなく、curses があったので、
Makefile を元に戻しました。

--- sl.c ----
/* usleep(20000); */
sleep(1);

ここで今、こんなエラーが出ています。
c:\DOCUME~1\ユーザ名\LOCALS~1\Temp/ccGQbaaa.o:sl.c:(.text+0x1a4):
undefined reference to `sleep'
collect2: ld returned 1 exit status

たぶん、正しいヘッダをインクルードすればいいと思うのですが。

509 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 01:48:36 ]
>>508
> たぶん、正しいヘッダをインクルードすればいいと思うのですが。

そう思うんだったら、includeディレクトリの中でsleep()の宣言を探す
べきでしょ。たぶん無いけど。





510 名前:502 mailto:sage [2008/01/31(木) 02:01:22 ]
おっしゃるとおりです。見つかりませんでした。

/MinGw/include には何もなく、

/Program Files/gnuwin32/include には
glibc/unistd.h に sleep() がありましたが、includeすると大量のエラー。
winx/timex.h に nanosleep() がありましたが、
undefined reference to `nanosleep' のエラーが出ます。

/cygwin/include でも見つからなかったので、どうも方針がまずいようです。
Cygwin 上だと何もせずにコンパイル、実行できましたので。

今日はいったん中止します。

511 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 08:33:38 ]
このまま続けると嫌われるよ。
おそらく、初心者板の方が適している質問と思われ。

# -Iや-Lオプションなんて、cc時代から定番のオプションだし。
# CygwinやMinGWの問題か切り分けられて無いし。

512 名前:502 mailto:sage [2008/01/31(木) 13:11:55 ]
ごめんなさい、では最後に一点だけ。

/* usleep(20000); */
この行をコメントアウトすると、コンパイルは通るようになりました。まあ実
行すると、一瞬で終わってしまうのですが。

ただし、カレントディレクトリに curses2.dll を必要とします。exeファイル
のみで実行できるようにならないでしょうか?

見よう見まねで gcc に -static オプションを付けてみましたが、大量にコン
パイルエラーが出てしまいます。

c:\DOCUME~1\ユーザ名\LOCALS~1\Temp/ccy2baaa.o:sl.c:(.text+0x34):
undefined reference to `_imp__stdscr'
c:\DOCUME~1\ユーザ名\LOCALS~1\Temp/ccy2baaa.o:sl.c:(.text+0x4f):
undefined reference to `imp( *) static'
c:\DOCUME~1\ユーザ名\LOCALS~1\Temp/ccy2baaa.o:sl.c:(.text+0x6b):
undefined reference to `_imp__stdscr'


513 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 13:17:19 ]
>>512
そのpdcursesにスタティックリンク用のライブラリが添付されてない限
り、キミには無理。


514 名前:502 mailto:sage [2008/01/31(木) 13:22:08 ]
ありがとうございました。dllは諦めます。
あとはusleep(20000)ですが、これはどこか初心者スレを探して質問します。

515 名前:502 mailto:sage [2008/01/31(木) 15:17:52 ]
先ほどの者ですが、解決しました。

#include <windows.h>
...
Sleep(20);

Windowsプログラミングに詳しい知人にアドバイスされ、このように修正したと
ころ、見事に動くようになりました。

どうもお騒がせしてすみませんでした。ありがとうございました。


516 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 15:59:00 ]
最初からそいつに聞け糞が

そいつはそいつで、掲示板で聞けようぜえ
と思ってるだろうがな

517 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 16:23:57 ]
「mingw sleep」でググるだけで、ヒントがたくさん出てくるんだけどなあ。


518 名前:502 mailto:sage [2008/01/31(木) 18:53:51 ]
ごめんなさい、訳があって急ぎだったので、無神経な質問をしてしまいました。
ご迷惑をおかけしました。
今度Java質問スレで、超初心者にていねいに答えますので、それで埋め合わせ
にさせてください。


519 名前:デフォルトの名無しさん mailto:sage [2008/01/31(木) 20:08:57 ]
人に教えてる暇があったら勉強しろ



520 名前:デフォルトの名無しさん mailto:sage [2008/02/01(金) 09:18:44 ]
以上 >502 の日記からお伝えしました


521 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 07:20:34 ]
Cygwinでcファイルをコンパイルしようとしたところ、
3[main] ? 26824 init cheap: Couldn't reserve 3600336 bytes of space for cygwin's heap, Win32 error 487

というエラーメッセージを4つ吐くのですが、解決策はありますでしょうか?
ググってみて、再インストールもしてみたのですができませんでした…

WinXP Home SP2
RAM DDR SDRAM 512MB

522 名前:521 mailto:sage [2008/02/02(土) 08:38:29 ]
すみません自己解決しました。

System32にCygwin1.dllがあったのが悪かったようです。

523 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 19:57:57 ]
guileのinfoにある例(インタプリタを作るだけ)をmingwでコンパイルしたら
sys/select.h
ieeefp.h
が無いと言われてしまいます。
確かに/includeにも/mingw/includeにもそんなファイルはありゃしませんが。
mingwじゃlibguileは使えないのでしょうか?

バージョンは
gcc: 3.4.2
guile: 1.8.2
です。


524 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 20:08:18 ]
 _____ ___
<ー、\\ヾiγ/rニミ
 \ヾヘヽヽリ川///γ
  >川/ ̄"""" ̄「リ
  (ヘir-=o=ッィ=o=j
 _ハ| `ー/ ii、i
<\ ヽヽ `ー′/
 \ヽ \  ̄ ̄/∩へ  Cygwinじゃ駄目なのか?
__ii   ̄/二ノ レ<    guileのmakeに必要な環境やライブラリはあるのか?
ヘヘヘ\ヽニ>-イ|( Y/)
ノ// / ヽ_ノ|ヽハ/)
ノ ̄  `ー | |ヒ/


525 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 20:13:56 ]
>>524
試しにcygwinでやってみたら、gmpを入れてないのでハネられます。
まあ、gmp入れてcygwinでやればいいだけなんだろうけど。
主力環境がmingwなのでmingwでやりたいなと。

526 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 20:20:56 ]
敗因は2つだ
- >>525 は sys/select.h が何なのかわかってない
- >>525 は mingw がどんな位置づけにあるものかもわかってない

527 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 20:31:43 ]
guileを使うのにPOSIX環境である必然性があるのかな

528 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 21:10:01 ]
ないと思うが…

529 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 23:46:04 ]
では、mingwの位置づけ云々は関係ないような。
select.hを使わないようにconfigureできないものか。



530 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 00:23:46 ]
>>529
mingwの位置付けが判っていたら当然そういう風に行動するだろ?
ってか guile をビルドの話なのか?
guile をビルドするときなら configure --disable-posix とかあった気がするが…

531 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 01:24:34 ]
>>530
sourceforgeのmingw用にビルドされたguileをインスコしてlibguileまで一緒に入っているのにselectがないとかもうね、なんなんだと。

532 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 05:34:13 ]
じゃあきっとそのlibguileは --disable-posix で作られてるんだろ?

533 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 12:51:39 ]
>>532
guileの意義がわかんねーなら上から目線で語るなよwwww

534 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:33:53 ]
…と、>>533が最上位から申しております。

535 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:04:39 ]
Cygwinでgcovを使いたいのですが、
gccに-mno-cygwinのオプションを付けて実行すると以下のようなエラーが出ます。
test.gcda:Version mismatch - expected 304m got 304c

-mno-cygwinを付けてgcovを使うことはできないのでしょうか?

Cygwinのバージョンは1.5.25-7です。


536 名前:デフォルトの名無しさん [2008/02/10(日) 03:15:32 ]
Cygwin v2.573.2.2で開発しています。C++からperlを使おうと思って、とりあえず下のソースを拾ってきました。
#include <EXTERN.h>
#include <perl.h>
static PerlInterpreter *my_perl;
void main ()
{
char *perl[] = { "", "-e", "printf(\"%x\", 3735928559);" };
my_perl = perl_alloc ();
perl_construct (my_perl);
perl_parse (my_perl, NULL, 3, perl, (char **)NULL);
perl_run (my_perl);
perl_destruct (my_perl);
perl_free (my_perl);
}
それを perl_sample.cpp という名前で保存し、
g++ perl_sample.cpp -I/lib/perl5/5.8/cygwin/CORE -L/lib/perl5/5.8/cygwin/CORE
と、コンパイルしようとしました。しかし、
/cygdrive/c/Users/hoge/AppData/Local/Temp/ccwiKLdy.o:perl_sample.cpp:(.text+0x40): undefined reference to `_perl_lloc'
/cygdrive/c/Users/hoge/AppData/Local/Temp/ccwiKLdy.o:perl_sample.cpp:(.text+0x52): undefined reference to `_perl_construct'
/cygdrive/c/Users/hoge/AppData/Local/Temp/ccwiKLdy.o:perl_sample.cpp:(.text+0x7e): undefined reference to `_perl_parse'
/cygdrive/c/Users/hoge/AppData/Local/Temp/ccwiKLdy.o:perl_sample.cpp:(.text+0x8b): undefined reference to `_perl_run'
/cygdrive/c/Users/hoge/AppData/Local/Temp/ccwiKLdy.o:perl_sample.cpp:(.text+0x98): undefined reference to `_perl_destruct'
/cygdrive/c/Users/hoge/AppData/Local/Temp/ccwiKLdy.o:perl_sample.cpp:(.text+0xa5): undefined reference to `_perl_free'
collect2: ld returned 1 exit status
と、エラーをはきます。perl自体はcygwinのインストール時に入れたものです。perlのlibが無いのかと思い、探しましたが見つからず、また、perlの最新版をコンパイルしようとしましたが失敗しました。ちなみにOSはVistaです。
どのようにすればコンパイルできるようになるのでしょうか?

537 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 05:47:34 ]
>>535
www.cygwin.com/ml/cygwin/2007-11/msg00180.html



538 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 08:22:53 ]
>>536
ライブラリのサーチパスは指定しているけど、ライブラリそのものを指定していないじゃん。

539 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 09:52:41 ]
>>537
Cygwinで-mno-cygwinを使う代わりに本物のMinGWを使うことで解決できました。
ありがとうございました。



540 名前:デフォルトの名無しさん [2008/02/10(日) 13:45:20 ]
>>538
ありがとうございました。無事コンパイルすることができ、実行もできました。

541 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 01:17:56 ]
ckのソースどっかに落ちとらんかのー

542 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 00:44:21 ]
どぞ www.ch-werner.de/ck/

543 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 10:17:09 ]
ん? ck違い!? とりあえずサンクスコ

544 名前:デフォルトの名無しさん [2008/02/23(土) 09:23:36 ]
浮動小数点演算を行なうルーチンをコンソールアプリ(main関数)から呼んだときと
Win32 API で書いた GUI アプリから呼んだときとで計算結果が違うという問題に
悩まされています。どなたか解決策をご存じないでしょうか。

問題を再現する、できるだけ小さなプログラムを作りました。
kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/6078.zip
付属の Makefile は MinGW (GNU make)用です。
test1.exe(コンソールアプリ)と test2.exe(GUI アプリ)をビルドして実行します。
どちらも init.c の initialize() を呼び出します。
initialize() は double 型の配列 x を初期化する関数です。
計算結果を見るために x[5] と x[6] をカレントディレクトリの output.txt に書き出しています。
gcc version 3.4.5 (mingw special) では以下のようになりました。

test1.exe
x[5] = 4.7474747474747475e-001
x[6] = 4.6969696969696967e-001

test2.exe
x[5] = 4.7474747474747475e-001
x[6] = 4.6969696969696972e-001

同じルーチンを呼んでいるのに x[6] の値が異なります。x[5] は一致しています。

比較のために VC++ Toolkit 2003 (nmake.exe) 用の Makefile.vc も入れておきました。
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
でコンパイルしたところ2つのプログラムの計算結果が配列 x の全要素について一致しました。
MinGW (gcc) でコンパイルしたときの test2.exe の計算結果と一致しています。
すなわち test1.exe の計算結果がおかしいようです。

どなたか解決策をご存知の方がいらっしゃいましたらご教示下さい。よろしくお願いいたします。

545 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 09:53:13 ]
面倒だからソースは見ていないけど、どちらかはFPUで計算を行いどちらかはSSEで計算を行なっていると思われる。
コンパイルオプションで強制できるから、必要なら強制すればいい。
但し、doubleの精度を超えた領域の話なのでどちらも間違っているとはいえない。

546 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 09:55:30 ]
./test1
4.7474747474747475e-001
4.6969696969696967e-001
./test2
4.7474747474747475e-001
4.6969696969696967e-001

gcc version 4.1.2

ごめん、役に立てそうも無いw
とりあえずmap出力してdiff取ってみたらどうか

547 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 10:01:53 ]
アセンブリ出力を見るだけだろ。常考

548 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 10:17:20 ]
同じになっちまった。
.gcc version 3.4.5 (mingw special)
/test1
cat output.txt
4.7474747474747475e-001
4.6969696969696967e-001
gcc -o test2.exe -mwindows test2.c init.o
./test2
cat output.txt
4.7474747474747475e-001
4.6969696969696967e-001

gccオプションに--save-temps
しかし、同じ.oファイル使ってるから意味ないか。

fprintf(fp, "%hX\n", x[5]);
fprintf(fp, "%hX\n", x[6]);
これ出力しても結果異なるよね?

まぁ、ollydbgあたりでステップ実行すれば原因はわかるかと思う。

549 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 10:20:48 ]
そういえば、全然関係ない話だけど
MinGWのprintfで、%hhXとかうまく機能しない原因知ってる人いない?



550 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 11:00:51 ]
msのcランタイムがc99対応じゃないから

551 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 11:19:49 ]
msのランタイムって、FPUの精度を固定していないか?
>544はもう一回動かしてもtest1のx[6]は違う値のまま?

552 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 12:01:31 ]
15桁目まで同じだからdoubleの精度としては問題ない。

553 名前:549 mailto:sage [2008/02/23(土) 12:03:17 ]
C99以前ではhhxって使えなかったんだ。
知らなかった。

554 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 12:18:37 ]
x86のFPUは、80ビット精度と64ビット精度が存在する。
SSE2は64ビット精度。
とかそのへんの問題かな?

>>551に一票。

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

555 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 12:56:53 ]
_controlfp あたりでぐぐれ

557 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 13:05:31 ]
VCとgccのデフォルトのFPU計算精度は異なるらしい
homepage1.nifty.com/herumi/prog/prog90.html
_controlfpでいじると同じ精度にできる

558 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 13:11:46 ]
おー、それだそれだ、思い出した。

559 名前:544 mailto:sage [2008/02/25(月) 14:04:07 ]
皆さまコメントありがとうございました。>>556-557の方法で解決いたしました。

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

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

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

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



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

561 名前:544 mailto:sage [2008/02/25(月) 15:57:08 ]
>>560
おっしゃる通りです。

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

育毛にはげみます。

562 名前:554 mailto:sage [2008/02/25(月) 21:54:36 ]
>>561
> シミュレーション結果の違いはもっと有意な差だったので

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

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

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

564 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 13:18:47 ]
>>563
>556-559

565 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 14:03:31 ]
そんなあなたを禿増してあげましょう

566 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 02:29:06 ]
>>541 発見しますた
ttp://sohda.net/cygwin/dist/mirror/www.geocities.jp/meir/cygwin_ck/

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

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

569 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 18:09:00 ]
stripしろよ
ライブラリのdebug infoもな

571 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 18:30:48 ]
なるほど、どうもー。

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

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

574 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 14:25:42 ]
嫌味だけは一丁前でな

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

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

576 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 06:18:22 ]
すみません。追記です。

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

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

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


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

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

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

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

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

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



580 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 13:46:42 ]
WM_INITMENUPOPUPなら見分けがつくんでない?

581 名前:デフォルトの名無しさん mailto:sage [2008/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 が送られてくるとの情報があったので、
(参考: www.hey-to.net/ML-archive/vcppML/1999/msg03694.html)
0x313 を捕捉し、そのハンドラで EnableMenuItem() などの設定を行い、
さらに DefWindowProc() にメッセージを処理させればよい…みたいです。

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

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

582 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 15:22:25 ]
>>581
Win32 API スレいって揉まれてくるといい

583 名前:デフォルトの名無しさん [2008/04/01(火) 13:51:30 ]
cygwinでopenmpは使える??

584 名前:デフォルトの名無しさん [2008/04/01(火) 18:57:24 ]
>>581
これじゃダメなんかい?

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


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

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

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

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

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



590 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 14:42:10 ]
>>588
使える

591 名前:588 mailto:sage [2008/04/11(金) 15:00:25 ]
>>588さん
>>580さん

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

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

592 名前:588 mailto:sage [2008/04/11(金) 15:01:37 ]
>>588さん→>>589さん
>>580さん→>>590さん


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

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

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

596 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 16:17:38 ]
スラッシュにした方がいいな
-l"C:/Program files/..."

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

597 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 17:43:01 ]
レス下さった方々、ありがとうございます。

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

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


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

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



599 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 20:46:30 ]
あっちの関連スレにここがあったから貼り返し。

Cygwin使っている人いますか? その18
pc11.2ch.net/test/read.cgi/unix/1184677144/



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

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

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

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

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

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

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


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

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

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

607 名前:デフォルトの名無しさん [2008/04/12(土) 17:58:19 ]
>>606
なるほろ。どうもです。

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

609 名前:デフォルトの名無しさん [2008/04/12(土) 23:38:33 ]
>>605
nmake 使った事無いの?



610 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 02:43:01 ]
なぜそこでnmakeがでてくるんだ?

611 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 03:50:56 ]
>>609
聖徳太子って知ってる?

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

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

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

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

616 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 16:58:47 ]
みんなして同じことしかいってなかったんだよね

617 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 19:35:39 ]
windresのソースのこの辺り↓を見るしかなさげ?
sourceware.org/cgi-bin/cvsweb.cgi/src/binutils/winduni.c?rev=1.10&cvsroot=src
sourceware.org/cgi-bin/cvsweb.cgi/src/binutils/winduni.h?rev=1.7&cvsroot=src
なんだかコードページしか指定できないように見える・・・。

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




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とが渾然一体になってるような
ハイブリッドカーネルみたいなんは無いもんか……


721 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 22:44:53 ]
もっと微妙になってしまいそうな気もするが…

722 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 03:51:12 ]
cygwin1.dllはアッパーコンパチにして欲しいよ。マジで。

723 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 02:42:18 ]
getrlimitのソースってどこにあるのでしょうか?
glibcの中のgetrlimitは空実装でした。

724 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 03:40:27 ]
>>723
どの環境のgetrlimit()?


725 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 23:02:09 ]
今日gcc4.3をビルドして初めて使ってみたんだけど、
デフォルトで入ってるgcc3.4.4よりコンパイルが速いのね。

726 名前:デフォルトの名無しさん [2008/06/02(月) 22:00:21 ]
% alias ccgl 'cc -I/usr/X11R6/include \!* -L/usr/X11R6/lib -lglut -lGLU -lGL -lXmu -lXi -lXext -lX11 -lm -lpthread'
のようにしておけば、
% ccgl program.c
だけでコンパイル出来るらしいのですが。bashで
% alias ccgl='cc -I/usr/X11R6/include \!* -L/usr/X11R6/lib -lglut -lGLU -lGL -lXmu -lXi -lXext -lX11 -lm -lpthread'
のようにしてもできません。どこが問題なのでしょうか?

727 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 22:07:27 ]
>>726
なんで「\!*」?「$@」じゃないの?
つーか、そんなへんなエイリアスつくってないで、Makefile書きましょう。


728 名前:デフォルトの名無しさん [2008/06/02(月) 22:14:25 ]
Makefile書けば済む話ではあるんですけど…。glutやらSDLやら
目的別にエイリアス作っとけば、ちょこっとした作業が楽になるかな
と思ったんです

729 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 23:39:08 ]
>>726
せめてワンライナーなaliasなんかじゃなくシェルスクリプトにすれば
記述の自由度があがってもっと便利なものも書けると思うんだが
何かaliasで定義しないといけない理由とかがある?



730 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 23:40:09 ]
SDL知ってるなら、それに倣ってgl-configでも作っておけばいいんじゃない
$ gcc `gl-config` hoge.c
で済むようになるけど

731 名前:デフォルトの名無しさん [2008/06/03(火) 10:13:59 ]
>>729
理由は特にありません。
ただ、シェルスクリプトの使い方が良く分かってないのと、ファイルを
いちいち作りたくないとかです。

>>730
おお、すごくいい感じな気がします。こっちの方がいいですね
`sdl-config --cflags --libs`みたいなことですよね。これは、
どのような仕組みになっているのでしょうか?

732 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 10:51:25 ]
Makefile一個書くのがそんなに嫌なのかな?

733 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 10:54:14 ]
>>731
sdl-configの中身を読んでみましょう。
シェルスクリプトの書き方を習得しとくと、イロイロ便利だよ。


734 名前:デフォルトの名無しさん [2008/06/03(火) 11:28:18 ]
>>732
ちょこっとしたテスト用ののソースのためにわざわざMakefile書くのが嫌かもです。
リンクするライブラリが多かったりすると…
Makefile書くよりもコマンドの方が手軽かな、と私が勝手に思ってるだけです。

>>733
シェルは覚えたいですね。

735 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 11:30:02 ]
>>734
もしかして、ソースファイルごとにMakefileが必要だと思っていない?
適当なMakefileを用意しておけば、例えばmake fooとするだけでfoo.cかfoo.cppをコンパイルできるのだけど。

736 名前:デフォルトの名無しさん [2008/06/03(火) 12:02:24 ]
>>735
make fooとした場合、
Makefile内の
foo:
コマンド
の部分が実行される。で合ってますか?
この場合、使えるソースファイルの名前はfooだけですよね?
例えば、fooってファイルの他にfoo1,foo2などのファイルを作った場合も
make foo1 ,make foo2という風にできるのでしょうか?

それとも、上のように様々なソースファイルを引数で指定するようならば、

make はマクロの定義をシェル引数からでもできる。
例: % make CC=gcc
ということなので、これを応用すればいいのでしょうか?

737 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 12:06:52 ]
>>736
%: %.c
    gcc -o $@ $<

ってMakefileに書いてみ

738 名前:デフォルトの名無しさん [2008/06/03(火) 12:36:59 ]
>>737
おお、ありがとうございます。こんな使い方できるんですね。最初からMakefileに
ついて調べとけば良かったorz

これで解決です。

ところで、autotoolsってありますよね。あれの使いどころが良く分かりません。
大規模なソフトウェア->autotools使う。
趣味範囲のソフトウェア->自分でMakefileを作って流用する
って感じなのでしょうか?

739 名前:735 mailto:sage [2008/06/03(火) 12:59:50 ]
>>738
やっぱりそうだったのかw 道理で話が噛み合わないと思った。



740 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 13:01:53 ]
>>739
知識少なくてすみませんw
プログラムしたくてもMakefileを調べていたら全然進まないので、

741 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 13:02:35 ]
やっつけでMakefile書いてきたツケが…

742 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 13:07:56 ]
事実上、
autotools->クロスプラットフォーム
Makefile->環境依存
だとおもえばいいよ。

743 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 13:13:03 ]
なるほど。じゃあ、Makefileについてちゃんと調べようと思います。

744 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 13:14:28 ]
foo.Cが任意のディレクトリにあるとき、
Makefileをソースファイルと同じディレクトリに置かないと、make fooとはできないよね。
できるのならぜひ方法を知りたい。

745 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 13:19:17 ]
Makefileの中身はこんな感じ(一部抜粋)

# Makefile for MinGW

OBJS = main.o
OPTS =
LIBS =

CC = g++
RC = windres
CFLAGS = -O2 -Wall
.SUFFIXES: .cxx .hxx .rc .ro

#

$(OUT): $(OBJS)
$(CC) $(OPTS) -o $@ $(OBJS) $(LIBS)
strip $@
@(del *.o 2>&1) > NUL
@(del *.ro 2>&1) > NUL

.cxx.o:
$(CC) $(CFLAGS) -c $<

.rc.ro:
$(RC) -o $@ $<

clean:
@(del *.o 2>&1) > NUL
@(del *.ro 2>&1) > NUL
@(del *.exe 2>&1) > NUL


746 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 13:24:04 ]
>>744
-fで指定するのが嫌で、alias make="make -f ~/Makefile"とかするのが嫌なら、
カレントにMakefileのシンボリックリンクでも置いておくとか。


747 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 13:24:26 ]
>>744
vpathとか

748 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 13:34:01 ]
>>746
aliasの存在を忘れていた。すぐ上でalias見たばかりなのに……。
ふだんはわざわざカレントにシンボリックリンク(ジャンクション)を作ってました。
とはいえ、カレントのMakefileを使いたいこともあるのでvpath使ってみようと思います。
こんな便利なものがあったとは。

749 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 13:43:49 ]
>カレントのMakefileを使いたいこともあるので
alias mk="make -f ~/Makefile"
でOK



750 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 14:22:26 ]
>>744
あまり良くない方法らしいがMAKEFILES環境変数

make makes many problems
pc11.2ch.net/test/read.cgi/tech/1029599472/387

751 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 01:49:57 ]
>>744
@ほにゃらら
で下階層に移動するのはダメ?
linuxのtarballでよくある方法

752 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 17:00:20 ]
gcc on cygwinでコンパイルできません。
以下の通りなのですが、パスが通ってないのでしょうか。
よろしければ解決策をご教授ください。

$ cat hello.c
#include<stdio.h>
int main(){
printf("Hello,world.\n");
return 0;
}
$ gcc hello.c
hello.c:1:18: stdio.h: No such file or directory
hello.c:5:2: 警告: no newline at end of file
$ set | grep ^PATH= | sed 's/:/\n/g' | grep -v ^\/cygd
PATH='/opt/xfce4/bin
/usr/local/bin
/usr/bin
/bin
/usr/X11R6/bin
/usr/lib/lapack'

753 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 17:18:18 ]
>>752
-v オプションを付けてコンパイルするとインクルードファイルのサーチパスが出る
こんな感じに↓

#include <...> search starts here:
 /usr/lib/gcc/i686-pc-cygwin/3.4.4/include
 /usr/include
 /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api

そのどれか (たぶん/usr/include) に stdio.h が存在するか確認

754 名前:752 mailto:sage [2008/06/04(水) 17:29:22 ]
>>753
早いレスありがとうございます
-vオプションをつけて実行した結果、以下のログが得られました。

#include "..." の探索はここから始まります:
#include <...> の探索はここから始まります:
/usr/local/include
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include
/usr/include
探索リストの終わり

上記のパスを確認したところ

$ ls /usr/include/
$ ls /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/
README* gcj/ mm_malloc.h* stdbool.h* xmmintrin.h*
c++/ gpc-in-c.h* mmintrin.h* stddef.h*
emmintrin.h* iso646.h* objc/ syslimits.h*
float.h* libffi/ pmmintrin.h* unwind.h*
g2c.h* limits.h* stdarg.h* varargs.h*
$ ls /usr/local/include/
SDL/

となり、どうやらサーチパス上にstdio.hが無いようです。

755 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 22:12:28 ]
>>735
カレントにfoo.cある時はMakefile無しでも
make foo
だけでデフォルトルールでコンパイルしてくれるぜ
俺はalias使わずに$CFLAGS,$CPPFLAGS,$LDFLAGS,$LDLIBS設定してMakefile用意せずmake派

756 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 02:37:50 ]
cygwinのバージョンを古いのから、新しいのにアップデートさせたら、
コンパイルがかかる時間がかなり延びてしまった。
cygwinってアップデートしたら、コンパイル時間が伸びる場合ってあるの?

757 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 08:50:19 ]
cygwinつーか、gccのバージョンの問題じゃない?
gccは基本的にバージョンが上がるたびにコンパイルが遅くなってる。


758 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:04:08 ]
質問ですっ

現在MinGWにてC++を開発して
JNI連携でeclipseのJAVAで実行しようと考えています。
MinGWでdllを作って中を覗くと、
クラス名が「Java_HelloWorldJNI_sayHelloWorld@8」のように
「@+数字」が付いてしまいます。

こうなるとネイティブメソッド宣言がエラーで出来なくなっちゃいますよね?

このクラス名指定でエラー ⇒ public native String sayHelloWorld@8();

これを回避するには
『dllwrap --add-stdcall-alias』
このような形で指定する事を調べてわかりましたが
これをMinGWのどこで設定するのかがイマイチわからず。。。

Project>Export Makefileで作られたMakefileにも指定する所がなさそうですし。

759 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 14:11:10 ]
>>758
どうやってDLLを作っているですか? dllwrapで作っているわではないの?





760 名前:758 mailto:sage [2008/06/11(水) 14:14:30 ]
MinGW Developer Studio 2.05
を使用してDLLを作っています。

761 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:17:09 ]
MinGW Developer Studioは使ったことないからアドバイスできないや。


762 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:23:31 ]
C++側の話なので該当スレで聞いてください。

763 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:40:21 ]
C++でdllを作ってるわけじゃないから
C++スレ行ってもスレチ言われそうだな。

764 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 16:04:53 ]
このスレでいいよ、MinGWの使い方なんだから。
自分には答えられないけど。


765 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 17:51:49 ]
>>758
JNIはstdcallだから、そのままだと@がついてしまうようだね
DEFファイルを使ってもいいと思うが
--kill-atとか指定したら消えないか?


766 名前:758 mailto:sage [2008/06/11(水) 19:49:30 ]
でけたー!
>765さんありがとう!
なので記述しておきます。

MinGW Developer Studioの「関数名@数字」の「@数字」の消し方

1 MInGWの「Project>Export Makefile」にてMakefile作成

2 Makefileの27行目を下記のように「--kill-at,」を付け加える。
LDFLAGS = -pipe -shared -Wl,--output-def,$(OBJ_DIR)\hogehoge.def,--out-implib,$(OBJ_DIR)\hogehoge.dll.a

LDFLAGS = -pipe -shared -Wl,--kill-at,--output-def,$(OBJ_DIR)\hogehoge.def,--out-implib,$(OBJ_DIR)\hogehoge.dll.a

3 コマンドプロンプトでコンパイルに使用したいMakefileの階層に移動する。

4 コマンドプロンプトでMinGW Developer studioデフォルトインストールなら
「C:\MinGWStudio\MinGW\bin\mingw32-make.exe」を実行する。

5 Makefileの存在する階層にdll完成

結局MinGW Developer Studioの設定のみでは出来ませんでした。。。

オマケ
dllの中身を見るにはコレがベンリー!
Microsoft Visual Studio 6.0>Microsoft Visual Studio 6.0 ツール>
Dependency Walker

767 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 01:17:54 ]
758、ちゃんとまとめて、えらいな。質問者の鑑だ。

768 名前:756 mailto:sage [2008/06/20(金) 01:14:17 ]
>>757
なるほど。
確かに、GCCのバージョンは3.3から3.4ぐらいに上げたわ。
cygwinのバージョンをダウンさせずに、コンパイル時間を早くさせる方法はあるのかな・・

769 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 01:37:44 ]
CPUとHDDを速いものに替えることだろうなあ。



770 名前:756 mailto:sage [2008/06/20(金) 02:57:53 ]
>>769
ハード的に改造しないと無理か・・・ orz

771 名前:デフォルトの名無しさん [2008/06/20(金) 08:57:26 ]
今日、gcc-4.3.0をcygwinからインストールしました。
ただ、間違えてC:/Tmpいかのgccを解凍したフォルダ内にインストールしてしまいました。
それで、一度アンインストールしてから再度別のフォルダにインストールしたいのですが、
アンインストールの仕方が調べてもいまいちわかりません。
どのようにすればよいでしょうか?

772 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 12:06:28 ]
make uninstall やってみた?

773 名前:デフォルトの名無しさん [2008/06/21(土) 03:35:12 ]
やってみましたが、
the uninstall target is not supported in this tree

と出るのみです。

774 名前:デフォルトの名無しさん mailto:sage [2008/06/21(土) 12:36:09 ]
>>771
手動削除でおk。

# make deinstall だったりしない?

775 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 20:44:23 ]
MinGW+Msysな環境をWindowsXP Pro SP2に構築したのですが、Cygwinに比べて非常に
お手軽で素晴らしいんですが、この環境にwgetを入れることは出来ませんか?
GNU Wgetの公式サイトからソース落としてきて
./configure
make したらエラーが出てコンパイルできませんでした・・・・。

776 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 21:40:01 ]
バイナリで良ければMinGW Utilitiesにある

777 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 21:51:24 ]
>>776
バイナリでいいです

sourceforge.net/project/showfiles.php?group_id=2435
ココの
wget-1.9.1.tar.gz
ですよね?
downloads.sourceforge.net/mingw/wget-1.9.1.tar.gz?modtime=1119444412&big_mirror=1
↑これ・・・・
しかしこれダウンロードしてもソースなんですけど?
しかも./configure make したらエラー・・・・

778 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 22:13:03 ]
wget-1.9.1.tar.gz をダウンロードして /usr/src に展開。
wget-1.9.1-mingwPORT.tar.bz2 をダウンロードして適当なところに展開。
cd wget-1.9.1/mingwPORT
sh mingwPORT.sh
質問には Download? と Unarchive? にNo を答えてビルド。
本当は自動でダウンロード&展開してビルドするはずだけどなんかうまく動いてないっぽい。

779 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 22:17:38 ]
しかしwget くらい MSYS Supplementary Tools
( sourceforge.net/project/showfiles.php?group_id=2435&package_id=67879 )
あたりに入れて欲しいな…
MSYS-1.0.11 あたりで入らないかなー?



780 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 22:21:00 ]
>>777
> バイナリでいいです 

gnuwin32.sourceforge.net/packages/wget.htm
の Complete package (Setup) が良いかと。

781 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 22:22:16 ]
>>778
ありがとうございます!!!!
え〜と、本来なら人に聞かずにこういうの自分で分からないといけないと思いますが
一次情報源はどこでしょうか?出来ればポインタ等示していただければ・・・・

782 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 22:23:43 ]
>>780
ん?これは?これはMSYSとは無関係にコマンドプロンプト上で動いたりするのでしょうか?

783 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 22:24:29 ]
>>781
www.mingw.org/MinGWiki/index.php/mingwPORT

>>782
そーです。

784 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 22:30:26 ]
ぶっちゃけ mingwPORT まともにメンテナンスされてない気がするけどなー

785 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 22:34:53 ]
皆様色々ご教示ありがとうございました。
おかげさまでwgetが使えるようになりました。今回は先に作業を始めたと言う事と
せっかくMinGWとMSYSが入っているのでコマンドプロンプト版wgetは見送りました。
しかし別の環境で使う時は手軽にすぐ使えそうで、貴重な情報を頂きました。
本当にありがとうございました〜

786 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 23:05:54 ]
解決したようだから別にいいんだけど、「コマンドプロンプト版」ってどういう意味?
MinGW でビルドした実行可能ファイルは MSYS が無くても動くよ。
単独で動くという意味では mingPORT の wget も GnuWin32 の wget も同じ。

787 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 23:22:59 ]
>>786
ありゃ、そうだったんですか・・・
では、mingPORTのwgetとGnuWin32のwgetの違いとは何でしょうか?

788 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 23:36:10 ]
>>787
詳しく知らないけど当たっているパッチとかビルド時のオプションとかが違う程度じゃないかな。
gnuwin32.sourceforge.net/summary.html によると MinGW でビルドされているようだし。

789 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 12:03:39 ]
mingwportの件、sourceforgeのダウンロードURL変更にスクリプトが追随してない模様。
mirrors.sfファイルの最終行を
DOWNLOADURI=${DOWNLOADURI}.dl.sourceforge.net/sourceforge/${PACKAGE}
に書き換えたらmingwPORT.shで自動ダウンロードできた。



790 名前:デフォルトの名無しさん mailto:sage [2008/07/08(火) 22:03:08 ]
>>710
zshからvi起動してCのソースを書き書きしながらmakeすると
vc++のcl.exe呼び出してコンパイルしてくれるようなことできますか。
シームレスっていうのは、そういうのを言うんだけど。

791 名前:sage [2008/07/08(火) 23:53:16 ]
mingw5.1.4で--exec-charsetオプションが使えないのですが、
どうにか使えるようにはできないのでしょうか?

792 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 20:14:49 ]
>>790
普通に出来るんじゃね?
これまでの流れ読んでないけど、790のことに関しては。

793 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 20:57:16 ]
無理

794 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 23:42:37 ]
>>793
何でよ?
Makefile書いといてviで:!makeでいいべ。

795 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:16:02 ]
先生ー
MSYS 1.0.10のmsys.bat叩いてもコマンドプロンプトが一瞬表示されてもう一回コマンドプロンプトが一瞬表示されてそのあとなんも起こらないんだけどこれどーすればいいの?
コマンドプロンプト手動で出してmsys.bat呼んでやるとちゃんと起動されるんだけど…

環境はVista SP1 Ultimate

796 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:27:50 ]
>>794
>>710をよく読めよ

797 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 00:28:40 ]
1. 麻縄を輪状にして天井から吊す
2. 陰茎をその輪の中に通してユートピア

798 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 09:23:22 ]
妥協案

WindowsホストなVirtualBox上のLinux仮想マシンにWine/VC++/Cygwinをインストールして
ホストの端末エミュレータから仮想マシンにログイン

Linux/Wine/VC++/CygwinホストなVirtualBox上のWindows仮想マシンの端末エミュレータから
ホストにログイン

ただしWineでVC++とCygwin使えるかは知らない。

799 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 22:46:59 ]
簡単にVirtualBox使えばいいじゃん的な事言っている人いるけどさ、
VirtualBoxっつか仮想PCはかなり重いぞ。その点もちっとよく考えろよと。



800 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 22:56:31 ]
>>799
意外に軽いぞ VirtualBox。
cygwinでGNOME動かすと使い物にならないが、VirtualBoxならかなりいい感じ。

ただ、cygwinとVirtualBoxは全然別物だよ。
Windowsの便利なツールとして使えるのがcygwin、
Windows上でただ単に別のOS動かして満足感を味わうのがVirtualBox。

801 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 13:25:27 ]
えー、話の腰を折るようで恐縮ですが、

やねう企画代表者やねうらお(本名・磯崎元洋)が
・ソフトウェアの不正コピーを行っていた
・労働契約上の違反をしていた
・他は不正コピーしていないことを証明しようとしてエロゲーのパッケージを発見し、
 写真に撮ってアップロードしようとした。
d.hatena.ne.jp/pmoky/19000106
やねう企画の裏側(競馬の詐欺ソフトの製作現場)
d.hatena.ne.jp/pmoky/20060510
d.hatena.ne.jp/pmoky/20060511
d.hatena.ne.jp/pmoky/20060512
有限会社やねう企画(所在地・大阪府八尾市末広町2−1−2)が計画倒産
www.sia.go.jp/~osaka/zenso/19.09.pdf

やねうらおプロフィール
性格:友達から「チンピラ」「ヤクザ」と呼ばれている。前世で殺人鬼だった宿業を背負っているという妄想(自覚)あり。
最終学歴:専門学校卒
主な職歴:有限会社センキ(凌辱系アダルトゲームの製作会社)を経て独立、有限会社やねう企画を設立、2006年に計画倒産
代表作:『夜這いマニア』『盗撮マニア』『お楽しみCDシリーズ』『競馬詐欺ソフト』『BM98』

やねうらお語録
>「ワシのほうが潔癖やと思うんやけどな。
>絶対に違法コピーのソフトしか使わんし。
>たとえば強盗に入ったときに、ちょっとかわいそうになって
>十万円だけ残してったら、おかしいやろ?
>自分の『強盗する』という意思に対して矛盾やろ?
>だからワシは、一個も買ったソフトを使ったことがない!!」


802 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 13:27:31 ]
最近、やねうらおは弓月(>>801)とか言う真性のキチガイに絡まれている

【自作自演】弓月城太郎氏に関するまとめ【神秘体験】
d.hatena.ne.jp/yaneurao/20080619

803 名前:デフォルトの名無しさん [2008/07/14(月) 12:42:37 ]
リンクに関する質問なのですが、オブジェクトのリンク順番によって
Undefinedエラーが発生してしまいます。
例えば、"ld a.o b.o"ならOKで、"ld b.o a.o"だとエラーが発生するといった具合です。

リンク順番を適切(?)に設定しなければならないのは
CygwinかLinuxの仕様なのでしょうか?


804 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 12:47:02 ]
Unix系では昔からそうだったと思うが。そうでないと、ライブラリ内の同名関数とバッティングしてしまうからね。

805 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 12:47:42 ]
>>803
Linux だと適当に並べても面倒見てくれる。
cygwin や mingw だとリンク時に参照関係考慮して並べないとだめ、
ライブラリのリンクオプションの順番も重要。

806 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 13:52:31 ]
>>804-805
CygwinというかUnix系自体に触ったことがなかったので
とても迷ってしまいました。ありがとうございます。

807 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 23:42:45 ]
vista64にしたらmsysがうまくうごかねー・・・。なんかあちこちで
スタックエラーで落ちまくり、Permission Deniedで止まりまくりんぐ。
長い死のロードになりそうだぜ・・・ぐへへ・・・(死

808 名前:デフォルトの名無しさん [2008/07/16(水) 12:11:57 ]
誰か助けてください。Cygwin上でgcc4.3.3をmakeしようとしたら、

/home/***/gcc-4.3.1/i686-pc-cygwin/libstdc++-v3/include/ext/pb_ds/hash_policy.hpp:57:87:
error:ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp: No such file or directory

というエラーが出て止まってしまいます。たしかにhash_policy.hppの57行目には
#include <ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp>があります。
しかしその場所を見てみると
\i686-pc-cygwin\libstdc++-v3\include\ext\pb_ds\detail\resize_policy\hash_load_check_resize_trigger_size_base.hpp
という名前のショートカットはありますが、そのリンク先
\libstdc++-v3\include\ext\pb_ds\detail\resize_policy\hash_load_check_resize_trigger_size_base.hpp
のファイルがありません、リンク切れになっています。

単にgcc4.3.3を解凍してconfigure & make下だけなのですが何かインストールが足りないのでしょうか?

809 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 16:38:22 ]
>>808
ペニス



810 名前:デフォルトの名無しさん [2008/07/16(水) 20:39:32 ]
ffmpeg-checkout-2008-07-16のFFMPEGを下記のオプションでconfigureするとエラーが出てしまいます。
何が原因なのでしょうか?アドバイスをおねがいします。
ffmpeg.mplayerhq.hu/ffmpeg-checkout-snapshot.tar.bz2

./configure \
--disable-shared \
--enable-static \
--enable-memalign-hack \
--enable-w32threads \
--enable-postproc \
--enable-libmp3lame \
--enable-libamr_nb \
--enable-libfaad \
--enable-libfaac \
--enable-liba52 \
--enable-libx264 \
--enable-libxvid \
--enable-avfilter \
--enable-gpl \
--extra-cflags=-I/static2/include \
--extra-ldflags=-L/static2/lib \
--disable-debug

エラー
./configure: line 196: pr: command not found
./configure: line 196: pr: command not found
libamr is nonfree and --enable-nonfree is not specified.
If you think configure made a mistake, make sure you are using the latest
version from SVN. If the latest version fails, report the problem to the
ffmpeg-user@mplayerhq.hu mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "config.err" produced by configure as this will help
solving the problem.

811 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 20:43:53 ]
ffmpeg-checkout-2007-07-20では上手くいくのですが
新しいものでないとavfilterが使えないのです。
ライブラリ?はぜんぶmakeに性交しているので、最後のffmpegで行き詰まっています。

812 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 20:59:23 ]
エラーメッセージそのままじゃないか
prコマンドはmingw32のcoreutilsあたりにはいっているはず
libamrは--enable-gplと矛盾するので使えない

813 名前:デフォルトの名無しさん mailto:sage [2008/07/16(水) 21:11:30 ]
アドバイスありがとうございます。
解決できそうです。
l
ibamr is nonfreeとありますね。
とりあえず、--enable-libamr_nbを外しました。

それとpr.exeが見当たらないので探してきます。

814 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 11:51:48 ]
>>808の件、解決しました。
どうやらwindowsで解凍したときに、ファイル名が長いことが原因なのか
ファイル名の末尾が化けたようです。
cygwinのコマンドで解凍したら正常にファイルがありました。
使用した解凍ソフトはLaplus1.53でした。多分バグだと思われます。

815 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 11:57:10 ]
いいえ、仕様です。

816 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 19:02:18 ]
WinFSが実用化してたらこんなしょぼい仕様とはおさらばのハズだったのに

817 名前:デフォルトの名無しさん [2008/07/17(木) 19:42:52 ]
もしかしてCygwinに付属しているg++(非GCC)って
wchar.hインクルードしても、wprintfやらwscanf使えませんか?

#g++ -v
Reading specs from /usr/lib/gcc/i686-pc-cygwin/3.4.4/specs
Configured with: /usr/build/package/orig/test.respin/gcc-3.4.4-3/configure --ver
bose --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --libdir=/usr/lib --libe
xecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --enable-langu
ages=c,ada,c++,d,f77,pascal,java,objc --enable-nls --without-included-gettext --
enable-version-specific-runtime-libs --without-x --enable-libgcj --disable-java-
awt --with-system-zlib --enable-interpreter --disable-libgcj-debug --enable-thre
ads=posix --enable-java-gc=boehm --disable-win32-registry --enable-sjlj-exceptio
ns --enable-hash-synchronization --enable-libstdcxx-debug
Thread model: posix
gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)


818 名前:デフォルトの名無しさん mailto:sage [2008/07/17(木) 23:32:05 ]
Yes
諦めてMinGW入れなさい。

819 名前:デフォルトの名無しさん [2008/07/18(金) 00:07:30 ]
同ディレクトリにある5つのフォルダのmakeを自動的に実行するにはどうしたらいいのですか?


dir1/makefile
dir2/makefile
dir3/makefile
dir4/makefile
dir5/makefile



820 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:15:31 ]
>>819
cd dir1 && make

821 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 00:41:59 ]
>>819
for foo in dir[1-5]; do pushd $foo; make; popd; done

822 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 11:16:33 ]
>>820
>>821
ありがとぅ・

823 名前:デフォルトの名無しさん [2008/07/18(金) 11:41:47 ]
Cygwin + Gcc 4.3.1でOpenMPプログラミングをしようとしたら、
#include文でomp.hがないと言われてしまいました。

gccのconfigureのオプションが足りなかったのでしょうか?
誰か教えてください。

824 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 11:54:33 ]
omp.hがない

825 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 16:33:31 ]
宿題スレでみた /dev/pts と言うのをcygwinで使いたいのだけど、
何かセットアップが必要のようで、わかりません。
/devを見てみると、
stdinとかstdoutと言うのはあるけど、ptsと言うのは見当たりません。
どうすると、使えるようになりますか?

826 名前:質問です。 mailto:sage [2008/07/18(金) 16:56:11 ]
>>824
Gcc 4.3にomp.hは入っていないのですか?
4.2にしか入っていないのですか?

827 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 18:22:26 ]
>>826
omp.hはgccの付属物じゃないよ。OpenMPの付属物。


828 名前:デフォルトの名無しさん mailto:sage [2008/07/18(金) 22:14:32 ]
>>823

--enable-libgomp は指定した?


829 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 01:16:07 ]
>>828
そんなオプションあったんすか!?
configureの説明書きには--disable-libgompしかないから
デフォルトかと思ってました・・・

あ〜、また7時間makeし直しか・・・orz




830 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 02:10:28 ]
>>829
いや、だからおまいの環境、OpenMPのライブラリとヘッダがインストールされてないだろ、と。

831 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 12:30:07 ]
>>830
gcc4.3.1の中にomp.h.inファイルがありましたので、
多分コンパイルの対象外にされているんだと思います。
何かのconfigureオプションが足りない?
続きはOpen MPスレで質問させていただきたいと思ってます。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前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