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/
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'