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已经成功生成。
/***********************************
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 
相关文档:
MySQL(root用户)密码忘记重置
分别在Windows下和Linux下重置了MYSQL的root的密码,整理如下:
A:在windows下:
1:进入cmd,停止mysql服务:Net stop mysql
到mysql的安装路径启动mysql,在bin目录下使用mysqld-nt.exe启动,
2:执行:mysqld-nt --skip-grant-tables(窗口会一直停止 ......
修改目标:用自定义的ppm图片替代/drivers/video/logo/logo_linux_clut224.ppm
同时删除logo_linux_clut224.c logo_linux_clut224.o文件这样才能使编译的使用logo_linux_clut224.ppm重新编译
ppm图片的生成:
# pngtopnm logo_linux_clut224.png > logo_linux_clut224.pnm
# pnmquant 224 logo_linux_clut224.pnm &g ......
先介绍一下情况,服务器A和服务器B都是CentOS 4.6的系统,现在要做HA
Cluster,为了避免裂脑的发生,要提高心跳链路的可靠性,下图是现时的连接情况,服务器A的eth2、eth3分别和服务器B的eth2、eth3
相连(没有顺序关系),所有网卡都是千兆网卡,拓扑图如下所示:
在介绍一起硬件情况,服务器A是一台HP DL380
G5, ......
linux socket 优化
2008-06-12 16:40
使用 Sockets API,我们可以开发客户机和服务器应用程序,它们可以在本地网络上进行通信,也可以通过 Internet 在全球范围内进行通信。与其他 API 一样,您可以通过一些方法使用 Sockets API,从而提高 Socket 的性能,或者限制 Socket 的性能。本文探索了 4 种使用 Sockets API 来 ......
我最近的工作是在linux环境下测试一个.so的动态库,我暂时命名为libdawn.so,是同事实现的,我需要再我的测试程序中加载这个库,并调试该库,我用的编译环境是Eclipse.
1. 在Eclipse->Project->Properities->c/c++ Build->setting->gcc c++ Linker(如果是用gcc c编译的则选gcc c Linker)->Libraries ......