https://blog.csdn.net/a879365197/article/details/72933916

linux下c语言工程:

c文件:主要每个模块的原代码都在c文件中。

h文件:每个c文件都跟着一个h文件,h文件的作用是放着c文件中函数的声明,结构体的定义,宏的定义等。

o文件:目标文件。每个文件经过编译都会形成一个目标文件(二进制文件),多个目标文件链接后才能形成可执行文件。

o文件如何形成: gcc -c a.c

可执行文件:

不论是c文件还是o文件,都是无法执行的,最终还要生成可执行的文件。

gcc  a.c b.c c.c -o run  将c文件编译后链接,生成可执行文件

gcc a.o b.o c.o -o run   将目标文件链接为可执行文件

a文件:将o文件打包生成的静态库。

so文件:形成动态库,当程序运行的时候才加载进来。

生成so文件:gcc a.c b.c c.c -fpic  -shared -o  librun.so

.o文件
.o文件是源码编译出的二进制文件。
你先得了解从源代码到可执行文件的过程。以一个简单的add函数源文件为例。

int add(int a,int b)
{
    return a+b;
}
先预处理为.i文件
gcc -E add.c -o add.i
再编译为汇编文件
gcc -S add.i -o add.s
再汇编为二进制的.o文件
gcc -c add.s -o add.o

好,现在.o文件出来了。它就是C/C++编译的产物,因为C/C++编译的单元编译。每一个.c/.cpp文件就是一个编译单元,把所有单元都编译好之后,再连接成一个完成的程序。

.a文件
.a文件实质上就是.o文件打了个包。一般把它叫做静态库文件。它在使用的时候,效果和使用.o文件是一样的。

.so文件
.so文件就不一样了,它不是简单的.o文件打了一个包,它是一个ELF格式的文件,也就是linux的可执行文件。
.so文件可以用于多个进程的共享使用(位置无关的才行),所以又叫共享库文件。程序在使用它的时候,会在运行时把它映射到自己进程空间的某一处,其不在使用它的程序中。
-

Linux生成可执行文件相关推荐

  1. linux c语言编译成exe,C/C++程序从编译到最终生成可执行文件的过程分析

    C/C++程序编译步骤 如何生成可执行文件 电子计算机所使用的是由"0"和"1"组成的二进制数,二进制是计算机的语言的 基础.计算机发明之初,人们只能降贵纡尊, ...

  2. Go Windows上生成适用于 Linux 的可执行文件

    阅读目录 Go Windows上生成适用于 Linux 的可执行文件 Go Windows上生成适用于 Linux 的可执行文件 在Windows上生成适用于Linux的可执行文件是一项相对复杂的任务 ...

  3. C++ 笔记(01)— 环境设置(安装g++、g++ 编译 C++、 生成可执行文件流程、解释器与编译器区别)

    1. g++安装 在 Linux 或者 UNIX 系统上,可以通过下面命令来查看是否安装了 GCC . $ g++ -v 如果已经安装 GNU 编译器,则有以下输出: wohu@wohu:~/C++$ ...

  4. C/C++程序从编译到最终生成可执行文件的过程分析

    转载http://apps.hi.baidu.com/share/detail/32660500 C/C++程序编译步骤 如何生成可执行文件 ***************************** ...

  5. 使用 ld 命令链接目标文件生成可执行文件

    1.目标文件生链接成可执行文件依赖的库和目标文件 使用 ld 链接目标文件生成可执行文件,用于取代命令 g++,仅仅用于学习 ld 命令的使用,不用于实际的项目编译. 首先看一个简单的 C++ 源文件 ...

  6. go中生成可执行文件

    go中生成可执行文件 文章目录 go中生成可执行文件 一.简介 二.使用 三.示例 3.1 带参数编译 3.1.1 目标go文件 3.2 多文件编译 3.3 go项目编译 四.其它 4.1 go in ...

  7. 『Python』Python编译成计算机可执行文件(Windows计算机可执行文件exe,Linux 计算机可执行文件elf,Mac计算机可执行文件mach-O)

    文章目录 背景: 我们的主角 :PyInstaller 使用 1.安装pyinstaller 2.进入安装工作环境 3. 生成不自定义图标的exe文件 4.生成带自定义图标的exe文件 PyInsta ...

  8. linux生成core文件路径,core文件生成和路径设置

    在程序崩溃时,内核会生成一个core文件,即程序最后崩溃时的内存映像,和程序调试信息. 之后可以通过gdb,打开core文件察看程序崩溃时的堆栈信息,可以找出程序出错的代码所在文件和函数. 1.cor ...

  9. linux生成动态链接库返回字符串,Linux动态链接库的生成和使用

    目录 1. 编写C程序 比如编写myfunc.c文件,里面包含两个函数,一个是say_hello,另一个是cal_sum. #include "myfunc.h" void say ...

最新文章

  1. 【Qt】QAudioDeviceInfo获取不到音频设备
  2. colpick-jQuery颜色选择器使用说明
  3. 无法获取到图片的宽高
  4. 手机技巧:微信这个“设置”建议关闭!否则不到半年就卡爆了
  5. 图片中的Build 2016
  6. lnmp解析php,LNMP之 php解析
  7. 数组实例的fill()方法 fill()方法
  8. 训练caffe:registry.count(type) == 0 (1 vs. 0) Solver type Nesterov already registered
  9. Python实现词云图的3种方式(词频,一段文本,自定义样式)
  10. 自我总结3dmaxs建筑场景展uv步骤
  11. datasupport类删除_reiserfs文件系统反删除(Undelete)数据恢复操作的实践
  12. Windows 7 产品密钥是否安全
  13. 一文详解SLAM回环及优化
  14. 电脑显示找不到msvcp140.dll怎么修复?
  15. 历史上的三次房地产大泡沫
  16. 中国医科大学2021年12月《中医护理学基础》作业考核试题
  17. IMX6ULL-IRQ中断之添加中断向量表
  18. 物流小程序设计开发的功能明细与方案
  19. 妥妥的去面试之数据结构与算法(一)
  20. JavaScript踩坑(5)比值函数 function(a, b)

热门文章

  1. android 使用程序内部存储空间,Android应用程式分配的内部存储空间有多大?
  2. ubuntu16.04启动没有图形界面只有命令行
  3. 韩顺平java笔记--中级
  4. jquery源码学习笔记三:jQuery工厂剖析
  5. 渗透测试中的学习总结
  6. 代码行数统计工具statistic和cloc的使用
  7. 树莓派HMCL安装我的世界
  8. ElasticSearch分页查询四种解决方案与原理
  9. 童诗白模电--直流电源和总结
  10. Java各种工具箱的使用