1

Ubuntu v12.10 で Eclipse CDT/CodeSourcery Lite を使用して C プロジェクトをクロスコンパイルしています。

Eclipse CDT には、次の 3 つの C プロジェクトがあります。

  1. exeTop // libmiddle.a で定義された関数を使用する実行可能ファイル
  2. libmiddle.a // libbottom.a で定義された関数を使用する静的ライブラリ
  3. libbottom.a // 他のライブラリに依存しないスタンドアロンの静的ライブラリ

libmiddle.a をビルドするには、libbottom.a を libmiddle のプロジェクト フォルダーにコピーする必要があります (こちらの手順を参照してください)。

ただし、exeTop をビルドするときは、libmiddle.a にリンクするだけでなく、libbottom.a (libmiddle.a が既にリンクしている) にもリンクする必要があります。

Q1. exeTop から libbottom.a にリンクする必要があるのはなぜですか?

Q2. exeTop から libmiddle.a にリンクするために使用できるコンパイラまたはリンカー オプションはありますか?

4

1 に答える 1

0

「libmiddle.a をビルドするには、libbottom.a にリンクする必要があります。libmiddle.a は libbottom.a に依存しているため、これは理にかなっています。」私はこれがまったくそうであるとは思わない。実際、libmiddle.a は実際には libbottom.a に対してリンクできません。これは、Linux で静的ライブラリが機能する方法ではないためです。静的ライブラリはオブジェクト ファイルの単なる「アーカイブ」であり、他の静的ライブラリに依存させる機能はありません。また、静的依存関係を静的ライブラリ自体に詰め込むことも一般的ではありません。

詳細については、[UNIX] を参照してください。プロジェクトで使用されるライブラリから使用される、プロジェクトのメイクファイルにすべてのライブラリを追加する必要がありますか?

于 2013-03-04T11:35:51.060 に答える