• ベストアンサー

cygwinでのgcc

畏れ入ります。 UNIXどタコですm(__)m 最近CYGWINで簡単にUNIXが体験できるということで早速インストールしました。 KDEとGNOME無事起動しました。 で、実は図書館で「Xlibで簡単プログラミング」というのを借りてきたので、ちょっと遊んでみようと思いとりあえずc言語がコンパイル、実行できるかどうかやってみたのですがうまくいきませんでした。 #include <stdio.h> int main(){ printf("HelloWorld \n"); } のようなプログラムをvimで作成するところまではうまくいきました。homeディレクトリに作成されていました。 それで gcc hello.c とやればよいのですよね?! 実は文字がたくさん出て、コンパイルできたのかどうか・・・?そして、a.outというファイルができるのですよね?間違っていますでしょうか? とりあえず、できていません・・・(>_<) ./a.out としても、no fileです・・・ なにか間違っていますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ojin
  • ベストアンサー率43% (280/638)
回答No.5

おかしいな! 私は、http://cygwin.com/ から、ダウンロードしたものでテストしたのですが。残念ですね。Linuxとなると、新たな問題もでるので、出来れば、Windowsの環境で、とりあえずは、Linuxの勉強の方がお勧めなのですが。 .bash_profile でもいいのですが、.bash_profileが無い場合には、.bashrcを読み込むのが、Linuxのブートシーケンスなのですが。違いは、ログインするときには、.bash_profile、シェルが起動する、この場合は、bash(Bourne-Again Shellの略)が起動されるときに、読みこれるのが、.bashrcなんですよ。したがって、どちらか一つでも可能なのですが。 また、混乱させますが、お勉強するのであれば、システムに影響のない、KNOPPIX(よく、Linux系の雑誌に付録で付いています。非常に最近のリリースです。私は、日経Linux4月号の付録-Version 3.1を用いて、Windowsに最新版(Version 3.2)をダウンロードして、KNOPPIX3.1の機能を用いて、ISO 9660イメージをCDROMに焼きました)。GCCや、VIMも利用可能で、ほとんどの、ハードウエアを認識します。もちろん、フリーです。そして、日本語環境です。ハードディスクもマウントできます。 お勉強のためなら、いくらでもお付き合いしますよ。 参考に、私のcygwinの、.bashrcを貼り付けます。 # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi export SHELL=/bin/bash export HOME=/home/XXXXXX (X:編集しました。) export TMPDIR=/tmp export TZ=JST-09 export MAKE_MODE=unix PATH=/usr/local/sbin:/usr/sbin:/sbin:.:~/bin PATH=/usr/local/bin:/usr/X11R6/bin:/usr/bin:/bin:$PATH PAGER=less JLESSCHARSET=japanese-sjis export PATH PAGER JLESSCHARSET PS1="$HOSTNAME:\w$ " if [ -n ${DISPLAY} ]; then export DISPLAY=localhost:0.0 fi if [ ! -n "${TERM}" ]; then TERM=cygwin fi alias ls="ls -aFh --color=auto" alias la="ls -aF" alias ll="ls -l"

azicyan
質問者

お礼

何度もありがとうございます。 大変ためになりますm(__)m さて、クノーピクスですが、すでにためし済みです。 実はハードは4台所有で、(そのうち一台は抜け殻ですが・・・)うち3台は起動不能・・・でした。 一台目はNECのVS23Dで、LINUXがうまくインストールできない代表でした(結構検索で引っかかりますよ)簡単に言うとキーボードがUSBであることに起因していて、ほとんどのサイトでは「USBレガシーを無効にすればよい」とありますが、そうすると今度は、キーがまったく受け付けなくなり言語を選ぶ段階で選択できずに結局だめ・・・。でも、TurboLINUXだけはあるサイトで「VSシリーズ専用ブートディスク」を提供してくれている人がいてそれを使えばインストールできました。で、このPCの音源はOTIといってこれまた、古いのにLINUXでサポートされていない代表格で(トホホ)VSでは音が鳴らないと結構有名です。あるサイトで、「OTIでcdからの音を鳴らすのに成功」なんてありましたがまだ確認していません。クノーピクスですがやはりカーネルの構築の初期段階でストップ、だめなようです。 2代目はvaio505です。ノートです。実はオプションを指定すれば良いらしいのですが、結局そのとうりにやってみましたが、同じところでストップ、断念しています。 3台目が自作(といってもベアホーン)で唯一PS2端子があるものです。これだと起動できました・・・が、画面表示が・・・横長で、右と左が見えません・・・ 実はこの不具合はこのモニタではウィン98をクリーンインストの場合にもでる問題で(ドライバを当てれば直る)LINUX特有の問題ではないと認識しています。おそらくリフレッシュレートとかを選択しなおせば良いのでは・・・。と思っていますが、まだやっていません・・・というか良くわからない・・・やり方が・・・かなりドタコです・・・

azicyan
質問者

補足

ああ、すいません! ちなみに再インストールでコンパイルが出来るようになりました! 何が問題だったのでしょうか・・・ 出来れば解決したかったです(~_~)

その他の回答 (4)

  • ojin
  • ベストアンサー率43% (280/638)
回答No.4

ディフォルトで導入したのですよね! 私も、cywwinのファイルのストラクチャについては、良く分からないのですが、私の環境と少し異なります。 ライブラリィーが参照できなくて、ライブラリーのリンクができないために、エラーになっているようです。 ちなみに、私のcygwinでは、 /usr/lib/gcc-lib/i686-pc-cygwin/3.2 のようになっています。 /usr/lib/gcc-lib/i686-pc-cygwin/3.2/../../..libcygwin.a(pseudo-reloc.o)(.text+0x49): libcygwin.aは、 /lib/libcygwin.a /usr/lib/libcygwin.a として、存在します。 パスなどの環境変数は、ユーザホームのディレクトリィの.bashrcで記述されます。 $ ls -la で、.bashrc(実は、隠しファイル)を表示、catや、moreで内容を参照できます。 あまり、深刻な問題ではないと思いますよ。頑張りましょう。 環境をペーストしたいのですが、通常のUnixの環境のように、3ボタンマウスでペーストできいので諸裏約します。

azicyan
質問者

お礼

何回もありがとうございました。 結局再インストールしてしまいました(-_-;) 何とか直したかったのですが・・・ 今度は普通にLINUXインストールして使ってみます

azicyan
質問者

補足

うーーん・・・ だめみたいです・・・ というか、まず.bashrcがないようです。 隠しファイルだからかなと vi ~/.bashrc とためしに編集すれば出るかと思ったら newfile と出ます。つまりない、ということですよね?! いろいろ調べましたところ 「Cygwinを起動すると、.bashrcが読み込まれない。これは、起動時は.bashrcではなく.bash_loginが読み込まれるため。」 とありました・・・しかしこの、.bash_loginもありません・・・ あるのは、.bash_history、.bash_profile、.bashrc.swpです。 libcygwin.aはエクスプローラでみたところ /cygwin/lib/libcygwin.a に存在しているだけです。 ここにパスをとうすんですよね・・・

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.3

コンパイルエラー(正確にはリンクエラー)ですね。 undefind reference toが出ていればリンクエラーです。 通常出ないと思うので、cygwinインストールしなおしかな。

azicyan
質問者

お礼

ありがとうございます それが手っ取り早そうです

  • ojin
  • ベストアンサー率43% (280/638)
回答No.2

できたよん~。もう寝る時間を過ぎたよ。 viでやったけど、vimと同じ。 $ gcc hello.c $ ls $ a.exe hello.c $ ./a (多分パスを通していないないので、とりあえず) HelloWorld 問題ないよ。 a.outでも表示されるんじゃないのかな。 $ ls -la で、a.outの属性を確認してみたら。 -rwxrwxrwx $ gcc --help で、gccのオプションみられよ。 ojinは、No.1氏のようなプログラム専門家じゃないから、内容はあてにしないでね! CD-ROMブートのKnoppixも勉強のために面白いよ。

azicyan
質問者

補足

夜遅くまでありがとうございますm(__)m ls -la とすると、hello.cはあるものa.exeはないみたいです(>_<) 実は /usr/lib/gcc-lib/i686-pc-cygwin/3.2/../../..libcygwin.a(pseudo-reloc.o)(.text+0x49):undefind reference to `__RUNTIME_PSEUDO_RELOC_LIST' cygwin/3.2/../../..libcygwin.a(pseudo-reloc.o)(.text+0x51):undefind reference to `__RUNTIME_PSEUDO_RELOC_LIST_END__' num_of_bfd=37 num_of_left_bfd=37 whole_size=0 whole_reduced_size=0 collect2: ld retrnde 1 exit status と出るんです・・・ コンパイルエラーなんでしょうか??

noname#5645
noname#5645
回答No.1

出来ているとしたらa.exeですよ~。

azicyan
質問者

お礼

ありがとうございます・・・ 出来ていないようです・・・

関連するQ&A

  • cygwinのgccで正常にコンパイルできない。

    cygwinのgccで正常にコンパイルできない。 cygwinのvimで、以下のプログラムを書きました。 ------------------------------------------------------------- #include <stdio.h> int main(void) { int no; printf("Please input something:"); scanf("%d", &no); printf("It is %d that you input it:\n", no); return (0); } ------------------------------------------------------------- それからgccでコンパイルしました。 コマンドは以下の通りです。 $ gcc test.c すると以下のエラーが出ました。 test.c:10:9: warning: unknown escape sequence: '\033' このようにコンパイルできない状態です。 どのようにすると正常にコンパイルできるようになるでしょうか?

  • Cygwinのエディタについて

    Cygwinのエディタのviで、c言語のプログラムを作成し、gccでコンパイルすると、a.exeというファイルができます。私は今まで、Linuxのviでc言語のプログラムを実行するときは、a.outを使っていました。 Cygwinのviでもa.outを使うにはどう設定すればよいのでしょうか?

  • Cygwinのgccについて

    駄文で申し訳ありません。 cygwinのgccでC言語で作成したプログラムをコンパイルしたんですが、以下のようなコメントが返ってきました。 これはどういう意味なんでしょうか?warningなんで無視できるのでしょうか? ご教授下さい。 $gcc sample.c sample.c:60:2: warning: no newline at end of file /cygdrive/c/DOCUME^1/ユーザ名/LOCALS^1/Temp/cc6gA6nk.o:sample.c(.text+0xd7): undefined reference to _perro' collect2: ld returned 1 exit status

  • cygwinのgccが、エラーになってしまいます。

    テストプログラム $ cat test.c #include <stdio.h> int main (void) { printf("Hello, World!\n"); return 0; } これを、コンパイルすると $ gcc test.c gcc: error trying to exec '/usr/lib/gcc/i686-pc-cygwin/4.5.3/cc1.exe': execv: Bad address /usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../libcygwin.a(libcmain.o):(.text+0xba): undefined reference to `_WinMain@16' collect2: ld はステータス 1 で終了しました と、このようなエラーが出てきました。 ファイルを確認しても、何も作られていません。 $ ls test.c 対処方法を、ご教示願います。

  • Cygwin VistaでGCCが動きません

    cygwinでgccを利用してコンパイルをしようと考えたのですが、 exeファイルを吐き出しませんし、プログラム内にエラーを組み込んでも反応しません。 http://sang-wing.cocolog-nifty.com/blog/2009/06/vista-cygwin-gc.html こちらのサイトを参考にして、インストールは行いました。 同じような症状が出た方、解決方法ご教授ください。

  • Cygwin(gcc) lexライブラリ

    WindowsXPにCygwinのすべての項目をInstallにしてインストールして bison -d abc.y flex abc.l と実行し、 abc.tab.c , abc.tab.h , lex.yy.c ができた状態で gcc abc.tab.c -ll とした時 /user/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: cannot find -ll collect2: ld returned 1 exit status とメッセージが表示されコンパイルできないでのですが gccには標準lexライブラリが無いのでしょうか? それとも別のことが原因なのでしょうか? このエラーの回避法、もしくは別のソフトなどでこれと同様のことができるなら教えてください。

  • Cygwinでコンパイルできません。

    CygwinをすべてDefaultでインストールしました。 テキストエディタとしてTeraPadを利用しています。 テラパッドでtest.cというファイルをつくり、 gcc -o test test.c でコンパイルしたのですが gcc:test.c:No such file or directory gcc:no input files と表示されます。 正常にコンパイルするにはどうしたらいいのでしょうか? 自分はC言語について勉強したばかりでくわしくないので、この質問を書いていて言葉足らずなところがあり説明不十分かもしれませんが、よろしくお願いします。

  • cygwin gcc c99 での isnormal と strtold の使用

    Cygwinのgccで-std=c99オプションを付けて 以下のコードをコンパイルしようとしています。 #include <stdlib.h> #include <math.h> int main() { isnormal(0.123); strtold("0.123", NULL); return 0 ; } $> gcc -std=c99 test_strtold.c ですが、コンパイルできず、2つの関数とも'undefined reference'になります。 -std=c99を付けてコンパイルする方法または この記述と同等の別の記述がありましたらご教授願います。 よろしくお願いいたします。

  • cygwinでX-window

    自宅のWindowsXPのPC上で、X-Window関連(<X11/Xlib.h>をincludeする等で)のC言語を勉強したいと思い、 VisualCで最初に試したのですが上手くいかず、cygwinをインストールしました。 コンパイル時に、 /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: cannot find -lX11 collect2: ld returned 1 exit status とエラーが出て実行ファイルが出来ません。 ちなみに、cygeinをインストール時にパッケージは全てDLしました。 初歩的な質問かもしれませんがよろしくお願いします。

  • cygwin1.dll を必要としないCのexeファイルを作りたいです

    はじめまして、shigure2005と申します。 私は普段UNIX上でC言語のプログラムを書いているのですが、 わけあってWindows上で動くようにする必要が出てきました。 そのプログラムをそのままcygwinでコンパイルしたところ コンパイルでき、実行ファイルも問題なく実行できたのですが、 このままですとcygwin1.dllが必要になってしまいます。 ですので、これがなくてもすむような別のコンパイル方法を 教えていただければと思ったしだいです。 過去ログを探って、MinGWについては試してみたのですが、 コンパイルは問題なく通るのに、なぜか実行ファイルを 実行すると、うまく起動できません。Mingwは以下のファイルを ダウンロードしてインストールしました。 mingw-runtime-3.8.tar.gz mingw-utils-0.3.tar.gz MinGW-4.1.1.exe w32api-3.3.tar.gz binutils-2.15.91-20040904-1.tar.gz mingw32-make-3.80.0-3.exe PATHは「C:\mingw/bin;C:\cygwin/bin」の順に通していて、 コマンドプロンプトでコンパイルし、コンパイル後、 コンパイルに用いたdllがcygwin1.dllでないのを確認して います。また、helloworldなど簡単なプログラムなら、 Mingwでもうまくコンパイルできてます。cygwinとMingwで コンパイル性能に大きな差などがあるのでしょうか? また、cygwinだけでも、Mingw-runtimeをインストール すれば、cygwin1.dllを必要としない形式にコンパイル できるという話を聞いたのですが、ご存知の方が いらしたら教えてください。 どうぞよろしくお願いします。