更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux命令 > Linux gcc、gcov、getenforce、getent命令的用法及解释

Linux gcc、gcov、getenforce、getent命令的用法及解释

更新时间:2022-01-22 10:23:27浏览次数:875+次

以下为你详细解释gcc、gcov、getenforce、getent命令的用法。

\

Linux gcc命令的用法及解释

Linux gcc命令使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点。现在很多程序员都应用GCC,怎样才能更好的应用GCC。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。

1、语法

gcc(选项)(参数)

2、选项

-o:指定生成的输出文件;

-E:仅执行编译预处理;

-S:将C代码转换为汇编代码;

-wall:显示警告信息;

-c:仅执行编译操作,不进行连接操作。

3、参数

C源文件:指定C语言源代码文件。

4、实例

常用编译命令选项:

假设源程序文件名为test.c。

无选项编译链接:

gcc test.c

将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。

选项 -o:

gcc test.c -o test

将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。

选项 -E:

gcc -E test.c -o test.i

将test.c预处理输出test.i文件。

选项 -S:

gcc -S test.i

将预处理输出文件test.i汇编成test.s文件。

选项 -c:

gcc -c test.s

将汇编输出文件test.s编译输出test.o文件。

无选项链接:

gcc test.o -o test

将编译输出文件test.o链接成最终可执行文件test。

选项 -O:

gcc -O1 test.c -o test

使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。

多源文件的编译方法:

如果有多个源文件,基本上有两种编译方法:

假设有两个源文件为test.c和testfun.c

多个文件一起编译:

gcc testfun.c test.c -o test

将testfun.c和test.c分别编译后链接成test可执行文件。

分别编译各个源文件,之后对编译后输出的目标文件链接。

gcc -c testfun.c    #将testfun.c编译成testfun.o

gcc -c test.c       #将test.c编译成test.o

gcc -o testfun.o test.o -o test    #将testfun.o和test.o链接成test

以上两种方法相比较,第一中方法编译时需要所有文件重新编译,而第二种方法可以只重新编译修改的文件,未修改的文件不用重新编译。

Linux gcov命令的用法及解释

Linux gcov命令是一款测试程序的代码覆盖率的工具。

1、语法

gcov(选项)(参数)

2、选项

-h:显示帮助信息;

-v:显示版本信息;

-a:输出所有的基本块的执行计数;

-n:并创建输出文件。

3、参数

V语言文件:C语言源代码文件。

Linux getenforce命令的用法及解释

使用getenforce命令可以在Linux下查看是否开启了SELinux。

下面是Linux getenforce命令的使用方法:

[root@DB-Server ~]# getenforce

Enforcing

如何开启、关闭SELinux呢?最简单的方式使用setenforce,这样不用重启服务器,但是该命令只能将SeLinux在enforcing、permissive这两种模式之间切换,服务器重启后,又会恢复到/etc/selinux/config下,也就是说setenforce的修改是不能持久的。

[root@DB-Server ~]# setenforce 0

[root@DB-Server ~]# getenforce

Permissive

[root@DB-Server ~]# setenforce 1

[root@DB-Server ~]# getenforce;

Enforcing

[root@DB-Server ~]#

另外就是修改/etc/selinux/config,如下所示,可以配置SELinux为enforcing、permissive、disabled三个值,修改后必须重启系统才能生效。

[root@DB-Server ~]# more /etc/selinux/config

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

#       enforcing - SELinux security policy is enforced.

#       permissive - SELinux prints warnings instead of enforcing.

#       disabled - SELinux is fully disabled.

SELINUX=enforcing

# SELINUXTYPE= type of policy in use. Possible values are:

#       targeted - Only targeted network daemons are protected.

#       strict - Full SELinux protection.

SELINUXTYPE=targeted

You have new mail in /var/spool/mail/root

[root@DB-Server ~]#

如果由 enforcing 或 permissive 改成 disabled,或由 disabled 改成其他两个,那也必须要重新开机。这是因为 SELinux 是整合到核心里面去的,你只可以在SELinux 运作下切换成为强制 (enforcing) 或宽容 (permissive) 模式,不能够直接关闭 SELinux 的!同时,由 SELinux 关闭 (disable) 的状态到开启的状态也需要重新开机啦。

Linux getent命令的用法及解释

Linux getent命令用来查看系统的数据库中的相关记录。

1、用法

getent [选项...] 数据库 [键 ...]

Get entries from administrative database.

-s, --service=CONFIG       要使用的服务配置

-?, --help                 给出该系统求助列表

--usage                给出简要的用法信息

-V, --version              打印程序版本号

长选项的强制或可选参数对对应的短选项也是强制或可选的。

2、支持的数据库

ahosts ahostsv4 ahostsv6 aliases ethers group gshadow hosts netgroup

networks passwd protocols rpc services shadow

3、实例

# getent hosts 域名     #从hosts库中得到某个域名的IP信息

比如# getent hosts hmxthome.com

182.149.160.47  域名

200.181.57.217  域名

123.125.15.144  域名

# getent passwd tank     #从passwd库中得到账号tank信息

tank:x:502:502::/home/tank:/bin/bash