安装gcc$ yum -y install gcc
# 安装c语言编译器gcc
[root@bogon ~]# yum -y install gcc
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.bupt.edu.cn
* extras: mirrors.bupt.edu.cn
* updates: mirrors.neusoft.edu.cn
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
updates/7/x86_64/primary_db | 13 MB 00:00:19
正在解决依赖关系
--> 正在检查事务
---> 软件包 gcc.x86_64.0.4.8.5-44.el7 将被 安装
--> 正在处理依赖关系 cpp = 4.8.5-44.el7,它被软件包 gcc-4.8.5-44.el7.x86_64 需要
--> 正在处理依赖关系 glibc-devel >= 2.2.90-12,它被软件包 gcc-4.8.5-44.el7.x86_64 需要
--> 正在处理依赖关系 libmpfr.so.4()(64bit),它被软件包 gcc-4.8.5-44.el7.x86_64 需要
--> 正在处理依赖关系 libmpc.so.3()(64bit),它被软件包 gcc-4.8.5-44.el7.x86_64 需要
--> 正在检查事务
---> 软件包 cpp.x86_64.0.4.8.5-44.el7 将被 安装
---> 软件包 glibc-devel.x86_64.0.2.17-325.el7_9 将被 安装
--> 正在处理依赖关系 glibc-headers = 2.17-325.el7_9,它被软件包 glibc-devel-2.17-325.el7_9.x86_64 需要
--> 正在处理依赖关系 glibc = 2.17-325.el7_9,它被软件包 glibc-devel-2.17-325.el7_9.x86_64 需要
--> 正在处理依赖关系 glibc-headers,它被软件包 glibc-devel-2.17-325.el7_9.x86_64 需要
---> 软件包 libmpc.x86_64.0.1.0.1-3.el7 将被 安装
---> 软件包 mpfr.x86_64.0.3.1.1-4.el7 将被 安装
--> 正在检查事务
---> 软件包 glibc.x86_64.0.2.17-317.el7 将被 升级
--> 正在处理依赖关系 glibc = 2.17-317.el7,它被软件包 glibc-common-2.17-317.el7.x86_64 需要
---> 软件包 glibc.x86_64.0.2.17-325.el7_9 将被 更新
---> 软件包 glibc-headers.x86_64.0.2.17-325.el7_9 将被 安装
--> 正在处理依赖关系 kernel-headers >= 2.2.1,它被软件包 glibc-headers-2.17-325.el7_9.x86_64 需要
--> 正在处理依赖关系 kernel-headers,它被软件包 glibc-headers-2.17-325.el7_9.x86_64 需要
--> 正在检查事务
---> 软件包 glibc-common.x86_64.0.2.17-317.el7 将被 升级
---> 软件包 glibc-common.x86_64.0.2.17-325.el7_9 将被 更新
---> 软件包 kernel-headers.x86_64.0.3.10.0-1160.49.1.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
========================================================================================================
Package 架构 版本 源 大小
========================================================================================================
正在安装:
gcc x86_64 4.8.5-44.el7 base 16 M
为依赖而安装:
cpp x86_64 4.8.5-44.el7 base 5.9 M
glibc-devel x86_64 2.17-325.el7_9 updates 1.1 M
glibc-headers x86_64 2.17-325.el7_9 updates 691 k
kernel-headers x86_64 3.10.0-1160.49.1.el7 updates 9.0 M
libmpc x86_64 1.0.1-3.el7 base 51 k
mpfr x86_64 3.1.1-4.el7 base 203 k
为依赖而更新:
glibc x86_64 2.17-325.el7_9 updates 3.6 M
glibc-common x86_64 2.17-325.el7_9 updates 12 M
事务概要
========================================================================================================
安装 1 软件包 (+6 依赖软件包)
升级 ( 2 依赖软件包)
总下载量:48 M
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/9): glibc-devel-2.17-325.el7_9.x86_64.rpm | 1.1 MB 00:00:01
(2/9): glibc-headers-2.17-325.el7_9.x86_64.rpm | 691 kB 00:00:00
(3/9): kernel-headers-3.10.0-1160.49.1.el7.x86_64.rpm | 9.0 MB 00:00:04
(4/9): libmpc-1.0.1-3.el7.x86_64.rpm | 51 kB 00:00:00
(5/9): mpfr-3.1.1-4.el7.x86_64.rpm | 203 kB 00:00:00
(6/9): glibc-2.17-325.el7_9.x86_64.rpm | 3.6 MB 00:00:18
(7/9): cpp-4.8.5-44.el7.x86_64.rpm | 5.9 MB 00:00:23
(8/9): glibc-common-2.17-325.el7_9.x86_64.rpm | 12 MB 00:00:26
(9/9): gcc-4.8.5-44.el7.x86_64.rpm | 16 MB 00:00:28
--------------------------------------------------------------------------------------------------------
总计 1.7 MB/s | 48 MB 00:00:28
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在更新 : glibc-2.17-325.el7_9.x86_64 1/11
正在更新 : glibc-common-2.17-325.el7_9.x86_64 2/11
正在安装 : mpfr-3.1.1-4.el7.x86_64 3/11
正在安装 : libmpc-1.0.1-3.el7.x86_64 4/11
正在安装 : cpp-4.8.5-44.el7.x86_64 5/11
正在安装 : kernel-headers-3.10.0-1160.49.1.el7.x86_64 6/11
正在安装 : glibc-headers-2.17-325.el7_9.x86_64 7/11
正在安装 : glibc-devel-2.17-325.el7_9.x86_64 8/11
正在安装 : gcc-4.8.5-44.el7.x86_64 9/11
清理 : glibc-2.17-317.el7.x86_64 10/11
清理 : glibc-common-2.17-317.el7.x86_64 11/11
验证中 : mpfr-3.1.1-4.el7.x86_64 1/11
验证中 : glibc-devel-2.17-325.el7_9.x86_64 2/11
验证中 : gcc-4.8.5-44.el7.x86_64 3/11
验证中 : glibc-headers-2.17-325.el7_9.x86_64 4/11
验证中 : kernel-headers-3.10.0-1160.49.1.el7.x86_64 5/11
验证中 : libmpc-1.0.1-3.el7.x86_64 6/11
验证中 : glibc-common-2.17-325.el7_9.x86_64 7/11
验证中 : glibc-2.17-325.el7_9.x86_64 8/11
验证中 : cpp-4.8.5-44.el7.x86_64 9/11
验证中 : glibc-2.17-317.el7.x86_64 10/11
验证中 : glibc-common-2.17-317.el7.x86_64 11/11
已安装:
gcc.x86_64 0:4.8.5-44.el7
作为依赖被安装:
cpp.x86_64 0:4.8.5-44.el7 glibc-devel.x86_64 0:2.17-325.el7_9
glibc-headers.x86_64 0:2.17-325.el7_9 kernel-headers.x86_64 0:3.10.0-1160.49.1.el7
libmpc.x86_64 0:1.0.1-3.el7 mpfr.x86_64 0:3.1.1-4.el7
作为依赖被升级:
glibc.x86_64 0:2.17-325.el7_9 glibc-common.x86_64 0:2.17-325.el7_9
完毕!
验证安装$ gcc -v
[root@VM-0-9-centos ~]# gcc -v
使用内建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
目标:x86_64-redhat-linux
配置为:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
线程模型:posix
gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
创建编辑源文件
执行命令 $ vi hello.c
进入 vim编辑器 , 进入默认为 [命令模式],无法输入,键入英语字符[i]或[a]或[o]键,或者insert键,进入编辑模式(下有提示为 INSERT). 开始编写文件如下:
-
编辑完成后,按下[Esc]键,退出编辑模式. 进入命令模式.输入
:
号,进入底线命令模式 , 再输入wq ,保存退出 -
编译文件,会产生一个
a.out
的输出文件.
[root@VM-0-9-centos C_language]# vi hello.c
[root@VM-0-9-centos C_language]# gcc hello.c
[root@VM-0-9-centos C_language]# ls
a.out hello.c
- 运行
a.out
./
,成功打印出 Hello World
当然也可以一起使用,编译加运行 $ gcc hello.c && ./a.out
一些其他gcc命令
-
gcc hello.c -o hello.out
指定输出文件名
-
仅执行编译操作,不进行连接操作:
$ gcc -c hello.c
生成.o
文件
-
执行编译预处理:
$ gcc -E hello.c
-
$ gcc -S .\HelloWorld.c
编译为汇编代码. 生成.s
文件
查看文件内容如下.
[root@VM-0-9-centos C_language]# cat hello.s
.file "hello.c"
.section .rodata
.LC0:
.string "Hello World"
.text
.globl main
.type main, @function
main:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movl $.LC0, %edi
movl $0, %eax
call printf
movl $0, %eax
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size main, .-main
.ident "GCC: (GNU) 4.8.5 20150623 (Red Hat 4.8.5-44)"
.section .note.GNU-stack,"",@progbits
Linux下编译及运行c
安装
[root@izuf6567rc0o5t7oi23kmqz ~]# yum -y install gcc
查看版本
[root@izuf6567rc0o5t7oi23kmqz ~]# gcc -v
# gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
[root@izuf6567rc0o5t7oi23kmqz ~]# cd /
[root@izuf6567rc0o5t7oi23kmqz /]# ls
bin data etc lib lost+found mnt proc run srv sys usr
boot dev home lib64 media opt root sbin swap tmp var
[root@izuf6567rc0o5t7oi23kmqz /]# cd data
[root@izuf6567rc0o5t7oi23kmqz data]# ll
总用量 0
[root@izuf6567rc0o5t7oi23kmqz data]# vi HelloWorld.c
[root@izuf6567rc0o5t7oi23kmqz data]# ll
总用量 4
-rw-r--r-- 1 root root 75 12月 29 16:00 HelloWorld.c
[root@izuf6567rc0o5t7oi23kmqz data]# gcc HelloWorld.c
[root@izuf6567rc0o5t7oi23kmqz data]# ll
总用量 16
-rwxr-xr-x 1 root root 8560 12月 29 16:01 a.out
-rw-r--r-- 1 root root 75 12月 29 16:00 HelloWorld.c
[root@izuf6567rc0o5t7oi23kmqz data]# ./a.out
Hello World[root@izuf6567rc0o5t7oi23kmqz data]# rm -rf a.out
同时运行
[root@VM-0-9-centos data]# gcc hello.c && ./a.out
Hello world[root@VM-0-9-centos data]# ls
a.out C_language hello.c