首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux下程序是怎样执行的

/a.out 在shell终端上运行可执行程序的标准流程: 启动终端仿真器应用程序 输入可执行文件所在的相对路径或者绝对路径 如果该可执行程序需要输入参数的话,还需要输入参数 比如,我们在终端上输入...ps 在此处,我们可以人为ls为可执行程序的名称,--version 是该程序需要的参数。...构建运行环境 在做完上述完整性检查之后,最终会执行reader_loop函数,该函数,定义在eval.c中,主要作用是读取给定的程序名称和参数。...如果二进制处理程序支持给定的可执行文件格式,它将开始准备可执行二进制文件的前期工作。...elf_phdata) goto out; 程序解释器指定在可执行文件的.interp部分(在大多数情况下,对于x86_64,链接器为– /lib64/ld-linux-x86-64.so.2)

5K50

在Linux操作系统中进行C语言程序的编译与执行

开篇说明 本文我们来介绍如何在Linux使用gcc命令来编译C语言。 安装编辑器 首先,我们要检查系统中是否已经安装了Vim编辑器,你可以使用以下命令来检查。...编译该文件gcc Test.c或cc Test.c也是可以的 我们执行ls命令的话就可以看到多了一个可执行的文件a.out。 执行文件 我们使用..../a.out来执行该程序,输出hello world!。 这里我们在输出语句后面加上了\n 起到的换行作用,不加也是可以的。...最后结果 需要注意的: 2024年八月29日的一点补充,如果在Linux编译时出现以下错误时,执行gcc -std=c99 -o h mmm.c。h后面的是你的程序名。...或者修改for循环: 改为 int i for(i = 0; …);这里是正常循环操作 9.6日继续补充说明: 如果Linux看不到使用ifconfig命令看不到IP地址的话 可以将networkmanager

38010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    goland编译golang生成linux执行程序

    所以我们常用的goland编译配置的,都是Windows环境,生成也的EXE执行程序 但我们很多部署服务器都是linux,所以要部署的时候,需要生成linux环境下的执行程序 网上有说,修改配置后再编译...,如: set CGO_ENABLED=0 set GOOS=linux set GOARCH=amd64 但,生成完,需要把配置改回来后,才能再用。...且如果你的环境配置有特殊化, 如工具的本地项目Path,这时,直接用go build 命令是编译不了的 后面终于让我找到一个goland的配置生成linux执行程序的方法。...其实也很简单,只要复制一份Windows下的编译配置,再补上一些参数即可 1、 去掉 Run after build  2、在Environment 上写入参数: GOARCH=amd64;GOOS=linux

    3.6K30

    Linux下程序是如何被执行的

    之前写过一篇文章 Linux下c语言中的main函数是如何被调用的,该篇文章侧重于从user space层面讲程序的运行,而文章中提到的有关kernel space层面的相关系统调用,比如fork、execve...将程序的文件路径拷贝到堆栈中。 8. 将环境变量拷贝到堆栈中。 9. 将程序参数拷贝到堆栈中。 10. 调用exec_binprm方法继续执行该程序。...linux下可执行文件的格式一般为elf,所以我们直接看其load_binary方法: // fs/binfmt_elf.c static int load_elf_binary(struct linux_binprm...elf_entry指向的代码 // 如果该程序有interpreter,则是执行interpreter中的入口地址 // 如果没有,则是执行程序自己的入口地址...好了,到这里,整个程序的内核部分的执行流程就讲完了,结合本文开始提到的那篇文章 Linux下c语言中的main函数是如何被调用的,有关linux下程序的执行就全部讲清楚了。

    3.2K20

    【Linux笔记】Linux下编译C语言程序

    关于在Windows命令行下编译C程序的方法可查看往期笔记:【C语言笔记】windows命令行下编译C程序、【C语言笔记】使用notepad++、MinGW来开发C程序。...其中,编译生成的可执行文件默认为 a.out 。其中编译生成的 a.out 有时候是不具备可执行权限的,若是不具备执行权限,则可使用命令 chmod 777 a.out 。...关于文件的权限修改的具体的方法可以查看往期笔记:【Linux笔记】文件的权限 编译时可以使用 -o 参数修改编译生成的可执行文件的名称。如: ?...以上就是在Linux下编译C程序的基本方法,适用于源文件不多的情况。后续的笔记中还会分享其他编译方法,欢迎持续关注!如果你觉得对你有用的话,麻烦帮忙点个赞。...若不想安装Linux系统,也想适应一下Linux环境,则可参考往期笔记:【C语言笔记】Windows下体验Linux环境。

    12.5K10

    嵌入式Linux:子进程执行新程序

    在 Linux 中,子进程在创建后可以通过 exec 系列系统调用执行一个全新的程序。 这种情况下,子进程会替换原有的代码和数据段,运行一个新的可执行程序,但它的进程 ID(PID)保持不变。...子进程执行新程序的流程如下: 创建子进程:使用 fork() 创建子进程。 调用 exec:在子进程中调用 exec 执行新程序。...父进程继续执行:父进程保持不变,继续执行它的代码,直到调用 wait() 等待子进程结束。 exec 系列函数通过不同的方式传递参数和环境变量,能够实现灵活的程序替换。...在以下示例中,execvpe() 使用自定义环境变量执行程序。...0; } 子进程执行新程序时,可以通过 exec 系列系统调用替换子进程的内存空间,执行新的二进制程序。

    7710

    linux编译运行c++程序

    /count-character-in-string your-string 在linux环境下编译运行c++我也是第一次,同时他这种运行方式也和我之前在win下的不一样,在win下我都是直接编译运行,...这个题目的要求就是在执行的程序后面跟上一串输入,而这个操作,需要在main函数中添加特定的参数 #include using namespace std; int main(int...首先通过linux自带的编辑软件创建一个test.cc文件 demeen@VM-0-4-ubuntu:~/cpp_code$ nano test.cc 然后将上述代码复制进去,依次摁下ctrl+o,Enter...之后输入如下命令,这个命令的含义是使用g++编译test.cc程序,并生成名为test的可执行程序 demeen@VM-0-4-ubuntu:~/cpp_code$ g++ test.cc -o test...test" argv[1] = "abcd" argv[2] = "hello" argv[3] = "world" char *argv[]指向的数组中至少有一个字符指针,即argv[0],他通常指向程序中的可执行文件的文件名

    9.5K20

    【C语言】程序的翻译环境和执行环境

    翻译环境 这幅图来表示下面所讲述的过程ヽ(✿゚▽゚)ノ 每个源程序也就是.c(可以是多个源程序)文件实际上都会经过编译器的处理,最后在各自生成一个目标文件.obj。...具有部分链接的文件是可能的,如库程序,在目标文件中仍含有未解决的地址。 运行环境 程序执行的过程如下⇣ ①程序是必须载入的内存当中,在操作系统的环境中的环境中:一般都是由这个操作系统完成的。...常见的操作系统有很多种例如:Linux、Windows、macos 等 ②程序的执行都是从 main() 函数当中开始的。...③开始执行程序代码,这个时候程序将会使用一个运行时候的堆栈(stack),存储函数的局部变量和返回的地址。...当然程序也可以同时使用静态(stack)内存,存储于静态内存中的变量程序的整个执行过程一直会保存它们的值得。

    1K20

    【编程基础】C语言从源程序到可执行程序

    二.文本信息到可执行程序 不论是.c, .cpp 还是.h文件,所有的这些我们称之为程序的东西都是文本信息。他们都无法被计算机认识。...计算机只认识0和1.所以要让计算机执行我们用文本信息表示的程序,必须将这些文本信息表示的程序翻译成计算机认识的01代码串。...在linux下,以helloworld.c为例,使用gcc编译器,这个翻译过程一般分为以下四个步骤: 1).preprocessing预处理。...4)linking链接 由于我们引用了别的库中的符号,我们需要将这些符号的二进制指令集以某种方式装入到我们程序中,最后经过一些处理后才得到了能被计算机识别的可执行程序。...在linux下,是elf文件。 三. CPU的寻址能力/寻址范围 寻址能力就是CPU能查找的地址的最大范围。 CPU的寻址能力由地址总线的位数决定。

    1.2K40

    linux装载和启动可执行程序的过程

    罗军 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 基础知识 编译程序的过程 预处理...可执行文件) 通过调用链接器ld来链接程序运行需要的一大堆目标文件,以及所依赖的其它库文件,最后生成可执行文件 静态链接和动态链接 静态链接是指在编译阶段直接把静态库加入到可执行文件中去,这样可执行文件会比较大...动态链接则是指链接阶段仅仅只加入一些描述信息,而程序执行时再从系统中把相应动态库加载到内存中去 ELF格式 ?...在实际的可执行程序或者共享目标文件中,GOT表在名称为.got.plt的section中,PLT表在名称为.plt的section中。   ELF文件符号动态解析的过程 ?   ...load_elf_binary代码 load_elf_binary(struct linux_binprm *bprm) { …… if(elf_interpreter) //使用动态链接

    3.1K40

    【Linux】ELF可执行程序和动态库加载

    可执行程序格式   Linux操作系统上的可执行文件格式是ELF(Executable and Linkable Format)。...如下图所示: 因为目标文件.o也是ELF格式,那么将目标文件链接为可执行程序实际上就是将相同属性的section合并:   在Linux操作系统中,通过elf格式的可执行文件,操作系统可以读取文件中的节和段信息...这种文件格式的灵活性和可扩展性,使得Linux系统具有较强的兼容性和可移植性。 2....可执行程序加载   因为可执行程序在Linux内是以ELF格式呈现的,而ELF包含了程序的虚拟地址信息,所以程序在编译形成的时候其虚拟地址就已经确定好了;进程在运行程序时就会读取程序ELF信息来初始化mm_struct...指针,(pc指针指向当前执行的命令)这样一个程序就可以执行下去了,所以执行程序使用的地址也是虚拟地址。

    13110

    Linux下c程序的内存映像

    (2)内存有多种管理方法:栈、堆、数据段、bss段、.text段等,其实这个Linux环境可以查看以ELF结尾的可执行程序,可以看到所说的这些的;一个变量的存储类属性就是描述这个变量存储在何种内存段中。...fini段:用于保存进程退出时的执行程序。当进程结束时,系统会自动执行这部分代码。 init段:用于保存进程启动时的执行程序。当进程启动时,系统会自动执行这部分代码。...(3)研究变量的生命周期可以我们理解程序运行的一些现象、理解C语言的一些规则。 - 链接属性 - (1)大家知道程序从源代码到最终可执行程序,经历的过程:编译、链接。...(3).o的目标文件链接生成最终可执行程序的时候,其实就是把符号和相对应的段给链接起来。...Linux下c程序的内存映像 - 代码段、只读数据段 - (1)对应着程序中的代码(函数),代码段在linux中又叫文本段(.text)。

    3K20

    将c语言文件打包成exe可执行程序

    如何将编写的c语言程序打包成exe可执行文件呢? 以前我们写程序很多是在编辑器上,让编辑起来编译运行我们的程序。如果想将其打包成exe可执行文件该如何做?...gcc包括c和c++编译器 gcc和cc是一样的,c++和g++是一样的,一般c程序就用gcc编译,c++程序就用g++编译。 我们用gcc命令来编译我们的c语言程序。...gcc的用法 gcc test.c这样将编译出一个名为a.out的程序 gcc test.c -o test这样将编译出一个名为test的程序 -o参数用来指定生成程序的名字 我们一般用这个gcc...11:我们进入d盘后进入刚刚那个目录, 12:我们来编写也个c文件,简单的实用记事本就可以了。然后命名为.c。...打包后的exe文件一旦打开就执行了程序。 欢迎猿友们访问留言。 相关的请遵守csdn协议 -------jgdabc

    3.1K60
    领券