linux下Makefile中包含有shared library動態鏈接庫文件時候的簡單例子


如果不知道什么是makefile,可以首先看我的另一篇博客:

linux下Makefile的簡單例子及解釋

http://www.cnblogs.com/lihaozy/archive/2012/08/09/2629706.html

 

其實,包含有shared library動態鏈接庫文件的編譯鏈接過程,和不包含的在dependency關系的處理上完全一樣,沒什么區別,只是g++編譯鏈接含有shared library文件的時候,命令加上相對應的參數(-shared -fPIC -L. -ltest等)即可。

 

這里有2個文件,一個是test.cpp(中包含有一個test()函數),要編譯成libtest.so

另一個是main.cpp(調用test()),要編譯成main.o

然后將main.o和libtest.so鏈接成一個main(最終的可執行文件)

 

test.cpp   ->   libtest.so

main.cpp  ->   main.o

main.o + libtest.so ->  main

 

下面是代碼和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的寫法根本沒變,只是加上一些參數而已。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM