質問

Windowsをインストールしたままにして、DebianをデフォルトのOSとして実行することにしました。私は常にWindowsで、特にVisual Studioでコーディングしました。現在、Linuxでコードをコンパイルすることに慣れようとしています。

私はまだ多くのドキュメントを読んでいますが、皆さんが私にとってあまりにも簡単にできるとは思わないでしょうが、どこから始めればよいかについての指針を得るのはいいことです。特定の質問がいくつかありますが、この件に関して他に何か提案/推奨することができます。

  • メイクファイルの作成に関する推奨ガイドは何ですか、このメイクファイルからどのようにコンパイルしますか(自分でg ++を呼び出しますか、「メイク」を使用しますか?)
  • 他のLinuxソフトウェアを見ると、ほとんどの場合「設定」ファイルがあるようです。それは正確に何をしますか?必要なライブラリがインストールされているかどうかを確認するだけですか、それとも要件を確認するだけではありませんか?
  • ライブラリをリンクするにはどうすればよいですか?また、これはメイクファイルまたはg ++パラメータにどのように関連しますか? Windowsでは、ライブラリをコンパイルし、ヘッダーファイルを含め、リンクする追加のlibファイルをリンカーに伝え、dllファイルをコピーします。このプロセスはLinuxで正確にどのように機能しますか?
  • コードエディタの推奨事項私は現在nanoを使用しています。vimとemacsのことは聞いたことがありますが、それらがお互いにどのような利点があるかはわかりません。他に何かありますか?なぜ私は前の3つのうちでそれらを検討するのですか?注:私はIDEを探していません。

任意のヘルプ、ガイドへのリンク&ドキュメント(できれば初心者向けのもの)を高く評価しています!

役に立ちましたか?

解決

  

メイクファイルの作成に関する推奨ガイドは何ですか、このメイクファイルからどのようにコンパイルしますか(自分でg ++を呼び出しますか、「メイク」を使用しますか?)

" make"を呼び出して、メイクファイルからビルドします。そして、メイクファイル内で、g ++とldを使用してコンパイルおよびリンクします。

  

他のLinuxソフトウェアを見ると、ほとんどの場合「設定」ファイルがあるようです。それは正確に何をしますか?必要なライブラリがインストールされているかどうかを確認するだけですか、それとも要件を確認するだけではありませんか?

これは通常、構築に使用されている環境に基づいてさまざまなものをセットアップするために使用されるスクリプトです。基本的なシェルスクリプトである場合もあれば、Autoconfなどのツールを呼び出して、構築時に利用可能なものを検出する場合もあります。 " configure"通常、スクリプトは、実験的な機能のサポートなど、ビルドまたは除外するさまざまなオプションをユーザーが指定する場所でもあります。

  

ライブラリをリンクするにはどうすればよいですか?また、これはメイクファイルまたはg ++パラメータにどのように関連しますかWindowsでは、ライブラリをコンパイルし、ヘッダーファイルを含め、リンクする追加のlibファイルをリンカーに伝え、dllファイルをコピーします。このプロセスはLinuxでどのように機能しますか?

ldはGNUリンカーです。それを個別に呼び出すことができます(ほとんどのmakefileはこれを実行します)、またはg ++に委任することができます。 g ++とldに渡すオプションにより、インクルードヘッダーの検索場所、リンクするライブラリ、結果の出力方法が決まります。

  

コードエディターの推奨事項私は現在nanoを使用しています。vimとemacsのことは聞いたことがありますが、それらがお互いにどのような利点があるかはわかりません。他に何かありますか?なぜ私は前の3つのうちでそれらを検討するのですか?注:私はIDEを探していません。

VimとEmacsは非常に柔軟なエディタであり、さまざまな用途をサポートしています。構文の強調表示など、いくつかの最小限のものが必要になることをお勧めしますが、自分にとって最適なものを使用してください。

他のヒント

MandyKの回答と一緒に注意してください。

手作業でmakeファイルを作成することは、Linux distro / unixの異機種間でビルドするための非常に移植性の低い方法です。 makeファイルを自動生成するための多くのビルドシステムがあり、makeファイルなしでビルドします。 GNU Autotools Cmake Scons jam など。

また、configureについてさらに詳しく説明します。

  • 利用可能なコンパイラ、ライブラリ、システムアーキテクチャをチェックします。
  • システムが適切な互換パッケージリストと一致することを確認します。
  • コマンドライン引数を指定して、ビルド、インストールパス、オプションパッケージなどを特化させます。
  • Configureは、システム固有の適切なMakefileを生成します。
  

推奨されるガイドは何ですか   メイクファイルの作成、どのようにコンパイルしますか   このメイクファイルから(私はg ++を呼び出しますか   自分で、「make」を使用しますか?)

GNU Makeマニュアルを読んで、メイクファイルの書き方を学びました

  

他のLinuxソフトウェアを見ると、彼らは   ほとんど常に   「構成」ファイル。正確に何をする   行う?必要な場合のみチェックしますか   ライブラリがインストールまたは実行されます   要件を確認するだけではありませんか?

通常、設定ファイルは autotools に関連付けられています。スクリプトの名前が示すように、ソフトウェアを構成できます。開発者の観点から見ると、これは主にマクロを設定することを意味します。マクロは変数を決定し、使用可能なライブラリなどを決定します。また、ライブラリの可用性もテストします。最後に、スクリプトはGNU Makefileを生成します。これを使用して、実際にソフトウェアをビルドおよびインストールできます。

GNUビルドシステムは多くのシステムの1つにすぎません。 GNUビルドシステムは他のものよりも遅くなる傾向があり、asいMakefileを生成するため、GNUビルドシステムは特に好きではありません。より人気のあるものには、 CMake 、Jam( Boost Jam はC ++にとって興味深いかもしれません)および waf 。いくつかのビルドシステムは単にMakefileを生成するだけですが、他のビルドシステムは完全に新しいビルドシステムを提供します。単純なプロジェクトの場合、Makefileを手で書くのは簡単ですが、「依存関係のチェック」は(ライブラリなどの場合)も手動で行う必要があります。

編集: Brian Gianforcaro もこれを指摘しました。

あなたの質問は少し一般的すぎますが、ここに私がお勧めするものがあります:

  • エディター:vimとemacsが人気です。最も重要なのは、ほとんどのツールと同様に、マスターすることです。 vi(その子孫)はどこでも利用できるため、vimを使用するのが好きですが、特にLinuxを使用している場合は、あまり関係がないかもしれません。プログラミングエディタは問題ありません。

  • configure:大きなプロジェクトを行わない限り、気にしないでください。使用してデバッグするのは悪夢です。プロジェクトを配布する場合にのみ意味があります。その場合は、オートブック http:// sourcesを読んでください。 .redhat.com / autobook / 。他の人が言ったように、代替手段(cmake、sconsなど)があります。私はsconsとautotoolsの両方に精通していますが、小さな(ファイルのカップル)プロジェクトにはmakeを使用しています。

共有ライブラリについて:共有ライブラリに直接リンクすることを除いて、ほとんどWindowsと同じです。Linuxでは.libと.dllの区別はありません。例えば。関数fooを持つライブラリfooの場合:

int foo(void)
{
     return 1;
}

次のようにビルドします:

gcc -fPIC -c foo.c -o foo.o
gcc -shared foo.o -o libfoo.so

メイン(もちろん、実際にはAPIをヘッダーファイルに入れます):

int foo(void);

int main(void)
{
    foo();
    return 0;
}

そして、次のようにリンクします:

gcc -c main.c -o main.o
gcc main.o -o main -L. -lfoo 

-L。リンカーに現在のディレクトリを見るように指示するためにここにあります(Windowsとは反対に、これはLinuxではデフォルトで行われません)-lfooは、ライブラリfooに対してリンクするように指示します。

それでは、開始するには、まず makefilesのガイド。リンクに関するものも含まれています。
私の大学のコンピューターサイエンスの教授が私たちにくれたほんの少しのことで、非常に明確で簡潔で、非常に役立つことがわかりました。

そしてIDEについては、 eclipse 通常、メイクファイルも処理するため。言うまでもなく、コンパイルと標準出力はプログラムですぐに使用できます。
これは主にJava開発を目的としていましたが、C / C ++プラグインもあります!

ESRの本 The Art of Unix Programming をお勧めします。エディター、プログラミング言語などの選択について説明します。また、UnixまたはLinuxでのプログラミングの背後にある考え方にも十分な意味を与えます。

エディターの場合、おそらくVimまたはEmacsが必要です。彼らは両方とも異なっており、どちらが優れているかは、他の何よりも個人的な好みについてです。 Vimを使用しています。コードをすばやく移動して変更を加えるのに最適です。私はEmacsがあまり好きではありませんでしたが、多くの人が好きです。 Emacsは非常に拡張性があり、ニュースリーダーからIDEまであらゆるものに使用できます。両方試して、好きなものを見てください。

  
      
  • コードエディタの推奨事項私は現在nanoを使用しています。vimとemacsのことは聞いたことがありますが、それらがお互いにどのような利点があるかはわかりません。他に何かありますか?なぜ私は前の3つのうちでそれらを検討するのですか?注:私はIDEを探していません。
  •   

Linuxでウィンドウマネージャー(KDE、Gnomeなど)を使用している場合は、ウィンドウマネージャーに標準のテキストエディターを使用することも検討できます。 vim / emacs / nanoよりも優れている主な利点は、Windows環境から来た人には馴染みがあるように見えることです。ウィンドウマネージャで実行するように書かれたエディタには、メニューバー、ファイルを開く/保存ダイアログ、元に戻す/やり直しがあります、およびコンソールエディターではおそらく一致しない他の多くの優れた機能。 (emacsとvimは最近非常に洗練されていますが、だれが;-Pを知っているのでしょうか)

KDE(これは私が使用しているもの)で、KWriteをお勧めします。または、ケイト(セッション管理、ビルトインターミナルパネル、 make の自動呼び出し、C / C ++シンボルビューアーを含むいくつかのプラグイン)の追加機能を備えた、より洗練されたテキストエディターです。 IDEプロジェクト全体のセットアップに煩わされたくない場合は、通常、C ++の作業にKateを使用します。 (FYI KDEのIDEはKDevelopです)

  

コードエディターの推奨事項わたし   現在nanoを使用していて、聞いたことがある   vimとemacs、しかし、何がわからない   それらの利点はお互いにあります。   他に何かありますか?   前のいずれかよりもそれらを検討してください   三?注:私は探していません   IDE。

ViとEmacsは、2つの典型的なUnixエディターです。 IDEではなくテキストエディタを使用するように設定されている場合は、その1つまたはその派生物(vim、xemacsなど)を使用する方法があります。どちらも、デフォルトまたは拡張機能を介して、構文の強調表示とあらゆる種類の機能をサポートしています。これらのエディターの最大の利点は、それらが提供する拡張性です。さまざまなLispを介したemacs、および独自のスクリプト言語を介したvim。

私は個人的にEmacsを使用しているので、Vimについてあまり語ることはできませんが、両方のオンラインに関する多くの情報を見つけることができるはずです。 Emacsには、 this など、いくつかの優れたチュートリアルとリファレンスがあります。 >。

EDIT [Dec 2014]:最近、クロスプラットフォームで高度に拡張可能なエディターの傾向があるようです。これは、IDEよりも小さいが、vi / emacsよりもグラフィカルで、複数のプラットフォーム間でのネイティブ感が必要な場合に適しています。 Sublime または Atom ;これらは両方ともWindows / Linux / Macで機能し、プラグインとテーマの素晴らしいコミュニティを持っています。

g ++を直接呼び出してからautotoolsビルドチェーンを使用するまでの間隔はかなり狭いです。 Linux /オープンソースの世界で利用可能な「プロジェクト」に最も近いものであるオートツールを上手に使いましょう。

Visual Studioから来た人にとっては、このすべてのコマンドラインは難解で厄介に見えるかもしれません。 bash shell / vim / emacs junkieにする前に、いくつかのGUIベースのツールを試してから、移行時間を確保してください...

  • QT Creator mini-IDEを備えたQT 4.5。これが最高のフレームワークであり、競合他社よりも数年先です。
  • Eclipse(C ++)-Windowsでのこれまでの経験から、驚くべきことがわかりました(これはおそらくこれまでに書かれた最高のJavaアプリケーションです)
  • KDevelop
  • アンジュタ
  • Delphiを使用する場合、Lazarus / FreePascalが優れた代替手段です。

vimまたはemacsが最高かつ最速の開発環境を提供しているが、人によってストロークが異なると、長髪はsc笑して主張すると確信しています。 IDEに慣れている人は、切り替えに時間がかかるか、まったく切り替えたくない場合があります。 すべての編集能力について、GUIアプリの作成は確かに80x25ツールの仕事ではありません。 物事のコマンドライン側の専門家になるには何年もかかります。何よりも世界観の変革です。

ここでの適切な回答の中の補足事項として.. Windowsの男として走り始めたい場合は、新しい Qt SDK 。それは家のように感じるでしょう:-)

Makeの代わりにSConsを使用することをお勧めします。同じ仕事をしますが、動的ライブラリ、依存関係などの作成方法を簡単に使用して処理できます。ここに、単純なprogの実際の例を示します

env = Environment()
env.Append(CCFLAGS='-Wall')
env.Append(CPPPATH = ['./include/'])

env.MergeFlags('-ljpeg')
env.ParseConfig("sdl-config --cflags --libs")
env.ParseConfig("curl-config --cflags --libs")
env.ParseConfig("pkg-config cairo --cflags --libs")

env.Program('rovio-pilot', Glob('./src/*.cpp'))

テキストエディターとして、コーディングに関してJEditに満足していますが、それは好みの問題です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top