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的写法根本没变,只是加上一些参数而已。