一.创建静态库与使用:
(创建静态库):
1.编写源代码。这个可以想像成是一种服务或一种函数,它可以为别的程序提供服务。
2.生成目标文件:gcc -c xxxx.c -o xxxx.o(注意,这里是用-c选项来编译)
3.使用ar命令创建静态库: ar rc libxxx.a xxxx.o
说明:libxxx.a是你想要创建静态库的名字,根据习惯在Linux下库名称是以lib开头的,以.a结尾的表示是静态库。xxxx.o则是以这个目标文件来生成静态库。
(使用静态库):
1.使用静态库需要获得两个文件:头文件:xxxx.h, 和静态库文件:libxxxx.a
2.在编译其他源文件(一些需要使用静态库中所提供的函数或服务的源文件)编译时使用:
gcc -o final xxx.c libxxxx.a
二。创建动态库(也称为共享库)与使用:
(创建动态库):
1.用 gcc 和 -fPIC 参数将源文件代码编译成.o的目标代码,这个选项生成的代码与位置无关,可以在任何地址被连接和装载。如:gcc -fPIC -Wall -g -c xxx.c -o xxx.o
2.使用-shared来创建共享库,使用以下命令及参数:
gcc -g -shared -W1,-soname,libxxx.so.1.0.0 -o libxxxx.so.1.0.0 xxxxx.o
说明:-soname,libxxx.so.1.0.0:说明soname为“libxxx.so”版本为1.0.0
注意:-W1:那个是数字1
3.创建soname连接。因为前面定义的soname为"libxxx.so",因此需要创建一个"libxxx.so"到"libxxx.so.1.0.0"的连接:
ln -sf libxxx.so.1.0.0 libxxx.so
(使用共享库):
1.需要三个文件:头文件xxx.h, 库文件:libxxx.so.1.0.0 及其链接libxxx.so
2.编译:gcc -Wall -g -c xxx.c -o xxx.o
3.连接引用动态库:gcc -g -o final xxx.o -L ./ -lxxx[这里的-lxxx是引用其共享库的名字,它是libxxx.so.1.0.0的缩写]
4.运行:注意,运行时需要指定库的搜索路径,它由一个环境变量:LD_LIBRARY_PATH指定!
LD_LIBRARY_PATH=$(pwd) ./final
分享到:
相关推荐
Ubuntu linux动态库静态库的创建与使用附工程代码....
新手入门很好用的:在Linux中创建静态库和动态库,例子和错误分析
关于库的测试代码,使用静态库动态库 解压工具tar
Linux静态动态链接库的创建和使用
Linux静态and动态链接库 创建和使用Linux静态and动态链接库 创建和使用
在windows 平台和linux 平台下都大量存在着库。 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows 和linux 的平台不同(主要是编译器、汇编器和连接器的不同),因此二者库的二...
自己学习的笔记,主要讲述的是动态库和静态库的创建,使用,以及一些学习中遇到的问题!
linux下静态库及动态库的创建与使用.pdf
NULL 博文链接:https://jacky-dai.iteye.com/blog/2053931
Linux C 静态链接库 动态链接库 简单介绍 看完本例子,可以入门了。。。。
详细介绍如何创建Linux动、静态库文件,以及如何使用。
linux静态链接库与动态链接库的区别及动态库的创建.pdf
介绍Linux下静态库、动态库创建方式、完成静态库、动态库调用,贴出字符串处理、时间管理两个例子代码。
linux静态链接库与动态链接库的区别及动态库的创建借鉴.pdf
linux静态链接库与动态链接库的区别及动态库的创建参考.pdf
创建静态库(.a)通过上面的流程可以知道,Linux创建静态库过程如下:l 首先,将代码文件编译成目标文件.o(StaticMath.o)g++ -c Sta
创建动态库,静态库,exe文件的makefile模板,转Linux的同学可以看看,直接填充就可以了
库的存在极大的提高了C/C++程序的复用性,但是库对于初学者来说有些难以驾驭,本文从Linux的角度浅谈Linux下的静态库、动态库和动态加载库。 Linux库类型 Linux下可以创建两种类型的库: 1、静态库(.a): 在...
1.创建共享库 2.编译共享库 1.环境变量