博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言库的制作
阅读量:5983 次
发布时间:2019-06-20

本文共 1035 字,大约阅读时间需要 3 分钟。

  hot3.png

制作C语言库

编写头文件,在文件内声明要用到的函数,

libh.h

#include 
// 两数相加
int add(int a, int b);
// 绝对值
int mabs(int a);

编写c语言库源码文件, 在文件内定义之前声明的函数。

libc.c

/*两数相加函数*/
int add(int a, int b)
{
return a+b;
}
/*一个整型数的绝对值*/
int mabs(int m)
{
int result = m;
if (m < 0) {
result  = 0-m;
}
return result;
}

生成C语言库

静态库

  1. gcc -c libc.c -o libc.o

将libc.c 编译成二进制文件取名为libc.o

ar cr libaku.a libc.o

将libc.o制作成名为libaku.a的静态库

动态库

  1. gcc -c libc.c -o libc.o

将libc.c 编译成二进制文件取名为libc.o

gcc -shared -fPIC -o libsku.so libc.o

将libc.o制作成名为libsku.so的动态库

调用C语言库

编写测试程序

main.c

#include "libh.h"
int main(int argc, char const* argv[])
{
int n = 0;
scanf("%d", &n);
printf("|%d| = %d\n%d + 3 = %d\n", n, mabs(n), n, add(n, 3));
return 0;
}

编译测试程序

测试静态库

  1. gcc main.c -L . -laku -o maina

-L指定库路径,-l指定库名, 库名为lib后半部分,编译测试程序取名为main**

./maina

运行main

测试动态库

  1. gcc main.c -L . -lsku -o mains

-L指定库路径,-l指定库名, 库名为lib后半部分,编译测试程序取名为main**

./mains

运行main

动态库, 静态库, 之间的差别

对于静态库而言, 当程序编译时会把静态库载入到程序当中去, 生成的运行包会比较大。

而且完成后静态库删除对程序不会有影响

但是动态库却是相反的, 它不会载入程序, 库必须保留,

转载于:https://my.oschina.net/dengwo/blog/599378

你可能感兴趣的文章
Activity的生命周期,BACK键和HOME键生命周期
查看>>
draw lines on ColumnChart
查看>>
有关UNICODE、ANSI字符集和相关字符串操作
查看>>
【程序练习】——括号匹配
查看>>
校验知识:CRC32、MD5、SHA1概念及可靠性现状
查看>>
Android 之 Spinner
查看>>
.net 异常捕获
查看>>
C# Get Desktop Screenshot ZZ
查看>>
[C#]AES加密算法实现
查看>>
springrain 1.1 发布,spring 的极简封装
查看>>
有关虚拟内存的笔记
查看>>
DirectX基础学习系列8 渐进网格以及外接体
查看>>
经典网页设计:20个与众不同的国外 HTML5 网站
查看>>
Firemonkey的几个特色属性(二)
查看>>
WCF数据交互时长度超过8192
查看>>
可进可退,jQuery图片、视频、flash播放插件prettyPhoto使用记录
查看>>
JAVA大数(转)
查看>>
[C#]嵌入互操作类型
查看>>
IDL文件详解[转]
查看>>
sencha touch 坑爹的Panel,数据不显示了...
查看>>