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


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を速いものに替えることだろうなあ。






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

前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