linux C/C++编程之库

生成和使用链接库:
静态库是对象文件obj的集合,静态库扩展名称.a 静态库由ar -rcs生成

静态库优点:
1,不用重新编译程序库代码,进行重新的重新链接,节省了编译过程时间
2,开发者可以提供库文件给使用的人员,不用开放源码

3,生成静态链接库,或者将一个obj文件加到已经存在的静态库
ar 库文件名称.a obj文件1 obj文件2 obj文件N+
创建静态库的最基本步骤是生成目标文件;

动态链接库

-soname,libstr.so 表示生成
动态库别名libstr.so
库名是str
库前缀是lib,后缀名称是so
-o libstr.so.1选项表示生成名字的实际动态链接库文件
-shared告诉编译器生成一个动态链接库

基于C源文件生成动态链接库的完整命令

gcc -shared -Wl,-soname,libstr.so -o libstr.so.1 C源文件需生成动态库的;

生成动态链接库很重要的问题是安装
一般情况讲生成的动态链接库复制到系统默认的动态链接库的搜索路径,通常/lib,/usr/lib,/usr/local/lib 请注意与我们的标准头文件

时间: 2024-11-10 00:12:52

linux C/C++编程之库的相关文章

Linux/Unix C编程之的perror函数,strerror函数,errno

#include <stdio.h> // void perror(const char *msg); #include <string.h> // char *strerror(int errnum); #include <errno.h> //errno ? errno 是错误代码,在 errno.h头文件中: perror是错误输出函数,输出格式为:msg:errno对应的错误信息(加上一个换行符): strerror?是通过参数 errnum (就是errno)

linux高性能服务器编程之poll

一.概述: 和select不同的是,poll使用一个pollfd来指向所要监听的fd,事件,返回事件.(pollfd下面详细讲.) 并且poll没有最大的文件描述符数量的限制,是自己定义一个pollfd数组来实现的. 它的缺点和select差不多,即 (1)每次调用poll,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大(2)当要确定一个文件描述符的状态时,都需要在内核遍历传递进来的所有fd,这个开销在fd很多时也很大 二.poll介绍篇:  int poll(struct p

linux/unix网络编程之epoll

转载自 Linux epoll模型 ,这篇文章讲的非常详细! 定义: epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率.因为它会复用文件描述符集合来传递结果而不是迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一个原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符

linux/unix网络编程之 select

转自http://www.cnblogs.com/zhuwbox/p/4221934.html linux 下的 select 知识点 unp 的第六章已经描述的很清楚,我们这里简单的说下 select 的作用,并给出 select 的客户端实例.我们知道 select 是IO 多路复用的一个最简单支持,poll 和 epoll 是 select 的升级版.在 UNIX 网络编程第五章读书笔记 我们遇到这样一个问题:当客户端阻塞在 fgets() 等待客户输入的时候,服务器端断开连接.而客户端却

linux高性能服务器编程之epoll

一.概述: epoll是多路复用的一种,但它比select和poll更加高效.具体体现在以下几个方面: (1).select能打开的文件描述符是有一定限制的,默认情况下是2048,这对应那些大型服务器来说h是不足的.但 epoll则没有这个限制,它所支持的fd上限是最大可以打开文件的数目,这个数字一般远大于2048,举个例子,在1GB内存的机器上大约是10万左 右,具体数目可以cat  /proc/sys/fs/file-max察看,一般来说这个数目和系统内存关系很大. (2).因为文件描述符是

linux下shell编程之mysql备份(适合初学者)

1,shell常见变量解析: $0 当前脚本的名称 $n 当前脚本的第n个参数 $* 当前脚本的所有参数(不包括程序本身) $# 当前脚本的参数个数(不包括程序本身) $?命令或程序执行完成后的状态,一般返回0表示成功. $UID当前用户的ID $PWD当前所在的目录 -ne 不等于 -eq 等于 2,自动备份mysql脚本思路 ①,备份DB的命令 mysqldump -h127.0.0.1 -uroot -p123456 du >du_`date +%y%m%d`.sql ②,备份的机制 ③,

linux/unix网络编程之 poll

转自http://www.cnblogs.com/zhuwbox/p/4222382.html poll 与 select 很类似,都是对描述符进行遍历,查看是否有描述符就绪.如果有就返回就绪文件描述符的个数将.poll 函数如下: #include <poll.h> int poll(struct pollfd *fdarray, unsigned long nfds, int timeout) 第一个参数指向结构数组第一个元素的指针,每个数组都是一个 pollfd 结构,用于指定测试某个给

【Linux】Linux C socket 编程之UDP

发送方: /* * File: main.c * Author: tianshuai * * Created on 2011年11月29日, 下午10:34 * * 主要实现:发送20个文本消息,然后再发送一个终止消息 */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <netinet/in.h> #incl

linux C编程之gcc的使用

前言:我们知道GCC是C语言的编译器,使用GCC由C语言源文件生成可执行文件的过程,要经过四个相互关联 的步骤:(这里以hello.c为源文件名) 预处理:preprocessing   将一些宏展开,其中包括头文件的展开                                    执行的命令:   gcc -E hello.c -o hello.i      (预处理后的文件后缀是i) 汇编:assembly          将预处理文件生成汇编代码