• ベストアンサー

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