概述
//代码
add.h
#ifndef _ADD_H
#define _ADD_H
int myadd(int x,int y);
#endif
add.c
#include<stdio.h>
#include"add.h"
int myadd(int x,int y)
{
return x+y;
}
sub.h
#ifndef _SUB_H
#define _SUB_H
int mysub(int x,int y);
#endif
sub.c
#include<stdio.h>
#include"sub.h"
int mysub(int x,int y)
{
return x-y;
}
mul.h
#ifndef _MUL_H
#define _MUL_H
int mymul(int x,int y);
#endif
mul.c
#include<stdio.h>
#include"mul.h"
int mymul(int x,int y)
{
return x*y;
}
div.h
#ifndef _DIV_H
#define _DIV_H
int mydiv(int x ,int y);
#endif
div.c
#include<stdio.h>
#include"div.h"
int mydiv(int x,int y)
{
return x/y;
}
test.c
#include<stdio.h>
#include"add.h"
#include"sub.h"
#include"mul.h"
#include"div.h"
int main()
{
int x = 10;
int y = 20;
int c = myadd(x,y);
int h = mysub(x,y);
int m = mymul(x,y);
int d = mydiv(x,y);
printf("%dt%dt%dt%dn",c,h,m,d);
return 0;
}
静态库:生成
[root@du lib.a]# gcc -c add.c -o add.o
[root@du lib.a]# gcc -c sub.c -o sub.o
[root@du lib.a]# gcc -c mul.c -o mul.o
[root@du lib.a]# gcc -c div.c -o div.o
[root@du lib.a]# ar -rc libmymath.a add.o sub.o mul.o div.o
[root@du lib.a]# ls
add.c add.h add.o div.c div.h div.o libmymath.a mul.c mul.h mul.o sub.c sub.h sub.o test.c
静态库:使用
[root@du lib.a]# mkdir test
[root@du lib.a]# cd test/
[root@du test]# cp ../*.h .
[root@du test]# ls
add.h div.h mul.h sub.h
[root@du test]# cp ../test.c .
[root@du test]# ls
add.h div.h mul.h sub.h test.c
[root@du test]# cp ../libmymath.a .
[root@du test]# ls
add.h div.h libmymath.a mul.h sub.h test.c
新建一个文件test,将所有的头文件和test.c文件和libmymath.a文件拷贝至test文件,
[root@du test]# gcc test.c -L. -lmymath
//生成可执行的a.out文件
[root@du test]# ls
add.h a.out div.h libmymath.a mul.h sub.h test.c
-L:指定库路径
-l:指定库名
动态库:生成
[root@du lib.so]# ls
add.c add.h div.c div.h mul.c mul.h sub.c sub.h test.c
[root@du lib.so]# gcc -fPIC -c add.c sub.c mul.c div.c
[root@du lib.so]# gcc -shared -o libmymath.so *.o
[root@du lib.so]# ls
add.c add.h add.o div.c div.h div.o libmymath.so mul.c mul.h mul.o sub.c sub.h sub.o test.c
shared:表示生成共享库格式
fPIC:产生位置无关码
库名规则:libxxx.so
l:链接动态库,只要库名即可(去掉lib及版本号)
L:链接库所在路径
动态库:使用
将此目录下的libmymath.so文件拷贝至/usr/lib目录下
[root@du lib]# cp /home/duyuetao/code/practice/code/lib.so/libmymath.so .
[root@du lib]# ls
alsa debug gcc java-1.7.0 jvm-exports libmymath.so mozilla sendmail
binfmt.d dracut grub java-1.8.0 jvm-private locale NetworkManager cpp
[root@du lib.so]# gcc test.c -lmymath
[root@du lib.so]# ls
add.c add.h add.o a.out div.c div.h div.o libmymath.so mul.c mul.h mul.o sub.c sub.h sub.o test.c
最后
以上就是玩命身影为你收集整理的编写简单的add/sub/mul/div函数,并打包成动/静态库,并分别使用。的全部内容,希望文章能够帮你解决编写简单的add/sub/mul/div函数,并打包成动/静态库,并分别使用。所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复