Linux编译出程序后如何运行? (linux编译后如何执行程序吗)
在Linux系统中,程序的运行分为两个步骤:编译和执行。编译过程会将源代码转化成机器语言,而执行过程则是将机器语言转化成计算机可执行的程序。
那么,Linux编译的程序如何运行呢?本文将介绍一下Linux下编译程序的方式以及运行程序的方法。
一、编译程序
Linux系统下编译程序的方式有多种,本文以GCC编译器为例进行说明。GCC是Linux下一个非常流行的编译器,用于编译多种编程语言,例如C语言、C++、Java等。
1.安装GCC编译器
在安装GCC编译器之前,需要先确保系统中已经安装了必要的开发工具和库文件,否则会导致编译失败。在Ubuntu系统下,可以通过以下命令安装GCC和必要的开发工具:
“`
sudo apt-get update
sudo apt-get install build-essential
“`
其中,build-essential是Ubuntu系统下的一个开发工具包,包含了GCC、make等必要的工具。
2.编写代码
在安装好GCC之后,需要先编写源代码。这里以一个简单的C语言程序为例,代码如下:
“`
#include
int mn()
{
printf(“Hello, world!\n”);
return 0;
}
“`
3.编译程序
编写好源代码后,需要使用GCC编译器将源代码编译成可执行文件。使用的命令是:
“`
gcc -o output input.c
“`
其中,-o参数指定输出文件的名称,output表示输出文件的名称,input.c表示需要编译的源代码文件名称。
4.运行程序
经过上述步骤之后,我们已经成功地将源代码编译成了可执行文件。接下来,我们可以执行这个程序,使用以下命令:
“`
./output
“`
其中,./表示当前目录,output为编译生成的可执行文件名称。执行该命令后,程序会在终端输出“Hello, world!”这句话,表示程序成功运行。
二、程序运行
在Linux系统中,程序的运行方式有多种,包括在终端运行、后台运行、定时运行等。接下来,我们将详细介绍这些运行方式。
1.在终端运行程序
在Linux系统下,可以使用以下命令在终端直接运行程序:
“`
./output
“`
其中,./表示当前目录,output为编译生成的可执行文件名称。
2.在后台运行程序
有些程序需要在后台运行,这时可以使用以下命令:
“`
./output &
“`
其中,&表示在后台运行程序。
3.定时运行程序
在Linux系统中,可以使用crontab命令启动定时任务,定时运行程序。以下是一个简单的例子:
“`
# 编辑定时任务列表
crontab -e
# 在文件末尾添加如下一行
0 * * * * /usr/bin/python /path/to/script.py
“`
其中,0 * * * *表示每小时运行一次,/usr/bin/python表示使用Python语言运行程序,/path/to/script.py表示程序的文件路径。
相关问题拓展阅读:
- 如何在linux环境下编辑一个c语言源程序并将其编译为可执行文件?
- linux 如何运行编译程序
如何在linux环境下编辑一个c语言源程序并将其编译为可执行文件?
打开安装好的Linux系统(ubuntu18.04)
1.安虚返樱装编辑器
使用语句:sudo apt-get install vim安装vim,可以在安装前查看是否安装vim编辑器。(特别提示:在安装vim前更好将软件更新,使用指令sudo apt-get update.)之所以要加sudo的原因是这些安装和更新软件的时候需要使用管理员权限才可以进行。
2.安装gcc编译器
和安装vim类似使用sudo apt-get install gcc,安装完成后可以使用cc-v来查看编译器版本信息等。cc -v界面如下:
3.创建
文件夹
并进入该文件
创建文件夹前可以使用 指令ls 来查看该系统中有哪些文件。然后使用mkdir+文件夹名创建文件,并且查看该文件夹是否被创建。(假如创建了一个名字为workspace的文件mkdir workspace)进入该文件则使用命令 cd workspace.然后就进入该目录。然后再创建一个文件名为les1 的文件(mkdir les1)。进入les1文件(cd les1)。创建一个.c文件:touch a.c。
4.编辑该文件
输入vi a.c 进入该界面
会发现用户不能从键盘输入信息,这时我们需要从键盘按一个i在下面会显示INSERT(表示插入)。
然后就可以使用键盘输入代码。输入完成以后可以按Esc退出插入操作。再同时按shift和冒号,从键盘输入wq(表示保存世察并退出)。
5.编译该文件
输入指令:cc a.c(cc 是gcc 的缩写)
若没有报错则从键盘输入ls查看是否生成了可以差丛执行的文件a.out文件。
会发现生成a.out文件
6.执行该文件
使用指令 ./a.out 执行该程序。输出
hello world
!
linux 如何运行编译程序
lz有这个疑问,说明lz用的是带图形用户界面的linux。
如果是ubuntu,那么,在应用腔敏答程序拿如(applications)–>附件(accessories)–>终端(terminal)中输入命令。伍慧
gcc有多达100多个参数,现介绍常用的几个。如果对其他参数也有兴趣,可以参考:man gcc
预先处理选项
-E: 只对文件进行预处理,输出结果到标准输出
-C: 告诉预处理器不要丢弃注释.配合`-E‘选项使用.-P: 告诉预处理器不要产生`#line’命令.配合`-E’选项使用.
-v: 显示正在使用的gcc的版本
常用编译选项
-c: 将源程序编译为目标代码但并不做链接的工作,不生成最终的可执行文件,只生成一个与源文件文件名相同的以.o为后缀的目标文件。
-S:将远程序编译为一个后缀为.s的汇编语言文件,不会生成可执行文件
-x:强制编译器用指定的语言编译器来编译某个源文件
gcc -x c++ test.c 表示强制用C++编译器来编译c程序
-static: 强制连接静态库,运行时不依赖动态库
-share: 编译时尽量使用动态库
-o: 指定生成的可执行文件名,如果没有该选项,如果生成可执行文件,默认文件名为a.out
编译路径选项
-i : 指定特定头文件
gcc –c -i /home/zry/test.h test.c
-I: 依赖选项,指定头文件路径
Linux下大多数函数将头文件放在/usr/include目录下,如果需要指定其他路径,可以使用该选项
gcc –I/home/zry/include –c test.c 添加/home/zry/include到查找路径
-L : 指定库文件搜素路径,用法同上
-l:指定特定库文件
gcc –lapp –c test.c
Linux的库文件有一个约定,即以lib开头,-lapp表示连接libapp.so库文件
目标生成选项
-shared: 生成动态库
gcc –shared libtest.so -i /home/zry/test.h test.c
生成静态库需要ar命令,后面讲解
-fPIC: 生成可用于动态库的位置独立代码。所有的内部寻址均通过全局偏移表完成。
-ansi:支持符合ANSI标准的C程序.
该选项就会关闭GNU C中某些不兼容ANSI C的特性,例如a, inline和 typeof关键字以及诸如unix和vax这些表明当前系统类型的预定义宏。
__a__, __extension__, __inline__和__typeof__仍然有效
使用`-ansi’选项的时候,预处理器会预定义一个__STRICT_ANSI__宏.有些头文件 关注此宏,以避免声明某些函数,或者避免定义某些宏,这些函数和宏不被ANSI标准调用;这样就不会干扰在其他地方使用这些名字的程码销序了.
fno-a:此选项实现ansi选项的功能的一部分,它禁止将a,inline和typeof用作关键字。
-fno-strict-prototype:只对g++起作用,使用这个选项,g++将对不带参数的函数,都认为是没有显式的对参数的个数和类型说明,而不是没有参数.而gcc无论是否使用这个参数,都将对没有带参数的函数,认为没有显式说明的类型
-fthis-is-varialble:就是向传统c++看齐,可以使用this当一般变量使用
-fcond-miatch:允许条件表达式的第二和第三参数类型不匹配,表达式的值将为void类型
-funsigned-char:
-fno-signed-char:
-fsigned-char:
-fno-unsigned-char:
这四个参数是对char类型进行设置,将char类型设置unsigned char(前两个参数)或者 signed char(后两个参数)
-imacros file: 将file文件的宏,扩展到gcc/g++的输入文件,宏定义本身并不出现在输入文件中
-Dmacro: 相当于C语言凯肆中的#define macro
-Dmacro=defn: 相当于C语言中的#define macro=defn
-Umacro: 相当于C语言中的#undef macro
-undef: 取消对任何非标准宏的定义
-M: 生成文件关联的信息。包含目标文件所依赖的所有源代码
-MM: 和M一样,但是它将忽略由#include造成的依赖关系。
-MD: -M相同,但是输出将导入到.d的文件里面
-MMD: 和-MM相同,但是输出将导入到.d的文件里面
警告选项
fsyntax-only:检查程序中的语法错误,但是不产生输出信息.
-w:禁止所有警告信息.
-Wno-import: 禁止所有关于#import的警告信息.
-pedantic:打开完全遵从ANSI C标准所需的全部警告诊断;拒绝接受采用了被禁止的语法扩展的程序.
-Werror:将所有警告转换为错误
Werror选项要求GCC将所有警告当作错误进行处理。
-Wall: 显示所有警告信息
在终端里运行。在linux中有一个终端,类似于windows下的cmd
关于linux编译后如何执行程序吗的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。