如何创建和使用Linux静态/动态链接库

和Windows系统一样Linux也有静态/动态链接库,下面介绍创建和使用方法:

假设有下面几个文件:

头文件String.h,声明相关函数原形,内容如下:

Strlen.c:函数Strlen的实现,获取给定字符串的长度,内容如下:

Strlnen.c:函数StrNlen的实现,获取给定字符串的长度,如果输入字符串的长度大于指定的最大长度,则返回最大长度,否者返回字符串的实际长度,内容如下:

生成静态库:

利用GCC生成对应目标文件:

gcc –c Strlen.c Strnlen.c

如果对应的文件没有错误,gcc会对文件进行编译生成Strlen.o和Strnlen.o两个目标文件(相当于windows下的obj文件)。然后用ar创建一个名字为libstr.a的库文件,并把Strlen.o 和Strnlen.o的内容插入到对应的库文件中。,相关命令如下:

ar –rc libstr.a Strlen.o Strnlen.o

命令执行成功以后,对应的静态库libstr.a已经成功生成。

<span style="font-size:18px;"><strong>/***********************************
Filename : String.h
Description :
Author   : HCJ
Date     : 2006-5-7
************************************/

int Strlen(char *pStr);
int StrNlen(char *pStr, unsigned long ulMaxLen);  

/**************************************
Filename    : get string length
Description  :
Author      : HCJ
Date        : 2006/5/7
**************************************/
#include<stdio.h>
#include<assert.h>  

int Strlen(char *pStr)
{
    unsigned long ulLength;
    assert(NULL != pStr);  

    ulLength = 0;
    while(*pStr++)
    {
        ulLength++;
    }  

    return ulLength;
}  

**********************************************
Fileneme: mystrnlen.c
Description: get input string length,if string large
             max length input return max length,
             else real length
Author: HCJ
Date  : 2006-5-7
**********************************************/  

#include<stdio.h>
#include<assert.h>  

int StrNlen(char *pStr, unsigned long ulMaxLen)
{
    unsigned long ulLength;  

    assert(NULL != pStr);  

    if(ulMaxLen <= 0)
    {
        printf("Wrong Max Length!\n");
        return -1;
    }  

    ulLength = 0;
    while(*pStr++ &&  ulLength < ulMaxLen)
    {
        ulLength++;
    }  

    return ulLength;
}
</strong></span>

本文URL地址:http://www.bianceng.cn/OS/Linux/201410/45420.htm

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索字符串
, 文件
, strlen
, 静态
, 静态库
, linux 动态库
, 动态设置最大长度
, 长度
, length
, gcc摄像头库linux
, linux动态库
生成动态库
linux使用动态链接库、linux静态库创建、linux如何创建静态库、linux 静态库的使用、linux 静态库使用,以便于您获取更多的相关知识。

时间: 2024-09-01 05:16:01

如何创建和使用Linux静态/动态链接库的相关文章

Linux静态库和动态库的编写和使用

Linux静态库和动态库的编写和使用 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种.   1  静态库和动态库的区别 1.1. 静态函数库    (1)静态函数库的名字一般是lib[name].a (2)利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,它的优点是编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了.这给它带来的缺点为如果静态函数库改变了,那么你的程序必须重新编译. 1.2. 动态

android linux 静态库的生成和使用

问题描述 android linux 静态库的生成和使用 有个android手机项目,linux3.10,kernel里面有几个文件不想开源出去,想做成静态库一起发布给客户 请问一下怎么将这几个文件做成静态库,做出来后放在哪个目录,再编译整个kernel的时候.mk文件该怎么写 希望能帮忙详细的举个例子,感谢 解决方案 http://blog.chinaunix.net/uid-25885064-id-3066814.html android不太显示,因为手机的cpu型号太多,你不提供源代码,那

在azure上创建了一个Linux,怎么没办法链接???

问题描述 在azure上创建了一个Linux,怎么没办法链接??? 大家好!! 我在azure上创建了一个Linux,怎么没办法链接???? 谁知道是什么情况?? 谢啦!! 解决方案 看看你的endpoint怎么配置的,telnet 21有没有打开,用ssh连报什么错误. 解决方案二: 你好, 如果 linux虚拟机创建成功的话, 我们需要在本地pc 上安装用于访问虚拟机的 SSH 客户端. ?如果您要使用运行 Windows 操作系统的计算机,则可能希望使用 PuTTY 等 SSH 客户端.

Linux静态库和共享库【转】

转自:http://www.cnblogs.com/zlcxbb/p/6806269.html 1.什么是静态库 静态库类似windows中的静态lib 关于windows中的静态lib,可参考 Windows动态链接库DLL  特点:包含函数代码声明和实现,链接后所有代码都嵌入到宿主程序中. 只在编译时使用,执行时不再需要该静态库. 2.静态库编写示例如下:addvec.c void addvec(int* x, int* y, int*z, int n) { int i=0; for(; i

linux 静态库、共享库

一.什么是库   本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.由于windows和linux的本质不同,因此二者库的二进制是不兼容的.   Linux操作系统支持的函数库分为静态库和动态库,动态库又称共享库.Linux系统有几个重要的目录存放相应的函数库,如/lib    /usr/lib.   二.静态函数库.动态函数库   A.  这类库的名字一般是libxxx.a:利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都被整合进目标代码中,他的优点就显而易见了

关于Linux静态库和动态库的分析

原文:http://linux.chinaunix.net/techdoc/net/2009/02/04/1060670.shtml 1.什么是库 在windows平台和linux平台下都大量存在着库.本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的本质不同,因此二者库的二进制是不兼容的. 本文仅限于介绍linux下的库.2.库的种类linux下的库有两种:静态库和共享库(动态库). 二者的不同点在于代码被载入的时刻不同.静态库的代码在编译

Linux静态库和动态库的分析及实现

1.什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的本质不同,因此二者库的二进制是不兼容的. 本文仅限于介绍linux下的库. 2.库的种类 linux下的库有两种:静态库和共享库(动态库). 二者的不同点在于代码被载入的时刻不同. 静态库的代码在编译过程中已经被载入可执行程序,因此体积较大. 共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体

Linux 静态库&amp;动态库调用

1.什么是库在windows平台和linux平台下都大量存在着库.本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.由于windows和linux的本质不同,因此二者库的二进制是不兼容的.本文仅限于介绍linux下的库.2.库的种类linux下的库有两种:静态库和共享库(动态库).二者的不同点在于代码被载入的时刻不同.静态库的代码在编译过程中已经被载入可执行程序,因此体积较大.共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小.3.库存在

深入探讨Linux静态库与动态库的详解(一看就懂)_C 语言

库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. 一.静态库和动态库的区别1. 静态函数库这类库的名字一般是libxxx.a:利用静态函数库编译成的文件比较大--空间,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了.当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译.2. 动态函数库这类库的名字一般是libxxx.so;相对于静态