- ベストアンサー
Linuxでc言語を学習したいのですが!
Linuxでc言語を学習したいのですが、色々調べてみても、GUIでの操作ができるという、”Gtk”が候補に挙がっていました。 因みに、LinuxはRed Hat8~Fedora Core3まで使用して、ネットワークサーバーを組んでいます。しかし、GUIで動かしてみると、CPUがCeleron-1.2GHzでも 重いです。 Linuxでc言語を始めようと、考えているのは、組み込みLinuxを選択したいからです。osのカーネルの部分を組み替えるには、c言語が必要だと思ったのです。 まずは、c言語かなと、考えて、windowsでも出来る CPad for Borland C++Compilerを導入して、少しだけ、学習を始めました。このまま、windowsペースのcの学習では、Linuxでのc言語に入れないと考え始めたのです。 他のものもあると思いますが、Linuxでのviエディターベースでcが出来る方法は、何でしょうか? デストリビュウションに付属のコンパイラーは使ったことも、使い方もしりませんが、lanレベル3の状態でこれらを呼び出すにはどうすればいいのでしょうか? 以上のことについてお伺いします。 1、Linux用のcコンパイラーできれば、デガッパもついてるものはありませんか?別々のはありますが! 2、vi エディターベースで出来ませんか?sshでやれれば一番やりやすいのですが? 3、デストリビュウションに付属のコンパイラーのテキストペースでの使用方法 4、tarペースのインストール方法が良く分かりません。1、の新たなコンパイラーのインストールにrpmであれば助かります。もしtarペースのインストールにつて必要ならば、教えてください。あつかましいですが。 以上4つに、ついてお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
しつこいですがもう少し書きます。 > gcc: no input filesのメッセージを gccが ないとして誤解したのが理由でした。 「入力ファイルがないよ」といわれてるだけですね。プロンプトで単に"gcc"とだけ入力したのではないですか。入力ファイルとは"gccで処理するファイル"のことですから最低でも"gcc hoge.c"としないとこのエラーが出ます。 > 要するにgccでは厳しい判断をするのですね! ファイルが指定されていないのだからコンパイルエラーではないです。コンパイル云々以前にgccコマンドの使い方が違っていたということですね。当然コンパイラの判断が厳しいからでもありません。 > エラーチェックを緩和することは出来ないのでしょうか? できます。たとえば"-w"オプションを付けて実行すると警告メッセージが抑制されます。 しかし、基本的にはそんなメッセージが出ないように組むべきでしょうね。警告にしても「エラーではないが問題になるかもよ」ってことで出すわけですから、逆に厳しくチェックした方がいいと思います。私の場合はたいてい"-Wall"オプションをつけて実行してます。 基礎の勉強をしているのですから、こんなところで手を抜いても何の得にならないです。後でどえらいエラーにつながるより、gccのメッセージと謙虚に向き合いましょう。。まあ、特殊な処理をしてるときなんかは警告が出てもそのまま行くしかないという状況もあるんでしょうが、それはもう少しスキルが付いてからの話。問題が起こった場合にきちんと解決できる力がついてからでしょう。 Gtk+に関しては次のURLを読んでみてください。基本から教えてくれます。 http://www.gnome.gr.jp/docs/gtk+-2.0.x-tut/gtk-tut.html ライブラリという言葉がわからないなら次のURLを読んでみてください(あまり適当なページではないかもしれない。そのときは自分で調べてください)。 http://www.st.rim.or.jp/~phinloda/cqa/cqa13.html http://homepage2.nifty.com/ssfu/others/computer/linux_ldd01.html ということで、これで解決でいいですか? (また長くなった。反省...)
その他の回答 (5)
> これで解決でいいです! おめでとうございます。 > gccのエラーメッセージの行数のかぞえかたもくせがあります。空白行もひとつと数えますね! でないとエディタの行番号と違ってしまうのでデバッグが大変だと思いますが。 > 念のためお断りしますが、gccだけでやったことはありません。 失礼しました。状況がわからなかったので。想像で書きました。 おまけ:技術者向けで叩かれないためのアドバイス 1. 言葉は正確に 例えば"Gtk+のコードにGtk+が入っていた"というのが何を意味するのかいまだによくわかりません。 2. 質問にはちゃんと答える 多くの回答者はちゃんと答えたいので補足を求めているんです(中にはいじめっぽいのもあるけど)。だから聞かれたことにはきちんと答えましょう。回答者の言葉を引用して補足すればわかりやすいんではないでしょうか。謙虚にね。 3. 状況は詳細に この投稿で言うとリモートでやってる部分とローカルでやってる部分がわかりずらいです。きちんと前置きして書きましょう。 4. 自助努力 「教えてくん」は嫌われます。わからないことは自分でも調べましょう。"-Wall"オプションの先頭が大文字かどうかは"man gcc"でわかります。Webで検索してもわかるはずです。 そんなとこでしょうか。余計なお世話かもしれませんが、"Linux OSの解析や分析"をするってのはそんなに簡単にできません。私なんかとても歯がたつレベルじゃないです。正直、"ライブラリ"の意味がわからないレベルでは遠い道のりです(無理だと言ってるわけじゃないですよ。誰でも最初は初心者ですから)。陰ながら応援してます。がんばって欲しいということであえて書きました(だから怒らないでね...)。 (また長くなってしまった。期待してるから書くんですよ~)
お礼
以下のサイトからgtkのコードを読んでみたのですがそれが余計な+をつけてしまい、"Gtk+のコードにGtk+が入っていた"等と口走ってしまったのです。 http://www.kitanet.ne.jp/~asler/linux/gtk/ja/gtk_tut_ja-2.html#ss2.2 ライブラリーについてのURLは参考になりました。.DLLのたとえで説明されていましたが、『プログラムはなぜ動くのか』矢沢久雄著 にも目をとうしていた最中でした。Linux的な理解まではまだですが! 本当に ご親切にありがとうございました。再見!
またまたすみません。2点だけ。 1. コンパイラの違いが気になるならWindowsでもGCCが動きます。検討してはどうですか。参考URLを読んでください。 2. 今後この手の疑問は技術者向けの「OS/Linux」および「プログラミング/C&C++」のカテゴリで質問した方がより良い回答が得られやすいと思います。 ということでがんばってください。
お礼
度々ありがとうございます。 基本はLinux OSの解析や分析を目標にしていますのでこれ以上windowsにかかわっていきたいわけでもありません。 なぜこのカテゴリーに来たのかといえば、Linux C言語のところをうろうろしていたら、初心者 門外漢 扱いを受けたので ここならと 考えたのです。 無理に背伸びすることもないし、かえって いごごちがいいです。あしからず。 本当に ありがとうございました。
> 前提にLinuxをwindowsからsshを使ってPuttyの画面で操作していますので、 Puttyで検索すると「Windowsで動くTelnet/SSHクライアント」ということらしいですがこれでいいですか?当方Windowsを持っていないので、このへんにからむことはちょっとわからないかも。 > ここを、はっきりさせてください。 了解すればいいという意味ならわかりました。 > Fedora3のメニュウにはgccが見当たりませんでした。 このメニューってKDEとかGnomeのメニューですか?それともPuttyでなんか表示されるんですか?どれにしても「メニューにないからインストールされてない」とは限りませんし、なければインストールするだけですが(RedHat9でいいならそれでいいんですが)。 > 従って、いくら、Puttyからgccのコマンドを送っても、そのようなコマンドはないとされました。 ということはインストールされてないのかな?ローカルでもだめでした? > Gtk+のコードにはGtk+がはいっていましたが、! すみません、おっしゃる意味がいま一つわかりません。Gtk+のサンプルコードを見たんでしょうね。2番目のGtk+は何を指しますか?はいっている...? ところで、質問としては解決済みと考えていいんですかね?(どこまで解決したのか自信がもてないので)
お礼
ごめんなさい。 ごちゃごちゃしてきてすみません。 RedHatのメニュウを眺める限りでは、gcc等 どこにも見当たりませんでした。たぶんですが、これはGNUのコンパイラーのコマンドで別にこういうようなメニュウは、存在していないんでしょうね! 今更、又 fedora3の入れ替えをして確かめることはしませんが、多分、もれていたのでしょう。入れたつもりだったのですが!(開発のところにチェクしてインストールしました。)Gtk+については、使い方も、何も分かりません。 でも色々とありがとうございました。
補足
Linux(Fedora3)のコンパイラーに対して判断したのは gcc: no input files のメッセージを gccが ないとして誤解したのが理由でした。windowsのコンパイラーが実行したものが、gccで はねられて、出てくるメッセージだったのでした。警告なしのメッセージなので、てっきり、誤解しました。 要するにgccでは厳しい判断をするのですね! エラーチェックを緩和することは出来ないのでしょうか? Fedora3にはgccが入っていたはずです。勝手に、エラーメッセジを解釈しただけでした。翻弄させて、ごめんなさい!
補足で言ってることがいまいちわかりにくいです。もう少し整理してください。 > gccをfedora3で探しても出てきませんでした、 これはコマンドが見つからないということでしょうか?デフォルトでインストールされてないだけではないですか。 > 仕方なくRetHat9を入れなおして、うごかしていますが、なぜ、gccという項目がでてこないのに、 項目とは何を指しますか? > RetHat9では動かせるのでしょうか? 何を?文脈から言えば「gccコマンドがないのにgccが使えるのはなぜか?」とも読めますがそんなわけないですよね。 > gtkも入っているみたいですが、これはgccとは又違った、コマンドを使うのでしょうか? 勘違いされてませんか?Gtk+はライブラリ、GCCはコンパイラです。比べるものではないです。それともGtk+のことではないのでしょうか...? > 「日系Linuxのセキュアサーバーの創り方」にはgccがfedora3に3.4.2のバージョンで入ってるようになっているのに。でもこれは、重いので、RetHat9でやっています。 gccがなかったからRedHat9にしたんですよね。ということはFedoraCore3でgccを使ったことがない。それで"重い"ってどういうことを言ってます? 推測できる部分もありますがあえて聞き直しました。重箱の隅をつついてるように思われるかも知れませんが、正直言ってこの辺をうまく説明できないようだとプログラミングは難しいです。プログラムを組むためには論理的に説明(思考)する能力が必要だからです。わからないなりに問題を整理して、できるだけあいまいな部分がないように説明してください。勉強のつもりで再度補足お願いします。 ちなみに私はプログラミングの専門家でもないし、Cもほとんど使ってません(基礎的な勉強だけです)。OSもVine2.6ですができるだけおつきあいします。
補足
ありがとうございます。 <「gccコマンドがないのにgccが使えるのはなぜか?」とも読めますがそんなわけないですよね>は 前提にLinuxをwindowsからsshを使ってPuttyの画面で操作していますので、ここを、はっきりさせてください。 Fedora3のメニュウにはgccが見当たりませんでした。 従って、いくら、Puttyからgccのコマンドを送っても、そのようなコマンドはないとされました。それでRedHat9を使ってやっています。これでは動いています。 <Gtk+はライブラリ>なのですか!意味は良く分かりませんが!Gtk+のコードにはGtk+がはいっていましたが、!
とりあえず参照URLでも読んでください。
お礼
gccの使い方が、よく分かりますね! 大変参考になりました。 ありがとうございます。
補足
gccをfedora3で探しても出てきませんでした、仕方なくRetHat9を入れなおして、うごかしていますが、なぜ、gccという項目がでてこないのに、RetHat9では動かせるのでしょうか?gtkも入っているみたいですが、これはgccとは又違った、コマンドを使うのでしょうか? 「日系Linuxのセキュアサーバーの創り方」にはgccがfedora3に3.4.2のバージョンで入ってるようになっているのに。でもこれは、重いので、RetHat9でやっています。
お礼
"-Wall"チェックのWは大文字ですか? これで解決でいいです! ありがとうございました。 今までwindowsのコンパイルで作成したものの点検をしているのですが、gccでは8割引っかかっています。 void int 等など、散々です。基準が定まっていないし、人の書いた写しが、ほとんどですから 大変です。 gccのエラーメッセージの行数のかぞえかたも くせがあります。空白行もひとつと数えますね! 念のためお断りしますが、gccだけでやったことはありません。エラーの入ったコードを入れていたのです。