Linux生成可执行文件
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生成可执行文件相关推荐
- linux c语言编译成exe,C/C++程序从编译到最终生成可执行文件的过程分析
C/C++程序编译步骤 如何生成可执行文件 电子计算机所使用的是由"0"和"1"组成的二进制数,二进制是计算机的语言的 基础.计算机发明之初,人们只能降贵纡尊, ...
- Go Windows上生成适用于 Linux 的可执行文件
阅读目录 Go Windows上生成适用于 Linux 的可执行文件 Go Windows上生成适用于 Linux 的可执行文件 在Windows上生成适用于Linux的可执行文件是一项相对复杂的任务 ...
- C++ 笔记(01)— 环境设置(安装g++、g++ 编译 C++、 生成可执行文件流程、解释器与编译器区别)
1. g++安装 在 Linux 或者 UNIX 系统上,可以通过下面命令来查看是否安装了 GCC . $ g++ -v 如果已经安装 GNU 编译器,则有以下输出: wohu@wohu:~/C++$ ...
- C/C++程序从编译到最终生成可执行文件的过程分析
转载http://apps.hi.baidu.com/share/detail/32660500 C/C++程序编译步骤 如何生成可执行文件 ***************************** ...
- 使用 ld 命令链接目标文件生成可执行文件
1.目标文件生链接成可执行文件依赖的库和目标文件 使用 ld 链接目标文件生成可执行文件,用于取代命令 g++,仅仅用于学习 ld 命令的使用,不用于实际的项目编译. 首先看一个简单的 C++ 源文件 ...
- go中生成可执行文件
go中生成可执行文件 文章目录 go中生成可执行文件 一.简介 二.使用 三.示例 3.1 带参数编译 3.1.1 目标go文件 3.2 多文件编译 3.3 go项目编译 四.其它 4.1 go in ...
- 『Python』Python编译成计算机可执行文件(Windows计算机可执行文件exe,Linux 计算机可执行文件elf,Mac计算机可执行文件mach-O)
文章目录 背景: 我们的主角 :PyInstaller 使用 1.安装pyinstaller 2.进入安装工作环境 3. 生成不自定义图标的exe文件 4.生成带自定义图标的exe文件 PyInsta ...
- linux生成core文件路径,core文件生成和路径设置
在程序崩溃时,内核会生成一个core文件,即程序最后崩溃时的内存映像,和程序调试信息. 之后可以通过gdb,打开core文件察看程序崩溃时的堆栈信息,可以找出程序出错的代码所在文件和函数. 1.cor ...
- linux生成动态链接库返回字符串,Linux动态链接库的生成和使用
目录 1. 编写C程序 比如编写myfunc.c文件,里面包含两个函数,一个是say_hello,另一个是cal_sum. #include "myfunc.h" void say ...
最新文章
- 【Qt】QAudioDeviceInfo获取不到音频设备
- colpick-jQuery颜色选择器使用说明
- 无法获取到图片的宽高
- 手机技巧:微信这个“设置”建议关闭!否则不到半年就卡爆了
- 图片中的Build 2016
- lnmp解析php,LNMP之 php解析
- 数组实例的fill()方法 fill()方法
- 训练caffe:registry.count(type) == 0 (1 vs. 0) Solver type Nesterov already registered
- Python实现词云图的3种方式(词频,一段文本,自定义样式)
- 自我总结3dmaxs建筑场景展uv步骤
- datasupport类删除_reiserfs文件系统反删除(Undelete)数据恢复操作的实践
- Windows 7 产品密钥是否安全
- 一文详解SLAM回环及优化
- 电脑显示找不到msvcp140.dll怎么修复?
- 历史上的三次房地产大泡沫
- 中国医科大学2021年12月《中医护理学基础》作业考核试题
- IMX6ULL-IRQ中断之添加中断向量表
- 物流小程序设计开发的功能明细与方案
- 妥妥的去面试之数据结构与算法(一)
- JavaScript踩坑(5)比值函数 function(a, b)