关于链接库的知识,网上太多资料了,但是并不代表我很熟悉。今天遇到了

一个问题,就是由于静态链接库和ubuntu系统不兼容导致的,虽然花了点时间才搞定

但是,其中暴露的问题也不少。

  没有区分好静态链接库和动态链接库的概念和使用方法。

链接库,顾名思义,就是一些函数代码的集合库,主要有静态链接库和动态链接库两种

二者的不同点在于代码被载入的时刻不同。 静态库的代码在编译过程中已经被载入可

执行程序,因此体积较大。共享库的代码是在可执行程序运行时才载入内存的,在编译

过程中仅简单的引用,因此代码体积较小。

  静态链接库生成命令:假如程序只有一个test.c文件

gcc –c test.c
ar cr libtest.a test.o

  使用:测试文件app.c

gcc –c app.c
gcc -o app app.o -L. –ltest

  动态链接库生成:

gcc -c -fPic hello.c

gcc -shared -fPCI -o libmyhello.so hello.o

  使用: gcc main.c -L. -lmyhello

  参考文档:

 1 http://blog.csdn.net/shreck66/article/details/49583057

 2 http://www.cnblogs.com/changefuture/archive/2011/12/22/2297460.html

3 http://blog.csdn.net/luozirong/article/details/42522817

linux下静态链接库和动态链接库的更多相关文章

  1. Linux下 静态链接库 和 动态链接库

    先来说说C/C++编译过程 编译: 检查语句符号定义,将C/C++代码翻译生成中间语言. 链接: 将中间代码整合,生成可执行的二进制代码. 简单的说,库文件都是一种特殊的中间语言文件,静态库还是一种特 ...

  2. linux c静态链接库与动态链接库

    库函数是我们编程的时候经常用到的,我们协作编程的时候可以将常用的函数封装成库供大家使用,这样能够提高大家的工作效率.对于库函数,它分为动态链接库和静态链接库.对于静态链接库我们必须是连接到可执行文件中 ...

  3. linux下静态链接库的用法

    最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误: (.text+0x13): undefined reference to `func' 关于unde ...

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

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

  5. linux静态链接库与动态链接库详解

    一顺便说说了哦  通常情况下,对函数库的链接是放在编译时期(compile time)完成的.所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(e ...

  6. vc下的静态链接库与动态链接库(一)

    一.静态库与动态库的区别 目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Lib ...

  7. Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)

    本文把makefile 分成了三份:生成可执行文件的makefile,生成静态链接库的makefile,生成动态链接库的makefile. 这些makefile都很简单,一般都是一看就会用,用法也很容 ...

  8. [拾零]C/C++_代码复用的实现_静态链接库_动态链接库_使用.def导出

    1 静态链接库 1.1 创建静态链接库: 1.在VC6中创建项目:Win32 Static Library 2.在项目中创建两个文件:xxx.h 和 xxx.cpp 3.编译 1.2 使用静态链接库 ...

  9. 介绍静态链接库和动态链接库的差别,及在VC++6.0中的建立和使用

    首先介绍一下链接库:链接库分为动态链接库和静态链接库两种 LIB是静态链接库,在程序编译连接的时候是静态链接,其相应的文件格式是.lib. 即当程序採用静态链接库的时候..lib文件里的函数被链接到终 ...

随机推荐

  1. jquery 中后代遍历之children、find区别

    jquery 中children.find区别 首先看一段HTML代码,如下: <table id="tb"> <tr> <td>0</t ...

  2. pyton 模块之 pysmb 文件上传和下载(linux)

    首先安装pysmb模块 下载文件 from smb.SMBConnection import SMBConnection conn = SMBConnection('anonymous', '', ' ...

  3. Unity中的点击,长按,划动

    public void GetClickType() { if(Input.GetMouseButtonDown(0)) { if(isGetBeginPos) { beginPosition = I ...

  4. cdnbest区域里快速配置全部节点的缓存

    1.在cdn后台区域中自定义区域配置中添加下面代码,具体参数也可自行调整,代码解释在文档最下面有 <!--#start --> <config> <lang>zh_ ...

  5. unknow Unknown type name 'NSString'

    转载:geweb 今天看到个问题,编辑工程提示Unknown type name 'NSString',如下图 导致出现异常的原因是是因为工程中添加了ZipArchive(第三方开源解压缩库) 一般情 ...

  6. NET Core小细节杂记

    1.中文编码问题: 01.在net core中,使用中文的编码,要先进行注册: //CodePagesEncodingProvider在包System.Text.Encoding.CodePages中 ...

  7. vue.$nextTick 解决了哪些问题

    转载:https://www.cnblogs.com/xuewuhen/p/7860989.html $nextTick 是在下次 DOM 更新循环结束之后执行延迟回调,在修改数据之后使用 $next ...

  8. Xadmin显示视图

    .display显示要设置的字段 1. 自定义样式类,显示出要显示的字段,在这个类中,也可以设置对应函数. list_display=[check,"title",delete]2 ...

  9. 20175316盛茂淞 迭代和JDB

    迭代和JDB 题目 1 使用C(n,m)=C(n-1,m-1)+C(n-1,m)公式进行递归编程实现求组合数C(m,n)的功能 2 m,n 要通过命令行传入 3 提交测试运行截图(至少三张:正常如c( ...

  10. JS判断是否有js、css文件的引入方法

    在页面头部有个 <script type="text/javascript" src="abc.js"></script> <li ...