本程序的功能主要是计算三个变量的和,最大值,最小值和平均值!
max.c
int max(int var1,int var2,int var3){ int x; if(var1>var2){ if(var1>var3) x=var1; } else { if(var2>var3) x=var2; else x=var3; } return x; }
add.c
int add(int var1, int var2,int var3){ return var1 + var2 + var3; }
min.c
int min(int var1,int var2,int var3) { int y; if(var1<var2) { if(var1<var3) y=var1; } else { if(var2<var3) y=var2; else y=var3; } return y; }
avg.c
int avg(int var1,int var2,int var3){ return (var1+var2+var3)/3; }
testcb.c
#include <stdio.h> #include "cb.h" int main(int argc, char **argv) { int var1; int var2; int var3; printf("please input the var1: "); scanf("%d", &var1); printf("please input the var2: "); scanf("%d", &var2); printf("please input the var3: "); scanf("%d", &var3); printf("the add is %d\n", add(var1, var2,var3)); printf("the max is %d\n", max(var1, var2,var3)); printf("the min is %d\n", min(var1, var2,var3)); printf("the avg is %d\n", avg(var1, var2,var3)); return 0; }
cb.h
#ifndef cb_h #define cb_h int add(int, int, int); int max(int, int, int); int min(int, int, int); int avg(int, int, int); #endif
下面是附加文件Makefile
OBJ=testcb.o add.o max.o min.o avg.o testcb:$(OBJ) cb.h gcc -o testcb $(OBJ) testcb.o:testcb.c add.o:add.c max.o:max.c min.o:min.c avg.o:avg.c .PHONY:cleanA clean cleanA: rm testcb $(OBJ) clean: rm $(OBJ)
通过 gcc *.c -o tescb 进行编译,./testcb 运行。结果如下
dingxin@dingxin-VirtualBox:~/Study1$ ./a.out please input the var1: 1 please input the var2: 2 please input the var3: 3 the add is 6 the max is 3 the min is 1 the avg is 2
通过make
dingxin@dingxin-VirtualBox:~/Study1$ make cc -c -o testcb.o testcb.c cc -c -o add.o add.c cc -c -o max.o max.c cc -c -o min.o min.c cc -c -o avg.o avg.c gcc -o testcb testcb.o add.o max.o min.o avg.o
查看文件大小
dingxin@dingxin-VirtualBox:~/Study1$ ls -l 总用量 72 -rw-r--r-- 1 dingxin dingxin 119 3月 22 18:06 add.c -rw-r--r-- 1 dingxin dingxin 1240 3月 22 18:06 add.o -rwxr-xr-x 1 dingxin dingxin 8640 3月 22 18:21 a.out -rw-r--r-- 1 dingxin dingxin 71 3月 22 18:06 avg.c -rw-r--r-- 1 dingxin dingxin 1264 3月 22 18:06 avg.o -rw-r--r-- 1 dingxin dingxin 209 3月 22 18:05 cb.h -rw-r--r-- 1 dingxin dingxin 265 3月 22 18:23 Makefile -rw-r--r-- 1 dingxin dingxin 189 3月 22 17:39 max.c -rw-r--r-- 1 dingxin dingxin 1280 3月 22 18:05 max.o -rw-r--r-- 1 dingxin dingxin 189 3月 22 18:05 min.c -rw-r--r-- 1 dingxin dingxin 1280 3月 22 18:05 min.o -rwxr-xr-x 1 dingxin dingxin 8640 3月 22 18:22 testcb -rw-r--r-- 1 dingxin dingxin 572 3月 22 18:08 testcb.c -rw-r--r-- 1 dingxin dingxin 2720 3月 22 18:08 testcb.o
使用make cleanA清楚.o文件
dingxin@dingxin-VirtualBox:~/Study1$ make cleanA
rm testcb testcb.o add.o max.o min.o avg.o
二、使用静态库文件,生成静态库。库文件以lib为前缀,我这里创建库名libcb.a的库,使用命令ar,具体如下
ar rcs libcb.a add.o max.o min.o avg.o
使用静态库,创建库文件的接口文件头文件,本文中是cb.h文件,使用库文件的文件testmi.c包含头文件cb.h文件即可,使用如下命令编译:
gcc -o testcb testcb.c -static -L. -l cb
查看文件大小
dingxin@dingxin-VirtualBox:~/Study1/libsamp$ ls -l 总用量 956 -rw-r--r-- 1 dingxin dingxin 209 3月 22 18:49 cb.h -rw-r--r-- 1 dingxin dingxin 5408 3月 22 18:49 libcb.a -rwxr-xr-x 1 dingxin dingxin 958488 3月 22 18:54 testcb -rw-r--r-- 1 dingxin dingxin 572 3月 22 18:49 testcb.c
三、使用动态库文件:生成动态库文件。库文件一般以lib为前缀,紧接着是库的名称,扩展名为.so,我这里创建库名libcb.so的库,具体如下
ar rcs libcb.so add.o max.o avg.o min.o
然后编译
gcc -shared -fPIC libcb.so add.o max.o min.o avg.o
继续
gcc -o testcb testcb.c -L. -lcb
查看文件大小
dingxin@dingxin-VirtualBox:~/Study1$ ls -l 总用量 88 -rw-r--r-- 1 dingxin dingxin 119 3月 22 18:06 add.c -rw-r--r-- 1 dingxin dingxin 1240 3月 22 18:33 add.o -rwxr-xr-x 1 dingxin dingxin 7608 3月 22 19:06 a.out -rw-r--r-- 1 dingxin dingxin 71 3月 22 18:06 avg.c -rw-r--r-- 1 dingxin dingxin 1264 3月 22 18:33 avg.o -rw-r--r-- 1 dingxin dingxin 209 3月 22 18:05 cb.h -rw-r--r-- 1 dingxin dingxin 5408 3月 22 18:40 libcb.a -rw-r--r-- 1 dingxin dingxin 5408 3月 22 19:06 libcb.so drwxr-xr-x 2 dingxin dingxin 4096 3月 22 19:05 libsamp -rw-r--r-- 1 dingxin dingxin 265 3月 22 18:23 Makefile -rw-r--r-- 1 dingxin dingxin 189 3月 22 17:39 max.c -rw-r--r-- 1 dingxin dingxin 1280 3月 22 18:33 max.o -rw-r--r-- 1 dingxin dingxin 189 3月 22 18:05 min.c -rw-r--r-- 1 dingxin dingxin 1280 3月 22 18:33 min.o -rwxr-xr-x 1 dingxin dingxin 8640 3月 22 19:07 testcb -rw-r--r-- 1 dingxin dingxin 572 3月 22 18:08 testcb.c -rw-r--r-- 1 dingxin dingxin 2720 3月 22 18:33 testcb.o
初次利用库,只能在老师后面亦步亦趋,很少有自己的创新点,希望以后能接触更多高深的知识充实自己