linux 动态链接库的创建和使用--静态连接
来源:互联网 发布:数据库课程设计实验 编辑:程序博客网 时间:2024/04/19 10:35
/*
* 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
{
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
遇到问题,请用工具查询。
* 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 动态链接库的创建和使用--动态连接
- linux 动态链接库的创建和使用--动态连接
- Linux静态/动态链接库的创建和使用
- Linux静态/动态链接库的创建和使用
- Linux静态/动态链接库的创建和使用
- Linux静态/动态链接库的创建和使用
- Linux静态/动态链接库的创建和使用
- Linux静态/动态链接库的创建和使用
- Linux静态/动态链接库的创建和使用
- Linux静态/动态链接库的创建和使用
- Linux静态/动态链接库的创建和使用
- Linux静态/动态链接库的创建和使用
- Linux静态/动态链接库的创建和使用
- Linux静态/动态链接库的创建和使用
- Linux静态/动态链接库的创建和使用
- Linux静态/动态链接库的创建和使用
- Linux静态/动态链接库的创建和使用
- oracle的闪回
- 黑马程序员-线程和socket
- fput(); fgetc();
- <<Windows CE 系统进程外组件应用开发 >> 文章的解读
- jetty 透明代理的实现
- linux 动态链接库的创建和使用--静态连接
- Sqlserver 数据库计算时间差
- Rails 笔记(一)
- waitpid
- 开弓没有回头箭——我的程序员之路
- CODE::BLOCKS 使用手册 及 WIKI
- 一步步 学数据结构 之 三
- 关于Ogre自带输入系统OIS(Object-Oriented Input System)的源码分析
- java API chm html 1.5 1.6 中文版英文版 帮助文档