7

ターミナルで g++ を使用して .cpp ファイルをコンパイルしようとしています。

g++ -o main main.cpp \
  -I/usr/include/glib-2.0 \
  -I/usr/include/json-glib-1.0 \
  -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ \
  -L/usr/lib/x86_64-linux-gnu -ljson-glib-1.0 -lglib-2.0

そして、それは機能します。

しかし、これらの .so ライブラリを追加し、g++ のインクルード ファイルを永続的に追加して、毎回これらを入力する必要がないようにしたいと考えています。また、他のアプリケーションにも適用できるようにしたいと考えています。

私はubuntuを使用しています。

誰か助けてくれませんか?よろしくお願いします。

4

3 に答える 3

2

これを行う最善かつ最も柔軟な方法は、ビルド システムを介して、Make や CMake などを使用することです。しかし、深刻な学習曲線があります。今のところは、コマンド ラインから正常に使用したのと同じコマンドを実行するスクリプト ファイルを作成する方が簡単かもしれません。

bash シェルを使用していると仮定します。ファイルを編集するだけで、「compile.bash」と呼んでください。ファイルの 1 行目に「#!/bin/bash」と入力します。これにより、システムはこのファイルを bash スクリプト ファイルとして解釈するようになります。次に、1 つまたは複数の後続の行に、質問で指定したコマンドを、以前に使用したとおりに入力します。ファイルを保存します。次に、コマンド ラインから次のコマンドを実行します: "chmod +x compile.bash" (引用符なし)。新しいファイルがコンパイル元のディレクトリにあることを確認してください。以前使用していた長いコマンドラインの代わりに、「compile.bash」と入力するだけで済みます。

サンプルファイル「compile.bash」

#!/bin/bash
g++ -o main main.cpp -I/usr/include/glib-2.0 -I/usr/include/json-glib-1.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ -L/usr/lib/x86_64-linux-gnu -ljson-glib-1.0 -lglib-2.0
于 2013-09-15T04:25:02.550 に答える
2

さらに調査する必要がある 3 つの異なる点があります。

LIBRARY_PATH

の値LIBRARY_PATHは、 のようにコロンで区切られたディレクトリのリストですPATH。ネイティブ コンパイラとして構成されている場合、GCC は、特別なリンカー ファイルを検索するときに指定されたディレクトリを試しますGCC_EXEC_PREFIX。GCC を使用したリンクでは、-l オプションで通常のライブラリを検索するときにもこれらのディレクトリが使用されます (ただし、-L で指定されたディレクトリは最初に来ます)。

  • OS が共有動的ライブラリを検索する方法。あなたは Linux を使っているので、このページ(議論中ldconfig) をお勧めします。

最も重要な:

  • ソフトウェア構築ツールまたはMakefileとは何ですか。そのためには、Sconsページ、CMakeページ、またはGNU Makeページを参照できます。簡単に言うと、各オプションは、ソフトウェアのビルド方法を説明し、実際に単純なコマンド (選択したシステムに応じてsconscmake、または) を使用してソフトウェアをビルドする手段を提供します。make

ですから、あなたの質問に対する答えはまったくありません。これらを調べるようにアドバイスすることしかできません。

于 2013-09-15T04:26:39.307 に答える