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


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'






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

前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