.cppファイルと.hppファイルから静的ライブラリを作成する方法を教えてください。 .oと.aを作成する必要がありますか?また、静的ライブラリを他の.cppコードでコンパイルして使用する方法を知りたいと思います。 header.cpp
、header.hpp .
を作成しますheader.a
を作成します。 test.cpp
でheader.aをテストします。コンパイルにg ++を使用しています。
.oファイルを作成します。
g++ -c header.cpp
このファイルをライブラリに追加し、必要に応じてライブラリを作成します。
ar rvs header.a header.o
ライブラリを使用:
g++ main.cpp header.a
次のように、ar
ユーティリティを使用して.a
ファイルを作成できます。
ar crf lib/libHeader.a header.o
lib
は、すべてのライブラリを含むディレクトリです。このようにコードを整理し、コードとオブジェクトファイルを分離することをお勧めします。通常、すべてを1つのディレクトリに入れると見苦しくなります。上記の行は、ディレクトリlib
にlibHeader.a
を作成します。したがって、現在のディレクトリで次の操作を行います。
mkdir lib
次に、上記のar
コマンドを実行します。
すべてのライブラリをリンクするとき、次のようにできます。
g++ test.o -L./lib -lHeader -o test
-L
フラグはg++
を取得して、lib/
ディレクトリをパスに追加します。このようにして、g++
は、libHeader
を検索するときに検索するディレクトリを認識します。 -llibHeader
は、リンクする特定のライブラリにフラグを立てます。
test.oは次のように作成されます。
g++ -c test.cpp -o test.o
.cppファイルと.hppファイルから静的ライブラリを作成する方法を教えてください。 .oと.aを作成する必要がありますか?
はい。
。oを作成(通常どおり):
g++ -c header.cpp
アーカイブの作成:
ar rvs header.a header.o
テスト:
g++ test.cpp header.a -o executable_name
1つのモジュールのみでアーカイブを作成するのは少し無意味であることに注意してください。同じように簡単に書くことができます。
g++ test.cpp header.cpp -o executable_name
それでも、実際のユースケースはもう少し複雑で、より多くのモジュールがあるという疑念のメリットを提供します。
お役に立てれば!