作业: 将判断是否为闰年函数 打印菱形的函数 编码实现 并制作成共享库 通过main.c使用该共享库
①mkdir zuoye(新建文件夹)
②cd zuoye
③vim year.c
C语言判断是否为闰年
#include<stdio.h>
void is_leap(int year)
{
if(year%400==0)
printf("%d 此年为闰年\n",year);
else
{
if(year%4==0&&year%100!=0)
printf("%d 此年为闰年\n",year);
else
printf("%d 此年为平年\n",year);
}
}
:wq 保存并退出
④vim year.h
xxx.h文件的作用 xxx.h是xxx.c文件的对外发言人 (说明xxx.c有哪些函数,是什么类型的 。。。)
void is_leap(int year);
⑤ vim star.c
输出菱形
#include<stdio.h>
void star(int n)
{
int i,j;
for(i=1; i<=n; i++)
{
for(j=1; j<=n-i; j++)
{
printf(" ");
}
for(j=n-i+1; j<n+i; j++)
{
printf("*");
}
printf("\n");
}
for(i=n-1; i>=1; i--)
{
for(j=1; j<=(n-i); j++)
{
printf(" ");
}
for(j=n-i+1; j<n+i; j++)
{
printf("*");
}
printf("\n");
}
}
⑥vim star.h
void star(int n);
⑦ gcc -c -fpic year.c -o year.o
gcc -c -fpic star.c -o star.o
⑧ gcc -shared year.o star.o -o libzuoye.so
链接库命名规则 lib开头 .so结尾
⑨vim main.c
#include "year.h"
#include "star.h"
void main(){
is_leap(2021);
star(5);
}
⑩gcc main.c -l zuoye -L /root/zuoye
编译 main.c 使用动态链接库 双L原则
-l, 要使用哪个库文件 -L, 链接时 除了系统路径下去搜索指定的库文件 还可以去哪些目录找库文件
-
使用 ./a.out 运行程序
-
./a.out: error while loading shared libraries: libzuoye.so: cannot open shared object file: No such file or directory 有可能出现此报错
-
vim /etc/ld.so.conf 进入文件 添加动态链接库文件 所在目录
-
输入 ldconfig 更新配置文件 此时可运