linux下Makefileにshared libraryダイナミックリンクライブラリファイルが含まれている場合の簡単な例

2306 ワード

もしmakefileが分からないなら、まず私のもう一つのブログを見てもいいです.
linuxでMakefileの簡単な例と説明
http://www.cnblogs.com/lihaozy/archive/2012/08/09/2629706.html
 
実は、shared libraryダイナミックリンクライブラリファイルのコンパイルリンク過程が含まれています.含まないdependency関係の処理と全く同じです.違いはありません.g++コンパイルリンクにshard libraryファイルが含まれている場合は、コマンドに対応するパラメータ(-shard-fPIC-L.-ltestなど)を加えるだけでいいです.
 
ここには2つのファイルがあります.一つはtest.cpp(test()関数が含まれています.libtest.soにコンパイルします.
もう一つはメールです.
メールとlibtest.soを一つのメールにリンクします.
 
test.cpp   ->   libtest.so
main.cpp  ->   メール.o
main.o+libtest.so->  メーン
 
以下はコードとmakefileです.
test.cpp&main.cpp:
//test.cpp
#include <iostream>
using namespace std;

void test()
{
    cout<<"test() in test.cpp"<<endl;
}
//main.cpp
#include <iostream>
using namespace std;

void test();

int main()
{
    test();
}
makefile:
main: main.o libtest.so
    g++ -o main main.o -L. -ltest

main.o: main.cpp
    g++ -o main.o main.cpp -c

libtest.so: test.cpp
    g++ -o libtest.so test.cpp -shared -fPIC

clean:
    rm *so* *.o main
大きな違いはなく、dependecyの書き方はまったく変わっていません.パラメータを加えただけです.