■掲示板に戻る■
■過去ログ倉庫めにゅーに戻る■
OpenGLとcygwin
- 1 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/09/19(火) 14:46
- win2000にcygwinを入れて、gccを使ってOpenGLのプログラムを
作っています。出来上がった実行ファイルをcygwinのない環境でも
動かしたいんですが、ヘッダーを全部
#include <mingw32/hoge.h>
#include <mingw32/GL/hoge.h>
として、-mno-cygwinを付けてコンパイルしても、
objdumpで出来上がりのファイルを覗くと
やっぱりcygwin1.dllが読み込まれています。
なんかやり方間違ってるでしょうか?
- 2 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/09/20(水) 11:06
- hello worldで-mno-cygwinやっても駄目?
あるいは
ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/gcc-2.95.2
こっち使うとか。
- 3 名前: 1 投稿日: 2000/09/20(水) 13:03
- どうもありがとう。
OpenGL関連のライブラリを使わなければ、上記の方法で問題なく
コンパイルできて、cygwin以外の環境で実行もできるのですが、
OpenGLを使うと駄目です。書き忘れましたがglut(3.7)を使っています。
で、上で教えていただいたものも以前に試そうとはしたんですが、
現在ではmingw32の機能(?)はcygwinの中に取り込まれているみたいで、
cygwinのincludeの下にはmingw32関連も入っています。
(でもGL関連を読み込むと-mno-cygwinを付けてもcygwin1.dllが
読み込まれてしまいます。)
にんともかんとも。
- 4 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/09/20(水) 15:33
- OpenGLは使った事ないからわからんけど、そいつ(ライブラリ?)が
Cygwinに依存してたりしない?
mingw32は確かにCygwinに取り込まれてるけど、C Runtimeに
crtdll.dll使っちゃうから、_beginthreadex()とか一部使えない
ライブラリ関数もあるよ。
- 5 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/09/21(木) 19:22
- リンクする時、-mno-cygwinを付けてないとか?
- 6 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/09/21(木) 22:31
- >>5
ldにそんなオプションないよ。
- 7 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/09/22(金) 02:41
- ldにはないけど、-mno-cygwinでコンパイルした時は
ldのかわりに、
gcc -mno-cygwin
とかでリンクしないと駄目じゃない?
ヘッダーファイルもmingwにないのは、cygwinの方読み込むし
- 8 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/09/22(金) 04:01
- >>7
gccに-v付けてどういうオプションでldが実行されてるか見てみなよ。
gcc -mno-cygwin -c a.c
ld -o a.exe a.o /usr/lib/crt1.o -lmingw32 -lcrtdll -lkernel32 -luser32
/usr/lib/crt0.oだとcygwin1.dllに依存。
- 9 名前: 8 投稿日: 2000/09/22(金) 04:20
- と思ったが、リンク時にもgcc使うなら確かに-mno-cygwin必要だな。
普段直接ld呼んでたからそれ前提にしちゃってた。スマ
- 10 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/09/22(金) 05:50
- リンクするとする時、どっかで
-lcygwin
してるとか?
objdumpよりは、リンク時のMAP見た方がいいと思うよ。
- 11 名前: 1 投稿日: 2000/09/22(金) 13:45
- 返事送れてすみません。
gcc -mno-cygwin -v でコンパイルしてみました。
出力の読み方がよく分からないんですが、とりあえず
読み込んでるようなライブラリは
> -lglut32 -lglu32 -lopengl32 -lm -lmingw32 -lgcc
> -lmoldname -lcrtdll -luser32 -lkernel32 -ladvapi32 -lshell32
でした。-lcygwin というのはありませんでした。それと
> collect2.exe -Bdynamic /usr/lib/crt1.o
とあり、crt0.oは見当たりませんでした。これって何かの
手がかりになるんでしょうか。
- 12 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/09/22(金) 17:41
- libmって、cygwinに依存してない?なんかlibcygwinに吸収されてるっポイ。
cygwin用のmath.hとかが読み込まれてる可能性があるので
一度、libcygwin.aをリネームして、リンクしてみたら?
リンクエラーが出るだろうけど、mapみるより、早いと思う。
- 13 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/09/23(土) 21:58
- www.cim.pe.u-tokyo.ac.jp/~kawachi/software/cygwin.html
- 14 名前: 1 投稿日: 2000/09/24(日) 21:46
- 12さん、ビンゴでした。
-lmオプションを付けずにコンパイルしたところcygwin1.dllを
読み込まずに作ることができました。
> gcc main.c -lopengl32 -lglut32 -lglu32 -DWIN32 -mno-cygwin
cygnusのgccでは-lmを付けなくても三角関数などは
普通に使えるようなので私の場合支障ありません。
どうもありがとうございました。マジうれしいです。
これでVC++使わずに済みます。
#mule+gccの環境から離れられなくて…。
- 15 名前: 1 投稿日: 2000/09/25(月) 17:05
- 結局OpenGLとは関係のない問題でごめんなさい。
それで"cygwin mingw32 libm"とかでサーチしてみると
下のサイトが引っかかりました。
www2.tech-unet.ocn.ne.jp/__dic__/perl/mno-cysgin-howto.html
FAQっぽかったです。
#でもここの邦訳(おそらく機械翻訳)は読んでいて
#無性に腹が立つっす。でもサイトの運営者には感謝です。