2

g ++とgdbの使用を開始するための優れた「ハウツー」または「開始」ガイドはありますか?

いくつかの背景。まともなプログラマーですが、これまでのところ、私はVisualStudioのWindowsですべてを行ってきました。

私は、ターミナルを使用してファイルをコンパイルした経験が少しあります(.hおよび1または2 .cppをはるかに超えていません)。しかし、それ以上のものはありません。

Linuxでコーディングを開始する方法についての優れた入門書を知っている人はいますか?

4

2 に答える 2

4

Advanced Linux ProgrammingAdvanced Unix Programmingなどの優れた本を読んでください。Linux Documentation Projectの高度な bash スクリプト ガイドとその他のドキュメントもお読みください。

明らかに、ラップトップに Linux ディストリビューションをインストールします (一部の VM ではなく、実際のディスク パーティションにインストールします)。Debian のようなディストリビューションがある場合は、それを実行aptitude build-dep gcc-4.6 geditして、多くの興味深い開発者向けパッケージを入手してください。

コマンドラインのスキルを学びます。manコマンドの使い方を学びます。manpagesおよびmanpages-devパッケージをインストールした後、入力しますman man(スペースバーを使用して「テキストをスクロール」し、qキーを使用して終了します)。intro(2)の man ページもお読みください。cptryなどのコマンドの使い方を忘れたときcp --help

1 人の小さなプロジェクトであっても、gitのようなバージョン管理システムを使用してください。

ファイルをバックアップします。

LinuxカーネルsyscallsフリーソフトウェアX11PosixUnixに関するウィキペディアの関連ページをいくつか読んでください。

コマンドラインを使って頑張ってください。たとえば、コマンド ラインですべてを 1 週間以上実行してみてください。デスクトップや、場合によってはマウスを使用しないでください。使い方を学ぶemacs

GNU makeなどのビルダー プログラムについて読む

ソース コードから (たとえば、 sourceforgefreecode、またはgithubから)いくつかのフリー ソフトウェアを取得し、ビルドとコンパイルの練習をします。ソースコードを調べる

コマンドライン(ターミナル)で開始するための基本的なヒント(コマンドが見つからない場合は、それを提供するパッケージをインストールする必要があります)。

  • 実行しemacsます。チュートリアルメニューがあります。30分練習します。

  • helloworld.cプログラムを編集する(main何らかのhello関数を呼び出す)

  • でコンパイルしgcc -g -Wall helloworld.c -o helloworldます。警告が表示されなくなるまでコードを改善してください。ほとんどすべての警告を常に or に-Wall渡しgccます。g++

  • で実行します./helloworld

  • でデバッグしてgdb ./helloworldから

    1. helpコマンドを使用する
    2. コマンドを使用して、関数b mainにブレークポイントを追加します。mainhello
    3. gdbを使用して実行しますr
    4. btバックトレースを取得するために使用します
    5. pいくつかの変数を出力するために使用します
    6. cデバッグされたプログラムの実行を続行するために使用します。
  • を使用してプログラムをMakefile構築できるように、小さなものを書きますhelloworldmake

  • Emacs 内から( makewith M-x compile) およびgdb(with )を呼び出す方法を学ぶM-x gdb

valgrindの詳細を確認してください(ほとんどのメモリ リークを検出するため)。おそらく、アプリケーションのいくつかでBoehm の GCを使用することを検討してください。

于 2012-10-23T06:20:49.647 に答える
3

学ぶべきことがたくさんあります。詳細は説明しませんが、数十年にわたって unix および c/c++ の開発を行ってきた者として、いくつかのトピックから始めようと思います。

私の主なアドバイスは、実験を開始することです。C または C++ でできるだけ単純なプログラムを作成し (「Hello there, world!」と出力するのが伝統的です)、それをコマンド ラインからコンパイルして実行する方法を理解します。次に、コンパイルされたバージョンを取得したら、デバッガーで起動し、ブレークポイント、式の出力などを試します。この最も単純なプログラムを起動して実行し、デバッガーが何であるかをある程度理解したら、クラス、関数、構造体、またはその他の良い小さなステップと思われるものを追加して、サイクルをもう一度実行してください。この方法では、非常に大きなプログラムから開始する場合よりもはるかに高速に処理を進めることができます。

まだ非常に高いレベルですが、少なくとも少し理解する必要があるいくつかのトピックを以下に示します。「小さく始めて学ぶ」アプローチは、以下のトピックのいずれにも適していることに注意してください。

  • 実行中g++: コマンド ライン構文に関する非常に優れたオンライン ドキュメントが用意されています。
  • 使用するテキスト エディターを検索します。 Vimemacsは伝統的 (そして非常に強力) ですが、どちらも比較的急な学習曲線を持っています。助けてくれる人がそばにいるなら、それはとても良いことです。他にも選択肢はありますがemacs、私自身ユーザーとして、残念ながらそれらに精通していません。
  • に慣れてgdbください。これは、プログラムを理解するための非常に強力なツールです。繰り返しになりますが、詳細な読書に報いる広範なオンライン ドキュメントがあります。
  • 標準の UNIX コマンドにある程度精通していると役に立ちlsますcdgrepソースファイルをすばやく検索します。
  • コマンド ラインアプローチとide アプローチに慣れる必要があります。前者は従来の UNIX 開発者モデルであり、この知識のほとんどをアイデアに隠されるのではなく、他のツールのコレクションから必要な操作をまとめます。

プロジェクトが複数ファイルの場合、特に全学期のプロジェクトの場合は、次のトピックについて学習することも検討してください。

  • Makeは、複数ファイルのプロジェクトをコンパイルおよびリンクする方法を説明するためのツールで、毎回手動で行う方法を覚える必要がありません。 Makeは、残念ながら使いにくいという評判がありますが、これは、複数のディレクトリにまたがる非常に大規模なプロジェクトにほとんど当てはまります。
  • いくつかの比較的小規模なプロジェクトであっても、gitまたはなどのソース コード管理システムを利用することを強く検討します。hgすばやくバックアップできるように、行ったことのアーカイブ バージョンを保持しておくと、はるかに安全です。gitとは両方ともhg、小規模な 1 回限りのプロジェクトにはやり過ぎですが、単独で学習する価値があります。今日私が理解している従来の知恵は、それらは哲学とコア機能が非常に似ているということですがhg、コマンドラインレベルでは間違いなく少し一貫しているため、開始するのが簡単です.

これはかなり威圧的だと思います。特に、以前に UNIX コマンド環境に実際に触れたことがない場合はなおさらです。上記の最初のアドバイスをもう一度強調します。単純なことから始めて実験することから学びましょう。これにより、特定の時点で頭を悩ませなければならない新しいものの量が最小限に抑えられます。

于 2012-10-23T05:05:58.360 に答える