1、导入文件<>和“”的区别

#include <xxx.h>导入的是标准目录下的.h文件,所谓的标准目录指的是:/use/local/include(一般是第三方头文件)以及/use/incldue(一般是操作系统头文件)、c:\\MinGnu\include(如果使用的是MinGun编译器windows下的MinGun目录)

#include "xxx.h"导入的是当前目录下的文件

2、共享.h文件

2.1 把头文件保存在标准目录下,把文件复制到/usr/local/include中就可以在源代码中使用尖括号包含它们,如:#include <encrypt.h>

2.2 在include中使用完整路径,如把头文件存放在/home/xinye中,只要使用#include "/home/xinye/encrypt.h"即可

2.3 在使用编译命令的时候,告诉编译器去哪里找到头文件,所以用gcc 的-I选项,如:gcc -I/my_headfiles  test.c test2.c -o test

  将在标准目录以及指定的目录my_headfiles目录下查找头文件

3、共享.o目标文件

使用完整路径名称来共享.o目标文件

gcc -I/my_headfiles test1.c test2,c

  /my_obj_files/encrypt.o

  /my_obj_files/checksum.o

  -o test_code

4、归档多个.o文件 - 静态库

nm xxx.a:查看xxx.a中包含的.o文件列表  

ar -rcs libnfsecurity.a encrypt.o checksum.o

ar:归档命令

r:如果.a文件存在就更新它

c:表示创建文档时不显示反馈信息

s:告诉ar要在.a文件开头创建索引

libnfsecurity.a:固定格式文件名,lib开头,.a结尾

后面的是.o文件里诶波啊

5、在库目录中存放.a文件

5.1 存放在标准目录中,如/use/local/lib(一般是在开发完成后,但是有些系统不允许用户修改这个目录)

   编译了其他使用了库的应用(libnfsecurity.a存放在标准目录下)

  gcc test1.c tst2.c test3.c -lhfsecurity -o test

5.2 存放在其他目录中(一般在开发中,或者是系统不允许放在标准目录中)

  .a存放在自定义目录/my_lib/lib/libhfsecurity.a

  gcc test1.c test2.c test3.c -L/my_lib -lhfsecurity -o test

6、动态库

把c文件转为动态库之前需要先便以为.o文件:

gcc -I/my_head_dir -fPIC -c test1.c test2.c test3.c -o test.o

-fPIC:表示无关,一般可有可无

打包动态库:

windows下:gcc -shared test.o -o c:\libs\test.dll

windows下的cygwin下:gcc -shared test.o -o /libs/libtest.dll.a

linux下面:gcc -shared test.o -o /libs/libtest.so

mac下面:gcc -shared test.o -o /libs/libtest.dylib

例子:

gcc -I/include -c elliptical.c -o elliptical.o

gcc elliptical.o -L/libs -lhfcal -o elliptical

C 语言与动态库相关基础知识相关推荐

  1. 黑马程序员_JAVA相关基础知识

    ------- android培训.java培训.期待与您交流! -------- JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便 ...

  2. go编译库给c语言map参数,在 Go 中使用 C 语言的动态库

    我和我的儿子在上周末干了一件非常有意思的事情,我们开发了一个用 Go 编写的命令行游戏,最近我正在重写一款曾经在年轻时开发的游戏,当时用的还是 Kaypro II. ![](https://raw.g ...

  3. 【RAC】RAC相关基础知识

    [RAC]RAC相关基础知识 1.CRS简介    从Oracle 10G开始,oracle引进一套完整的集群管理解决方案--Cluster-Ready Services,它包括集群连通性.消息和锁. ...

  4. 【C++后台开发面经】面试总结第三波:针对后台开发相关基础知识分类总结

    前言 面试总结第三波,关于后台开发面试相关基础知识,数据结构.算法.linux操作系统.计算机网络.C++.数据库进行分类总结. 后端面试总结 目录 后端面试总结 1.数据结构 链表和数组的区别 树的 ...

  5. 3D视觉学习计划之PCL库的基础知识

    3D视觉学习计划之PCL库的基础知识 一.PCL库的概述 PCL是一个大型跨平台开源C++编程库,它在吸收了前人点云相关研究基础上建立起来,实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取. ...

  6. python语言可以处理数据文件吗_Python语言读取Marc后处理文件基础知识.pdf

    Python语言读取Marc后处理文件基础知识 基于 python 的焊接后处理 知识要点:  Python 语言  Python 模块功能  PyPost 后处理模块  PyPost 模块函 ...

  7. 6-DoF问题相关基础知识笔记

    6-DoF问题相关基础知识笔记 一.什么是6-DoF,即6个自由度是什么? 二.PnP算法 三.BOP挑战与官方数据集简介 BOP数据集 BOP toolkit BOP挑战的介绍页面 四.相关论文 C ...

  8. mysql bdb版本_深入理解mysql之BDB系列(1)---BDB相关基础知识

    深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富 一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1中相关数). ...

  9. 深入理解mysql之BDB系列(1)---BDB相关基础知识

        深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富 一:BDB体系结构 1.1.BDB体系结构 BDB整体的体系结构如图1.1所示,包含五个子系统(见图1.1中相关数 ...

最新文章

  1. 利用python获取指定url在ATS中缓存对象的信息
  2. AI医疗领域人才需求与培养趋势分析
  3. PyCharm个性化设置及注意事项
  4. 6-堆排序C实现(递增递减的简单转换,可优化(41行提示))
  5. mppt多峰追踪MATLAB仿真,基于光伏功率等效面积法的多峰最大功率追踪控制方法...
  6. matlab用泰勒展开解微分方程,mathematica的解微分方程的能力让人大失所望啊
  7. android o 编译及运行,【转】实践最有效的提高Android Studio运行、编译速度方案
  8. visualstudio2019 的报表技术rdlc在windows10上出现乱码的问题解决方法
  9. 首届全国信创大赛圆满收官,信创新势力载誉而归!
  10. 准确率(Precision)、召回率(Recall)、F值(F-Measure)、ROC、AUC
  11. linux的users命令,linux users命令详解
  12. 微信抢票应用-个人总结
  13. marshmallow
  14. 一点Scala学习资源
  15. 爬取京东商城中的书籍信息
  16. windows下如何查看本机所在局域网内所有可以访问的IP
  17. 戴尔电脑遇到问题,运行SupportAssist.更新后大部分问题可以解决。
  18. 吞吐量QPS、TPS、HPS
  19. 个人博客、开源文档的建站神仙组合 Vercel + Docusaurus
  20. 微信小程序基于vant和springboot实现附件上传和预览

热门文章

  1. 软件设计师笔记---流水线
  2. Linux命令操作,文件复制,删除修改等
  3. 产品经理跳槽面试大揭秘……
  4. 前中华英才产品总监高瑞:被嫌弃的产品经理的一生
  5. 玩转产品排期:让小伙伴们高效协作
  6. 人生,能有多少个十年?| PMCAFF 十年故事
  7. 对不起!今天我们的活动在朋友圈刷屏了……(多图预警)
  8. 讨论下 Java 流文件读写缓存大小设置的问题
  9. Linkedin Cruise Control安装
  10. iOS MMDrawerController源码解读(一)