gcc编译c文件的方式,之后如何运行
gcc test.c -o test
将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。
简单点的就是gcc test.c,会自动生成a.out
./a.out也就是./test即可运行
gcc怎么编译c文件
通过gcc命令,最简单的单个文件的gcc xxx.c -o xxx,输出的就是可执行文件,如果编译链接没错的话,如果你有多个文件还要控制具体的编译优化这些选项,只需要在这基础上加上其他的编译选项即可。
如何用GCC在linux下编译C语言程序
在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器,假设我们有下面一个非常简单的源程序(hello.c):
int main(int argc,char **argv)
{
printf(“Hello Linux\n“);
}
要编译这个程序,我们只要在命令行下执行:
gcc -o hello hello.c
gcc 编译器就会为我们生成一个hello的可执行文件.执行./hello就可以看到程
序的输出结果了
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
在ubuntu系统中如何用GCC编译运行一个C程序
1、确定安装了gcc编译器后,接下来用vim一个c文件。
2、下图是我在c文件中写入的内容,就简单打印一条语句。
3、写好c文件后,用ls命令查看该文件是否存在。
4、确定c文件存在后,使用命令gcc c文件名 -o 生成的可执行文件名(例:gcc demo.c -o demo)。输入编译命令后,如果没显示什么信息,就意味编译成功了。
5、编译成功后,再用ls命令查看一下可执行文件是否有生成。
6、最后再运行一下可执行文件,可以看到,正确输出了一条语句。
arm-linux-gcc怎么编译自己写的头文件
linux gcc编译c文件头文件
linux gcc编译c文件头文件,使用GCC编译器编译C语言
凶猪下山
转载
关注
0点赞·1047人阅读
GCC编译C源代码有四个步骤:预处理—-》编译—-》汇编—-》链接。
可以利用GCC的参数来控制执行的过程,这样就可以更深入的了解编译C程序的过程。
下面将通过对一个程序的编译来演示整个过程。
#include
int main()
{
printf(“happy new year!\n“);
return 0;
}
1:预处理:编译器将C程序的头文件编译进来,还有宏的替换,可以用gcc的参数-E来参看。
预处理 命令:gcc -E hello.c -o hello.i
作用:将hello.c预处理输出hello.i
2:编译:这个阶段编译器主要做词法分析、语法分析、语义分析等,在检查无错误后后,把代码翻译成汇编语言。可用gcc的参数-S来参看。
编译器(ccl)将文本文件hello.i 翻译成文本文件hello.s, 它包含一个汇编语言程序。汇编语言程序中的每条语句都以一种标准的文本格式描述了一条低级机器语言指令。
编译命令:gcc -S hello.i -o hello.s
作用:将预处理输出文件hello.i汇编成hello.s文件
3:汇编:把编译阶段生成的.s 文件转换为二进制目标代码。可用gcc的参数-c来参看。汇编器(as)将hello.s翻译成机器语言指令,把这些指令打包成可重定位目标程序的格式, 并将结果保存在目标文件hello.o中。hello.o文件是一个二进制文件,它的字节编码是机器语言。
汇编 命令:gcc -c hello.s -o hello.o
作用:作用:将汇编输出文件hello.s编译输出hello.o文件
4:链接:把obj文件链接为可执行的文件:链接器(ld)负责.o文件的并入。结果就是hello文件,它是一个课执行的目标文件,可以加载到存储器后由系统调用。
链接命令:gcc hello.o -o hello
一步操作的话是: (-o必须在hello之前 )
$gcc hello.c -o hello
$./hello或者:(会默认生成a.out文件)
$gcc hello.c
$./a.out
windows下gcc如何编译c文件
方法如下:
双击GCC安装包,mingw-get-setup.exe,点击Install安装。
点击Change选择安装路径,尽量不要有中文和空格,
将package 下面的mingw-***和mingw32-***和msys-**。都勾选上,等待下载安装,直到勾选框全部变成土灰色。
找到安装目录的bin目录,将路径右键复制下来。
找到计算机,右键,属性。点击 高级系统设置。
找到下面的 环境变量 点击。
在系统变量里面找到 Path变量,双击出现下面输入框,在变量值的末尾添加刚刚复制的bin目录,并在最后加上英文状态下 的分号(;)。点击确定。
测试是否安装成功,在cmd命令提示符里面输入 gcc –help 回车键,
EditPlus 3 安装完成之后的界面点击File 下的 new C/C++
出现以下测试代码,保存到指定目录,最后不要有空格和中文,我保存到E:/My/Test下面测试。文件名为test.c
命令提示符窗口进入到 E:/MyTest 下 用dir 命令显示当前目录下的所有文件。
使用gcc 命令编译 命令格式 如下 gcc test.c – o test 回车键。编译完成。
直接输入test运行,输出hello,world。
测试完成。
linux中如何用gcc编译用vi写的c文件
方法/步骤
1、进入linux系统,创建C文件“vim test.c”同时进入vim界面也可以利用指令“touch test.c”创建后,然后“vim test.c”进入vim界面。
2、vim界面,由“ESC”建来切换三种模式,一般模式:在Linux终端中输入“vim 文件名”就进入了一般模式,但不能输入文字。模式:在一般模式下按i就会进入模式,此时就可以写程序,按Esc可回到一般模式。
命令模式:在一般模式下按:就会进入命令模式,左下角会有一个冒号出现,此时可以敲入命令并执行。键盘“a”键可以直接进入模式
3、通过输入底部指令“:set nu”显示行数。
4、输入完C代码后,记得“ESC”键切换,输入“:wq”保存退出。
5、指令“ls”显示当前目录下文件,我们可以见到存在的C文件编译“gcc -o test test.c”编译成功后,运行“./test”。
linux 怎么编译c的源程序的gcc,编译命令是什么
在Linux下面,如果要编译一个C语言源程序,我们要使用gcc编译器。
先将源文件编译成目标文件:gcc – c hello.c
生成hello.o文件,再将目标文件编译成可执行文件:gcc -o hello hello.o
如:
int main(int argc,char **argv)
{
printf(“Hello Linux\n“);
}
扩展资料:
在使用GCC编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,这里只介绍其中最基本、最常用的参数。具体可参考GCC Manual。
GCC最基本的用法是∶gcc
其中options就是编译器所需要的参数,filenames给出相关的文件名称。
参考资料:
百度百科_gcc
用gcc编译器C语言程序的技巧
方法/步骤
1、编写c代码,并输入以下代码,生成文件hello.c
[root@wahoo
test]#
vim
hello.c
#include
《stdio.h》
#define
DISPLAY
“hello
c!“
int
main(void)
{
printf(“%s\n“,
DISPLAY
);
return
0;
}
ZZ(说明:ZZ当前文件进行快速保存操作)
2、预编译(Preprocessing)
会对各种预处理指令(#include
#define
#ifdef
等#开始的代码行)进行处理,删除注释和多余的空白字符,生成一份新的代码
[root@wahoo
test]#gcc
-E
hello.c
-o
hello.i
E
参数
通知gcc对目标文件进行预编译,这里是对文件hello.c文件
o
参数
是对命令输出结果进行导入操作,这里是把
gcc
-E
hello.c
操作结果输出到文件hello.i(命名要自定义)中进行保存
这个命令执行完后我们目录下多了一个文件hello.i,你可以查阅一下文件的内容。
3、编译(Compilation)
对代码进行语法、语义分析和错误判断,生成汇编代码文件
[root@wahoo
test]#gcc
-S
hello.i
-o
hello.s
S
参数
通知gcc对目标文件进行编译,这里是对文件hello.i文件
通过这一步我们知道
C语言跟汇编的
关系,至于他们之前是如何进行转换的,大家可以进行更深入的学习与探讨。
此时目录下多了一个hello.s文件,内容如图
4、汇编(Assembly)
把汇编代码转换与计算机可认识的二进制文件,要知道计算机只认识0和1呢
[root@wahoo
test]#gcc
-c
hello.s
-o
hello.o
c
参数
通知gcc对目标文件执行指令转换操作
此步骤我们得到文件hello.o
大家也同样打开文件查看一下,这个文件里面几乎没几个字符大家能看懂,这就对了,但大家可以通过这种方法将其转化为我们可读的形式:
[root@wahoo
test]#readelf
-a
hello.o
5、链接(Linking/Build)
通俗的讲就是把多个*.o文件合并成一个可执行文件,二进制指令文件
[root@wahoo
test]#gcc
hello.o
-o
hello
这里我们就得到了一个可以直接在系统下执行的文件
hello
我们也可以对这个文件进行readelf操作,也可以进行二进制指令转汇编的操作
[root@wahoo
test]#objdump
-d
hello
6、程序运行
[root@wahoo
test]#./hello
hello
c!
7、总结:gcc
编译c程序的主要过程包括
预编译-》编译-》汇编-》连接
四个过程,每个过程都分别进行不同的处理,了解了这其中的一些原理,对c编程的理解大有益处
怎么用gcc编译文件
在终端中输入 gcc 文件名 -o 目标文件名\x0d\x0a然后 ./目标文件名 就行了,没有目标文件名,自动存为 a\x0d\x0a执行 ./a 就行了。\x0d\x0a\x0d\x0a在使用Gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数。\x0d\x0a GCC最基本的用法是∶gcc \x0d\x0a 其中options就是编译器所需要的参数,filenames给出相关的文件名称。\x0d\x0a -c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。\x0d\x0a -o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。\x0d\x0a -g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。\x0d\x0a -O,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。\x0d\x0a -O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。\x0d\x0a -Idirname,将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。C程序中的头文件包含两种情况∶\x0d\x0a A)#include
\x0d\x0a B)#include “myinc.h”\x0d\x0a 其中,A类使用尖括号(《 》),B类使用双引号(“ ”)。对于A类,预处理程序cpp在系统预设包含文件目录(如/usr/include)中搜寻相应的文件,而B类,预处理程序在目标文件的文件夹内搜索相应文件。 \x0d\x0a\x0d\x0aGCC执行过程示例\x0d\x0a\x0d\x0a 示例代码 a.c:\x0d\x0a #include
\x0d\x0a int main()\x0d\x0a {\x0d\x0a printf(“hello\n“);\x0d\x0a }\x0d\x0a 预编译过程:\x0d\x0a 这个过程处理宏定义和include,并做语法检查。\x0d\x0a 可以看到预编译后,代码从5行扩展到了910行。\x0d\x0a gcc -E a.c -o a.i\x0d\x0a cat a.c | wc -l\x0d\x0a 5\x0d\x0a cat a.i | wc -l\x0d\x0a 910\x0d\x0a 编译过程:\x0d\x0a 这个阶段,生成汇编代码。\x0d\x0a gcc -S a.i -o a.s\x0d\x0a cat a.s | wc -l\x0d\x0a 59\x0d\x0a 汇编过程:\x0d\x0a 这个阶段,生成目标代码。\x0d\x0a 此过程生成ELF格式的目标代码。\x0d\x0a gcc -c a.s -o a.o\x0d\x0a file a.o\x0d\x0a a.o: ELF 64-bit LSB relocatable, AMD x86-64, version 1 (SYSV), not stripped\x0d\x0a 链接过程:\x0d\x0a 链接过程。生成可执行代码。链接分为两种,一种是静态链接,另外一种是动态链接。使用静态链接的好处是,依赖的动态链接库较少,对动态链接库的版本不会很敏感,具有较好的兼容性;缺点是生成的程序比较大。使用动态链接的好处是,生成的程序比较小,占用较少的内存。\x0d\x0a gcc a.o -o a\x0d\x0a 程序运行:\x0d\x0a ./a\x0d\x0a hello\x0d\x0a本段\x0d\x0aGCC编译简单例子\x0d\x0a\x0d\x0a 编写如下代码:\x0d\x0a #include
\x0d\x0a int main()\x0d\x0a {\x0d\x0a printf(“hello,world!\n“);\x0d\x0a }\x0d\x0a 执行情况如下:\x0d\x0a gcc -E hello.c -o hello.i\x0d\x0a gcc -S hello.i -o hello.s\x0d\x0a gcc -c hello.s -o hello.o\x0d\x0a gcc hello.c -o hello\x0d\x0a ./hello\x0d\x0a hello,world!