gcc 静态链接库

以 math.c为例

gcc -c math.c
ar rcs libmath.a math.o

ar命令 将多个文件打包成一个备份文件

参数r:用来替换库中已有的目标文件,或加入新的目标文件
参数c: 表示创建一个库,不管库是否存在,都将创建
参数s:用来创建目标文件的索引,这在创建较大的库时能够提高速度

静态链接库制作好之后的使用

gcc main.c -lmath -o main

gcc 动态链接库

以math.c为例

gcc -fPIC -c math.c
# -fPIC (Position-Independent Code),用于编译阶段,产生与位置无关的代码
gcc -shared math.o -o libmath.so
# -shared  用于链接阶段,生成可动态加载的so库

动态链接库制作好后的使用:

gcc main.c -lmath -o main

注意:需要将生成的libmath.so放到 /usr/lib 目录之下,或者是在运行时设置 LD_LIBRARY_PATH 环境变量。

Linux gcc 制作动/静态链接库相关推荐

  1. gcc/gdb/make/动/静态链接库介绍

    gcc是一个编译工具,我们平时写的c/c++代码要想变成可执行文件,必须要经过预处理.编译.汇编.连接等步骤.gcc工具就完成这些动作. 一gcc编译过程 二.gcc常用参数 1.编译过程常用参数 参 ...

  2. c语言之动静态链接库

    静态链接库.a 出于版权保护行为,将源文件编译但不链接生成.o文件,再用ar工具将多个.o文件归档成.a文件,该.a文件就被称为静态链接库.再发布.a和.h文件,h文件显示有.o中函数声明.用户即可知 ...

  3. Linux下动态链接库与静态链接库(编写、编译)

    这里写目录标题 函数库的概念 动态库的编译 静态库的编译 动态库相对于静态库的优点和缺点 优点 缺点 函数库的概念 函数库一般分为静态库和动态库两种. 静态库: 是指编译链接时,把库文件的代码全部加入 ...

  4. Linux 关于动态链接库以及静态链接库的一些概念

    From http://os.rdxx.com/Linux/LinuxRudiment/2008/5/17017197011.shtml 库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀. ...

  5. GCC 编译 C(C++)静态链接库(gcc -L、gcc -l)和动态链接库(gcc -fPIC -shared)的创建和使用

    1. 库文件 所谓库文件,读者可以将其等价为压缩包文件,该文件内部通常包含不止一个目标文件(也就是二进制文件). 值得一提的是,库文件中每个目标文件存储的代码,并非完整的程序,而是一个个实用的功能模块 ...

  6. 【四、静态库与动态库(共享库)】揭开链接库的神秘面纱:手把手教你制作静态链接库与动态链接库

    前言 不管是在 Windows 下开发,还是在 Linux 下开发,我们都会经常性的使用一些库文件,这些库文件的特点就是,我们可以看到接口的原型并通过这些接口来调用这个函数的功能,但是我们无法查看这个 ...

  7. Linux下Makefile中动态链接库和静态链接库的生成与调用

    背景:写这篇博客的原因是:最近在搞嵌入式,需要交叉编译opencv库文件,自己写Makefile,通过arm-linux-g++编译.链接.生成可执行文件,从而实现了移植的过程.平台是Toradex的 ...

  8. 静态链接库与动态链接库详解

    以下内容源于C语言中文网相关内容的学习整理,如有侵权请告知删除. 一.库文件的简介 库文件,其等价为压缩包文件.该文件内部通常包含不止一个目标文件(也就是二进制文件),每个目标文件存储的代码,并非完整 ...

  9. UNIX环境高级编程(三)—— 静态链接库与动态链接库

    动态链接库一般不开放源码,需要建工程才能使用(其中提供的接口和 API): 0. .a/.o/.so What are .a and .so files? .o 就相当于 windows 里的 obj ...

最新文章

  1. 听说,英特尔要对外开放 x86 授权?
  2. Linux下USB suspend/resume源码分析【转】
  3. 使用了未经检查或不安全的操作_上溪镇开展压痕机使用企业安全生产专项检查...
  4. LeetCode Populating Next Right Pointers in Each Node II(dfs)
  5. C语言结构体和结构体数组示例 - Win32窗口程序演示
  6. Nokia7610彩信设置
  7. c比java运行快的原因_C/C++比JAVA快的原因
  8. 数据科学 IPython 笔记本 8.6 可视化误差
  9. 西瓜书+实战+吴恩达机器学习(十九)特征选择(过滤式选择、包裹式选择)
  10. 详解百度地图API之地图操作
  11. [En]Web Forms Syntax Reference
  12. ubuntu16.04+VScode+C/C++编译器常用插件
  13. php如何把pdf转图片,PHP中使用imagick实现把PDF转成图片
  14. html图片左右转换,jquery实现图片左右切换的方法
  15. MuleSoft----初识mulesoft
  16. ShaderForge 之霓虹旋涡
  17. 实践讲解Spring配置中心config(图+文,本地文件方式)
  18. CTFHUB——RCE之eval执行和文件包含漏洞
  19. 《Multiple UAV exploration of an unknown region》翻译
  20. 解决object references an unsaved transient instance - save the transient instance before flushing 的错误

热门文章

  1. Android Dialog 的使用总结(AlertDialog)
  2. R.Java文件报错
  3. 洛谷P4053 [JSOI2007]建筑抢修
  4. C++ 笔记(05)— 变量(变量定义、声明、初始化、extern关键字、变量之间转换)
  5. Python2 与 Python3 共存,pip2 与 pip3 共存切换设置
  6. 手工构建ISO的基本步骤
  7. mongodb权限管理
  8. Sublime Text 3 及Package Control 安装(附上一个3103可用的Key)
  9. 使用 Sticky-Kit 实现基于 jQuery 的元素固定效果
  10. php常用20函数,PHP常用函数