<1> 库文件及头文件使用

linux程序开发中经常要使用到头文件和静态库,在linux系统的目录下有专门的目录结构来存放这些文件,在shell文件的PATH变量中有指定的默认搜索路径。

头文件的默认路径为 /include  usr/include 及其子目录,库文件的默认路径为 /lib usr/lib 及其子目录。当我们编写程序的时候需要使用默写库函数的时候,

C语言编译器会自动到这些目录下搜索。当然我们也可以自己制定头文件或者库文件的存放路径,制定头文件用“-I ”制定,制定库文件用“-L”制定。

具体实例如下:

cc -c main main.c -I /opt/***  //制定具体的头文件所在的位置  编译器编译的时候会搜索默认路径和指定路径。

cc -o main mian.o libfool.a -L /opt/****  //指定具体的静态库所在的路径

由于库文件的名字定义有具体的规则,库名字都是以lib开头然后加上具体的名字,以.开头加上类型(.a静态库 ,.so静态库)。所以上边的指令还可以还成:

cc -o main mian.o -lfool -L /opt/****  //此语句的含义是:编译连接main程序的时候需要用到某个函数,这个函数在以fool命名的静态库-libfool.a中,

这个静态库的具体存放位置在/opt/****目录下。

<2> 静态库的建立

假设我们这里有三个C源文件。

//************bill.c********************//

#include

void bill(void)

{

printf("this bill function !\n");

}

//**********fill.c*********************//

#include

void fill(void)

{

printf("this fill function !\n");

}

//***********main**********************//

#include

int main(void)

{

bill();

exit(0);

}

//***********fool.h********************//

void bill(void);

void fill(void);

首先分别fill.c bill.c两个源文件,在编译的时候要使用命令CC -c 以阻止编译器生成最终的程序,因为这两个C文件都没有main函数,用CC -o指令

时会报错。

cc -c fill.c bill.c

生成fill.o和bill.o文件

cc -c main.c -I /opt/*** 指定fool.h文件所在目录

生成main.o文件

此时不使用静态库,简单的编译下: cc -o main mian.o bill.o

生成main可执行文件 ./main  会有打印信息:this bill function出现。说明我们编译程序成功了。

下边具体的制作静态库的过程:

生成fill.o和bill.o后 执行以下命令

ar cvr libfool.a fill.o bill.o

会生成libfool.a库

runlib libfool.a //生成内容表 大部分的系统都不需要一步都可以使用。

下边就可以使用静态库了

cc -o main main.o libfool.a -L /opt/****   //指定静态库的目录路径

或者

cc -o main main.o -lfool -L /opt/*****     // -lfool 指定使用的静态库为libfool.a -L 指定静态库所在目录 编译器会在静态库中搜索需要的函数

linux程序设计,linux程序设计相关推荐

  1. Linux USB驱动程序设计

    Linux USB驱动程序设计 1. USB发展史 USB(Universal Serial Bus ),通用串行总线,是一种外部总线标准,用于规范电脑与外部设备的连接和通讯. USB是在1994年底 ...

  2. Linux下俄罗斯方块程序设计(c++)-转

    Linux下俄罗斯方块程序设计(c++)-转 空间 http://fangnux.blog.51cto.com/7902770/1347375 话不多说先上图: 很多在windows下做的,用的图形图 ...

  3. 在linux下恶臭hellotext中作用的?,《Linux内核与程序设计》实验学习笔记

    Linux内核与程序设计>实验指导 实验一  实验名称:常用命令和编辑器的使用(2学时) 一.实验目的 1.掌握Linux一般命令格式 2.掌握有关文件和目录操作的常用命令 3.掌握有关进程操作 ...

  4. 【Linux】Linux简介以及 与UNIX区别

    一直以来对Linux.Unix.linux内核.linux发行版的概念比较模糊,最近查找资料并经过自己的整理,主要总结了Linux和UNIX的区别和联系.内核和操作系统的关系.Linux操作系统和结构 ...

  5. 【Linux】Linux Shell 学习笔记:什么是Linux?

    I Linux 简介 Linux系统简介 (biancheng.net) Linux和UNIX的关系及区别 (biancheng.net) Linux内核_百度百科 (baidu.com) [什么是 ...

  6. 第一章 Linux及Linux Shell简介

    1.1 关于Linux 1.1.1 什么是Linux Linux是自由开源的类Unix操作系统.该操作系统的内核是由莱纳斯·托瓦兹在1991年10月5日首次发布. 严格来讲,术语Linux只表示操作系 ...

  7. nvidia命令不可用linux,在Linux命令行下如何正确配置nVIDIA显卡

    在图形芯片领域,nVidia是一个后来者,它的历史仅相当于ATi的一半.1993年初,NVIDIA 由 Jen-Hsun Huang,,Chris Malachowsky和 Curtis Priem ...

  8. 20155301 滕树晨linux基础——linux进程间通信(IPC)机制总结

    20155301 滕树晨linux基础--linux进程间通信(IPC)机制总结 共享内存 共享内存是在多个进程之间共享内存区域的一种进程间的通信方式,由IPC为进程创建的一个特殊地址范围,它将出现在 ...

  9. linux怎么用gcc运行程序设计,linux应用程序设计--GCC程序编译

    GCC程序编译 linux系统下的GCC(GNU C Compiler)是GNU推出的功能强大.性能优越的多平台编译器,是GNU的代表作之一.GCC可以在多种硬件平台上编译出可执行程序,其执行效率与一 ...

  10. 【Linux 内核】调度器 ① ( 调度器概念 | 调度器目的 | 调度器主要工作 | 调度器位置 | 进程优先级 | 抢占式调度器 | Linux 进程状态 | Linux 内核进程状态 )

    文章目录 一.调度器 0.调度器概念 1.调度器目的 2.调度器主要工作 3.调度器位置 4.进程优先级 5.抢占式调度器 二.Linux 内核进程状态 API 简介 三.Linux 进程状态 一.调 ...

最新文章

  1. python为什么这么火 知乎-没想到吧!Google 排名第一的编程语言,为什么会这么火?...
  2. python pd Series 添加行_Python数据分析与挖掘的常用工具
  3. 打印三角形之细节讲解
  4. (软件工程复习核心重点)第五章详细设计-第三节:过程设计工具
  5. 动态规划 —— 背包问题 P07 —— 有依赖背包
  6. 《go程序设计语言》读书笔记
  7. 转:C++反汇编揭秘2 – VC编译器的运行时错误检查(RTC)
  8. 运动控制卡中伺服电机的规划位置与编码器位置的区别
  9. php7自定义异常处理,基于PHP7错误处理与异常处理方法(详解)
  10. 基于卷积神经网络模型的MSTAR高分辨率图像数据集识别实践【后续:网络层可视化分析】
  11. C++ 调用 python
  12. Mybatis原理解析(三)--getMapper动态获取接口实现类
  13. 【渝粤教育】电大中专跨境电子商务理论与实务 (31)作业 题库
  14. 南大软院21天学霸养成计划—第6天
  15. 安卓实现图片缩放平移的基本步骤
  16. AI穿墙而过?MIT最新研究发现AI能跟踪行动轨迹
  17. 七十三、java版商城之买家端商品详情Spring Cloud+SpringBoot+mybatis+uniapp b2b2c o2o 多商家入驻商城 直播带货商城 电子商务
  18. 3.Android 仿QQ运动步数进度效果 keep运动效果(从入门到巅峰)
  19. C语言遍历windows目录文件 并对文件进行读写操作
  20. excel单元格下拉选项怎么设置_Excel单元格内容这样设置才不能被修改

热门文章

  1. 蓝桥杯2014C语言A组赛题解析
  2. PAT甲级 A1089
  3. http各种超时配置
  4. CRJ巨佬的gjd算法模板
  5. C++编写的简易宝可梦对战小游戏
  6. 惠普大中华区总裁孙振耀退休感言
  7. 计算机操作系统强化课笔记(文件系统)(考研)
  8. 白社会“钻戒门”风波乍起 小情侣虚惊一场终归和美
  9. Typescript 中的 interface 和 type 有什么区别?
  10. 第一类修正贝塞尔函数[转]