linux动态库制作使用,Linux下C++静态库、动态库的制作与使用

本文详细介绍了Linux环境下静态库和动态库的制作过程,包括编辑源文件、使用g++编译和ar工具打包。同时,讲解了静态库和动态库的使用方法,涉及编译时的-L和-l选项。还探讨了动态库的加载方式以及程序依赖库的检查。此外,文章提及了Java调用.so动态库的方法和Linux下控制动态库导出函数的技巧。
摘要由CSDN通过智能技术生成

>> 静态库

1. 静态库的制作

a) 编辑 name.cpp 和name.h文件

b)$g++ -c name.cpp //注意带参数-c,否则直接编译为可执行文件

c) $ar -crv libname.a name.o  //通过ar工具将目标文件打包成.a静态库文件

2静态库的使用

a) 所用程序中包含静态库的头文件

b)$g++ useStaticLibray -L ./StaticDirectory -l name //只需要在编译的时候,指定静态库的搜索路径(-L选项)、指定静态库名(不需要lib前缀和.a后缀,-l选项)

>> 动态库

1.动态库的制作

a) 编辑 name.cpp 和name.h文件

b)$g++ -fPIC -c name.cpp //-fPIC 创建与地址无关的编译程序(pic,position independent code),是为了能够在多个应用程序间共享

c) $g++-shared -o libname.so name.o//-shared指定生成动态链接库,后缀为.so

ps:上面两个命令可以合并成一个   $g++ -fPIC -shared -o libname.so name.o

2动态库的使用

a) 所用程序中包含动态库的头文件

b)$sudo cp libname.so /usr/lib//将编写的动态库复制到/usr/lib目录下(在运行可执行文件时才不会报错,这是和静态库使用不同的地方)

c)$g++ useDynamicLibray -L ./DynamicDirectory -l name //只需要在编译的时候,指定动态库的搜索路径(-L选项)、指定动态库名(不需要lib前缀和.so后缀,-l选项)

linux下,一些关于动态库的问题:

程序运行是加载动态库的几种方法: 第一种,通过ldconfig命令    ldconfig是一个动态链接库管理命令,为了让动态链接库为系统所共享,还需运行动态链接库的管理命令它,ldconfig命令通 ...

linux下java调用.so动态库方法2: JNA

摘自:http://blog.csdn.net/todorovchen/article/details/21319033 另请参见: http://blog.sina.com.cn/s/blog_8c ...

Linux下gcc编译控制动态库导出函数小结

根据说明文档“How To Write Shared Libraries"介绍, 有四种方法: 1. 在方法声明定义时,加修饰:__attribute__((visibility(&quot ...

linux下的静态库和动态库

一.linux下的静态库   静态库中的被调用的函数的代码会在编译时一起被复制到可执行文件中去的!!可执行文件在运行不需要静态库的存在!   二.linux下动态库的构建和使用 1.动态库的构建   ...

linux下的静态库创建与查看,及如何查看某个可执行依赖于哪些动态库

linux下的静态库创建与查看,及如何查看某个可执行依赖于哪些动态库   创建静态库:ar -rcs test.a *.o查看静态库:ar -tv test.a解压静态库:ar -x test.a 查 ...

linux静态与动态库创建及使用实例

一,gcc基础语法: 基本语法结构:(由以下四部分组成) gcc -o 可执行文件名 依赖文件集(*.c/*.o) 依赖库文件及其头文件集(由-I或-L与-l指明) gcc 依赖文件集(*.c/*.o ...

Linux 静态库&动态库调用

1.什么是库在windows平台和linux平台下都大量存在着库.本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.由于windows和linux的本质不同,因此二者库的二进制是不 ...

Linux中创建和使用静态库&动态库

库本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行 Linux下库的种类 linux下的库有两种:静态库和共享库(动态库). 二者的不同点在于代码被载入的时刻不同. 静态库的代码在 ...

linux下的静态库和共享库

转载&&增加:      我们在编写一个C语言程序的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作效率,并且影响代码的可读性,更不利于后期 ...

C/C++ 跨平台交叉编译、静态库/动态库编译、MinGW、Cygwin、CodeBlocks使用原理及链接参数选项

目录 . 引言 . 交叉编译 . Cygwin简介 . 静态库编译及使用 . 动态库编译及使用 . MinGW简介 . CodeBlocks简介 0. 引言 UNIX是一个注册商标,是要满足一大堆条件 ...

随机推荐

OS X Framework Library not loaded: 'Image not found'的解决办法

参考:OS X Framework Library not loaded: 'Image not found' 1.首先将相应的framework手动复制到/System/Library/Framew ...

VS2012 配置 OpenCV3.0

VS2012 配置 opencv3.0,相比之前的版本,3.0的配置简单了好多. 通过配置属性文件,可以做到一次配置,重复使用! 根据文章的操作在 win7 64bit VS2012 下成功配置 op ...

LtUpload上传组件

<?php /** * The Upload class * @author Alex Lee * @license http://opensource. ...

Material Design:CollapsingToolbarLayout

activity_main.xml:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值