C库的制作
1.库的概念:库是一种可执行的二进制形式;
2.分类:
1》静态库
①、在程序编译时会被连接到目标代码中;
②、程序运行时不再需要该静态库;
③、体积较大;
2》动态库/共享库
①、在程序编译时不会被连接到目标代码中,而是在程序运行时才被载入内存中;
②、在程序运行时需要动态库存在;
③、代码体积较小;
3.库的制作:
1》静态库的制作:
①、创建静态库的源代码:
testlib.c
int fun(int a){
return a * a;
}
②、将静态库的源代码编码成.O文件
gcc -c -o testlib.a testlib.o
③、将.o文件制作成静态库
ar crs libtest.a libtest.o
④、测试静态库是否创建成功
#include <stdio.h>
#include "testlib.h"
int main(void){
int n;
scanf("%d", &n);
printf("%d\n", fun(n));
}
编译上面的代码:gcc -o main main.c -ltest -L.
执行:./main
2》动态库的制作:
①、创建动态库的源代码:
testlib.c
int fun(int a){
return a*a;
}
②、将动态库的源代码编程成.o文件:testlib.o
gcc -fPIC -Wall -c testlib.c
③、将.o文件制作成动态库;libtest.so
gcc -shared -fPIC -o libtest.so testlib.o
④、测试动态库libtest.a是否创建成功
#include <stdio.h>
#include "testlib.h"
int main(void)
{
int n;
scanf("%d", &n);
printf("%d\n", fun(n));
}
----->>编译上面的测试代码:gcc -o main main.c -ltest -L.
----->>装载动态库:
---------------------》》第一种方法:将动态库放入系统库目录下:
sudo cp libtest.so /lib
---------------------》》第二种方法:将动态库路径加入到库的配置文件:/etc/ld.so.conf.d/libc.conf
----》打开配置文件:sudo vi /etc/ld.so.conf.d/libc.conf
----》写入库路径:
----》使之生效:sudo ldconfig
--------------------》》第三种方法:将动态库路径加入到环境变量中
export LD_LIBRARY_PATH=动态库的路径
--------------------》》执行:./main
C库的制作的更多相关文章
- iOS开发中静态库之".framework静态库"的制作及使用篇
iOS开发中静态库之".framework静态库"的制作及使用篇 .framework静态库支持OC和swift .a静态库如何制作可参照上一篇: iOS开发中静态库之" ...
- Linux下C++静态库、动态库的制作与使用
参考博文:C++静态库与动态库 >> 静态库 1. 静态库的制作 a) 编辑 name.cpp 和name.h文件 b) $g++ -c name.cpp //注意带参数-c,否则直接编译 ...
- iOS开发之静态库的制作
当你需要和别人分享代码,但又不想让别人看到你内部的实现时就需要制作静态库,通常用于第三方SDK 下面就分享一下制作静态库(.a)的过程: 1.打开Xcode,新建workspace 2.随便给work ...
- Egret第三方库的制作和使用(模块化 第三方库)
一.第三方库的制作 官方教程:第三方库的使用方法 水友帖子:新版本第三方库制作细节5.1.x 首先在任意需要创建第三方库的地方,右键,选择"在此处打开命令窗口" 输入egret c ...
- [置顶] linux学习之静态库和动态库的制作与使用
linux中静态库和动态库的制作与使用 一.静态链接库 1.首先编写模块程序example.c.example.h 2.使用gcc -c example.c -o example.o编译example ...
- 静态库与动态库的制作以及程序的动态函数库解析ldd;ldconfig与/etc/ld.so.conf
静态库的制作步骤: (1)gcc -c mylib.c -o mylib.o (2)ar rc libmylib.a mylib.o 动态库的制作步骤: gcc -shared mylib.c -o ...
- linux系统环境下的静态库和动态库的制作
linux系统下的应用编程需要系统提供的库文件,包括静态库或动态库.不管是静态库还是动态库,都是编译好的二进制文件.在我们编译程序时要链接的目标文件,静态库是链接的时候直接编译到程序里,和程序成为一体 ...
- iOS静态库的制作与引用
[iOS静态库的制作与引用] 1.Configuring Exported Headers To configure which headers are exported to clients, se ...
- iOS 静态库的制作
按照公司的想法 要开发一款SDK,于是就抽空学习一下静态枯的制作过程. 在IOS中有静态库和动态库的区分,下面我们就来详细介绍一下. 一.静态库和动态库的详细介绍. 我们平时的工程中或多或少都要引入第 ...
- 动态库*.so制作
转自:http://www.2cto.com/os/201308/238936.html 在linux下制作动态库*.so. 1.linux下动态库的制作 //so_test.h #include ...
随机推荐
- JAVA设计模式之:訪问者模式
訪问者模式: 一个作用于某对象结构中各元素的操作,使你能够在不改变各元素类数据结构的前提下添加作用于这些元素的新操作. 结构对象是訪问者模式必备条件.且这个结构对象必须存在遍历自身各个对象的方法. 适 ...
- java反射中getDeclaredMethods和getMethods的区别
getDeclaredMethods() 返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法,包括公共.保护.默认(包)访问和私有方法, ...
- android5.1 Recovery添加从U盘升级功能【转】
本文转载自:http://blog.csdn.net/tfslovexizi/article/details/73835594 之前看到过一个人写了4.4上添加U盘升级功能的博客http://blog ...
- Set的非重复判断是根据什么判断的
HashSet 首先来看下HashSet的add()这个方法的源代码: public boolean add(E e) { return map.put(e, PRESENT)==null; } 由此 ...
- bzoj2073
状压dp 预处理每个状态的初始值,枚举子集就行了 #include<bits/stdc++.h> using namespace std; , inf = ; int W, n; < ...
- 使用centos 5.x 32位系统安装astgo 2014 v7.0教程(含全套安装文件)
版本特色: 全自动安装 安装过程中不用频繁输入yes或回车 自带完整号码归属地数据库 自带触屏版WAP ·首先确定你需要使用astgo 2014 7.0还是7.3: astgo 2014 v 7.0 ...
- tinymce 富文本编辑器 编写资料
tinymce官方文档: 粘贴图片插件 博客搬运地址 使用Blob获取图片并二进制显示实例页面 tinymce自动调整插件 是时候掌握一个富文本编辑器了——TinyMCE(1) XMLHttpRequ ...
- Android基础整理
1.使用Debug方式调试程序 2.使用LogCat方式调试程序 3.使用Toast动态显示信息 4.使用AlertDialog实现提示框.. 5.使用OptionsMenu实现选项菜单
- 题解报告:hdu 1272 小希的迷宫
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 Problem Description 上次Gardon的迷宫城堡小希玩了很久(见Problem ...
- VMware 14 Pro 永久许可证激活密钥
VMware 14 Pro 永久许可证激活密钥 FF31K-AHZD1-H8ETZ-8WWEZ-WUUVACV7T2-6WY5Q-48EWP-ZXY7X-QGUWD