您的位置:首页 > 运维架构 > Linux

linux编译静态库和动态链接库

2012-11-13 13:50 253 查看
库可以有三种使用的形式:静态、共享和动态。静态库的代码在编译时就已连接到开发人员开发的应用程序中,而共享库只是在程序开始运行时才载入,在编译时, 只是简单地指定需要使用的库函数。动态库则是共享库的另一种变化形式。动态库也是在程序运行时载入,但与共享库不同的是,使用的库函数不是在程序运行开 始,而是在程序中的语句需要使用该函数时才载入。动态库可以在程序运行期间释放动态库所占用的内存,腾出空间供其它程序使用。由于共享库和动态库并没有在
程序中包括库函数的内容,只是包含了对库函数的引用,因此代码的规模比较小。

静态库的编译
1.g++ -c xx.cpp  //将xx.cpp生成xx.o目标文件。And,你有xx.cpp,也应该对应有xx.h来声明
2.ar crv libxx.a xx.o      //ar是建立或修改备存文件的命令,参数c表示建立备存文件,r表示插入备存文件,v表示显示执行过程。
3.ranlib libxx            //不是必要的,该步是为函数库生成一个内容列表

动态库的编译
只要在编译时添加选项即可
1.g++ xx.cpp -fPIC -shared -o libxx.so
//-fPIC 表示编译为位置独立的代码  -shared表示编译成动态库

最后注明:在想编译成ARM体系的库也很简单,用arm-linux-g++(或其它arm编译器)代替上面的g++即可,原理一样,选项也一样,编译出来的库就是可以用在ARM板上用的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: