Linux下创建与使用静态库

Linux静态库命名规则

Linux静态库命名规范,必须是"lib[your_library_name].a":lib为前缀,中间是静态库名,扩展名为.a。

创建静态库(.a)

(1) 将代码文件编译成目标文件.o(test.o)

命令:g++ -c  test.cpp

(2) 通过ar工具将目标文件打包成.a静态库文件

命令:ar -crv libtest.a test.o

生成静态库test.a


使用静态库

Linux下使用静态库,只需要在编译的时候,指定静态库的搜索路径(-L选项)、指定静态库名(不需要lib前缀和.a后缀,-l选项)。

g++ test.cpp -L. -Itest

l  -L:表示要连接的库所在目录

l  -l:指定链接时需要的动态库,编译器查找动态连接库时有隐含的命名规则,即在给出的名字前面加上lib,后面加上.a或.so来确定库的名称。


创建动态库(.so)

生成动态库

g++ -shared -fPIC  test.cpp -o libtest.so 

使用动态库

cp libtest.so /usr/lib

g++ TestDynamicLibrary.cpp -L. -ltest -o test

./test

vs2013创建动态库

(1)新建win32控制台应用程序

(2)应用程序类型选择静态库

(3) stdafx.h 头文件写函数声明, stdafx.cpp写函数定义

(4)右键项目,生成。在Debug目录下生成静态库。

测试静态库:

(1)新建win32控制台应用程序

(2)选择空项目

(3)添加源文件,写c++程序。

(4)将静态库文件夹下的stdafx.h和targetver.h文件和静态库lib文件三个都拷入到现在工程下的工程名目录下

(5)

#include <iostream>
#include "stdafx.h" //头文件
#pragma comment (lib,"TestStaticLibrary")//添加静态库
using namespace std; int main()
{
cout << jiafa(, ) << endl;
cout << jianfa(, ) << endl;
return ;
}

vs2013动态库

(1)新建win32控制台应用程序

(2)应用程序类型选择动态库

(3) stdafx.h 头文件写函数声明

extern __declspec(dllexport) int add(int a, int b);

stdafx.cpp写函数定义

int add(int a, int b)
{
return a + b;
}

(4)右键项目,生成。在Debug目录下生成静态库。在debug目录下,可以看见生成一个dll和lib

测试:

(1)新建win32控制台应用程序

(2)选择空项目

(3)添加源文件,写c++程序。

(4)将静态库文件夹下的stdafx.h和targetver.h文件和静态库lib文件三个都拷入到现在工程下的工程名目录下

(5)TestDLL.dll拷贝到debug文件夹下,和exe在同一目录,不然运行时候找不到动态库

#include <iostream>
#include "stdafx.h" //头文件
#pragma comment (lib,"TestDLL.lib")//添加静态库
using namespace std; int main()
{
cout << add(, ) << endl; return ;
}

linux+vs2013编译静态库和动态库的更多相关文章

  1. 自己在linux上编译、链接、动态库和静态库的学习笔记

    在平常的项目中,我们都是使用公司要求的makefile.makedebug一类的文件,因此,在编译.链接.生成和链接动态库与静态库的时候,我们只是简单的使用一些已经设置的变量,只是简单的修改.添加一些 ...

  2. Vs2012(Vs2013) 编译 64位 Qt (动态库), 并使用自编译Qt建立工程(悲催经历)。(含遗留问题)

    仅供参考. 体会:我个人此次编译不该使用Vs2013编译Qt. 使用以下程序: Qt : qt-opensource-windows-x86-msvc2012_64_opengl-5.2.1.exe ...

  3. (转)linux centos 编译luabind-0.9.1 动态库 静态库

    编译时:virtual memory exhausted: Cannot allocate memory 一.问题 当安装虚拟机时系统时没有设置swap大小或设置内存太小,编译程序会出现virtual ...

  4. Linux上静态库和动态库的编译和使用

    linux上静态库和动态库的编译和使用(附外部符号错误浅谈) 这就是静态库和动态库的显著区别,静态库是编译期间由链接器通过include目录找到并链接到到可执行文件中,而动态库则是运行期间动态调用,只 ...

  5. linux上静态库和动态库的编译和使用(附外部符号错误浅谈)

    主要参考博客gcc创建和使用静态库和动态库 对于熟悉windows的同学,linux上的静态库.a相当于win的.lib,动态库.so相当于win的.dll. 首先简要地解释下这两种函数库的区别,参考 ...

  6. Linux下编译、使用静态库和动态库 自己测过的

    每个程序实质上都会链接到一个或者多个的库.比如使用C函数的程序会链接到C运行时库,GUI程序会链接到窗口库等等.无论哪种情况,你都会要决定是链接到静态库(static libary)还是动态库(dyn ...

  7. 【转】Linux编译链接问题----静态库和动态库

    Linux静态库和动态库的命名规则 静态函数库 静态库的名字一般是libxxx.a,利用静态库编译生成的文件比较大,因为整个静态库所有的数据都会被整合进目标代码中. a) 优点: 编译后,可执行文件不 ...

  8. Linux下Gcc生成和使用静态库和动态库详解(转)

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

  9. 在Linux下如何使用GCC编译程序、简单生成 静态库及动态库

      最近在编写的一个Apache  kafka 的C/C++客户端,,在看他写的 example中,他的编译是用librdkafka++.a和librdkafka.a    静态库编译的,,,而我们这 ...

随机推荐

  1. freeswitch 获取app和api帮助

    通过show显示帮助命令 输出xml格式:show calls as xml 输出json格式 列出所有:show codec 解释: codec - 列出所有编码 endpoint - 列出所有en ...

  2. Python SSH爆破以及Python3线程池控制线程数

    源自一个朋友的要求,他的要求是只爆破一个ip,结果出来后就停止,如果是爆破多个,完全没必要停止,等他跑完就好 #!usr/bin/env python #!coding=utf-8 __author_ ...

  3. oracle单行函数 之 字符函数

    Upper(字符串 / 列):将输入的字符串变成大写 Lower(字符串 / 列):将输入的字符串变成小写 Initcap(字符串 / 列):开头首字母大写 Length(字符串 / 列):字符串长度 ...

  4. dp专题练习

    顺便开另外一篇放一些学过的各种dp dp总结:https://www.cnblogs.com/henry-1202/p/9194066.html 开坑先放15道题,后面慢慢补 目标50道题啦~~,目前 ...

  5. C# 中2个问号的作用。C#的??代表是什么意思

    https://www.cnblogs.com/gggg/p/5867412.html 变量定义中含有一个问号,意思是这个数据类型是NullAble类型的.(NullAble意思是可以为空) 变量定义 ...

  6. 《操作系统_时间片轮转RR进程调度算法》

    转自:https://blog.csdn.net/houchaoqun_xmu/article/details/55540250 时间片轮转RR进程调度算法 一.概念介绍和案例解析时间片轮转法 - 基 ...

  7. myCat知识笔记

    数据字典做成全局表(在各个分库中都有备份) ER表, 关联表都放在同一个分库上, 有利于数据关联查询 一致性hash ,/hash slot 主要为了解决分布式节点扩容时, 迁移数据的问题. mySq ...

  8. maven web项目配置log4j,及log4j参数设置

    本文为博主原创,转载须注明转载地址: 1.在maven项目中引入相关的依赖: 需要依赖的jar为: <!-- 配置日志 --> <dependency> <groupId ...

  9. ISTQB学习笔记

    学习ISTQB大纲此文记录初次阅读时不够明确的地方 第一章:软件测试基础1. 引起软件缺陷的原因人都会犯错误(error,mistake),因此人设计的代码或文档中会引入缺陷(defect, faul ...

  10. sublime 代码段

    demo 展示助手中有经常用到个标签. <textarea type="text/md_x" style="display:none"> ## de ...