linux 动态链接库的创建和使用--静态连接

原创 2012年03月25日 17:22:16
/*
 * author: hjjdebug
 * date: 2012
 * title: linux 动态链接库的创建和使用--静态连接
*/

静态连接,不需要用户额外写代码,链接程序(gcc等)链接时指明动态连接库,并将所有外部符号从连接库中都找到。

linux 动态链接库的创建和使用
1. 先创建一个动态链接库。源码如下:
$ cat max.cpp
int max(int a, int b)
{
        return a>b? a:b;
}
编译生成动态库
g++ -shared -o libmax.so max.cpp

2. 再创建一个测试用例,源码如下:
$ cat test.cpp

#include <stdio.h>

int max(int a, int b);

int main(int argc, char *argv[])
{
        int a=max(3,5);
        printf("the bigger is %d\n",a);
        return 0;
}
编译生成可执行文件
g++ -o test test.cpp -lmax -L`pwd`

这里说明一下 -lmax 是指明要链接libmax.so 文件 -L`pwd` 是说链接库位置在本地。
如果你把库copy 到系统路径下,通常是/lib 或/usr/lib 下, 则-L 选项不用添加。

3. 运行可执行文件。
$ ./test
如果你没有copy 库到系统目录下,会有加载错误,如下:
./test: error while loading shared libraries: libmax.so: cannot open shared object file: No such file or directory
把库copy 到系统目录。
sudo cp libmax.so /lib
再次执行 ./test, 成功!
the bigger is 5

遇到问题,请用工具查询。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Linux静态/动态链接库的创建和使用(转载学习)

Linux静态/动态链接库的创建和使用(转载学习) 转载地址:http://space.itpub.net/47598/viewspace-26142 和Windows系统一样Linux也有静态/...

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

  Linux静态/动态链接库的创建和使用 收藏        和Windows系统一样Linux也有静态/动态链接库,下面介绍创建和使用方法:   < type="text/javascript"...

Linux平台静态接库与动态链接库的创建和使用

一、首先了解一下什么是“库x”?         库的本质是一个或者一堆可执行的二进制文件集,可以被载入内存中执行。使用“ar”命令可以列出该库中包含的各“模块”,由此我们可以看出C的模块化...
  • mitesi
  • mitesi
  • 2013年08月21日 00:49
  • 1107

linux中的动态链接库与静态连接库

Linux中创建静态库和动态库 我们通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中, 程序运行时将不再需要该静态库。动态库...

linux动态链接库和静态库的生成及使用

一个epoll.c源文件,需要经过预处理器,编译器,汇编器和链接器的处理后输出可执行目标文件,然后由加载器把可执行文件加载到内存中执行。预处理器执行头文件和宏定义的简单替换,而编译器和汇编器生成可重定...

linux 静态动态链接库的编写和使用

生成和使用动态链接库和静态链接库的Makefile编写 1. 概述 介绍linux下生成和使用动态链接库和静态链接库的Makefile的编写方法。   2. 生成动态链接库的Makefile ...

Linux环境下c语言静态链接库和动态链接库创建和使用

库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。 面对比一下两者:     静态链接库:当要使用时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一...
  • x1r2p3
  • x1r2p3
  • 2013年08月27日 07:55
  • 6555

编译链接------Linux环境下c语言静态链接库和动态链接库创建和使用

库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。 面对比一下两者:     静态链接库:当要使用时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一...

gcc调试中使用静态连接库和动态链接库以及-I -l L含义

静态链接库与动态链接库都是共享代码的方式, 区别: 如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了。静态库的代码在编译过程中已经被载入可执行程序,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux 动态链接库的创建和使用--静态连接
举报原因:
原因补充:

(最多只允许输入30个字)