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

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

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

VS2010 静态链接库的创建与使用

VS2010 静态链接库的创建与使用模仿网上其他文章创建的,网上基本都是这个例子。挺简单。1. 创建静态链接库 打开VS2010,“文件”—>“新建”—>“项目”,选择“Win32 项目”,命名为...
  • NNNNNNNNNNNNY
  • NNNNNNNNNNNNY
  • 2015年06月03日 23:44
  • 1485

C/C++静态库创建、导出和使用(图文)

一 Windows库   1 引入库的原因:     a.项目的复杂程度大     b.提高代码的利益利用率     2 库的分类     2.1 静态库: *.lib,不能被加载的程序,...
  • u013507368
  • u013507368
  • 2014年12月03日 10:52
  • 1023

【JAVA】32、对象的创建与使用

本篇介绍对象的创建与使用
  • omoiato
  • omoiato
  • 2016年03月07日 22:34
  • 738

linux进程控制总结一

在执行一个可执行文件的过程就是一个进程,首先我们要看一个进程很重要的结构图: 正文段:这是由CPU执行的机器指令部分,通常正文段是可共享的,所以即使是频繁执行的程序在存储器中也只有一个副本,另外...
  • magiclyj
  • magiclyj
  • 2017年05月01日 12:03
  • 326

mysql数据库索引的创建及使用

1.mysql索引类型及创建 常用的索引类型有 (1)主键索引 它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引: 复制代码 代码如下: CREATE TABLE user...
  • sinat_23224827
  • sinat_23224827
  • 2015年09月22日 08:48
  • 497

C++中静态链接库创建与使用

演练:创建和使用静态库 (C++) Visual Studio 2013 其他版本 此分步演练演示如何创建用于 C++ 应用的静态...
  • wzhwhust
  • wzhwhust
  • 2016年11月24日 16:04
  • 1226

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

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

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

Linux静态/动态链接库的创建和使用     正文:  和Windows系统一样Linux也有静态/动态链接库,下面介绍创建和使用方法:     假设有下面几个文件:  头文件St...
  • start000722
  • start000722
  • 2013年12月13日 14:52
  • 852

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

这篇文章转自“永远的UNIX”原文地址:http://fanqiang.chinaunix.net/system/linux/2006-05-08/4126.shtml和Windows系统一样Linu...
  • DLUTBruceZhang
  • DLUTBruceZhang
  • 2013年05月28日 23:03
  • 1318

Linux 静态库的创建和使用

简介 在linux下库分两种:静态库和共享(动态)库。这两种库的主要不同在于连接到程序的过程。 在编译程序时,连接器(ld)负责把程序中不同的模块连接起来,产生最终的可执行文件。静态库就是在这...
  • wayz11
  • wayz11
  • 2013年03月15日 10:20
  • 1182
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux 动态链接库的创建和使用--静态连接
举报原因:
原因补充:

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