前言:
现时小伙伴们对“程序打包成动态库有什么好处”可能比较注意,看官们都需要分析一些“程序打包成动态库有什么好处”的相关内容。那么小编在网上搜集了一些有关“程序打包成动态库有什么好处””的相关资讯,希望你们能喜欢,咱们一起来了解一下吧!有add.c、sub.c、mul.c、div.c分别是加减乘除函数。
把mul.c和div.c编译为静态库libmuldiv.a,把add.c编译为静态库libadd.a
再把libmuldiv.a和libadd.a 连同sub.o一起编译为动态库 libadd_sub_mul_div.so
// cat add.c#include <stdio.h>int add(int a,int b){return a+b ;}//cat sub.c#include <stdio.h>int sub(int a,int b){return a-b ;}//同样有mul.c和div.c[zzz@localhost dynamic]$ cat head.h#include <stdio.h>int add(int,int);int sub(int,int);int mul(int,int);int div(int,int);[zzz@localhost dynamic]$ cat t.c#include <stdio.h>#include "head.h"int main(){printf("add 6+3 %d\n",add(6,3));printf("sub 6-3 %d\n",sub(6,3));printf("mul 6*3 %d\n",mul(6,3));printf("div 6/3 %d\n",div(6,3));return 0;}
下面示例展示如何把静态库编译到动态库中。用到-Wl,--whole-archive选项:
[zzz@localhost dynamic]$ cat makefileall:g++ -c -fPIC add.c sub.c mul.c div.car rcs libadd.a add.oar rcs libmuldiv.a mul.o div.o#g++ -shared -Wl,--whole-archive libmuldiv.a libadd.a -Wl,--no-whole-archive sub.o -o libadd_sub_mul_div.sog++ -shared sub.o -Wl,--whole-archive libmuldiv.a libadd.a -Wl,--no-whole-archive -o libadd_sub_mul_div.sog++ -o t t.c -Wl,-rpath=./ -L. -ladd_sub_mul_div
执行make,生成执行文件得到预期效果。
铁锈笔记
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #程序打包成动态库有什么好处