gcc的使用

一、使用gcc

1、gcc -v 查看gcc的版本

2、gcc f1.c -o f2

     或者:gcc f1.c 

f1.c文件代码:

#include<stdio.h>
int main()
{
	printf("Hello World!\n");
	return 0;
}

二、用gcc编译多个源文件程序

//mul1.c

#include<stdio.h>
#include "mul2.h"
int main()
{
        printf("Hello World!\n");
        f();
        return 0;
}
 //mul2.c


#include<stdio.h>
int f()
{
        printf("int f().\n");
        return 0;
}
 //mul2.h


void f();

 gcc mul1.c  mul2.c -o mul

 用一条gcc命令编译多个源文件的缺点:每个文件都要重新编译,比较费时间。

三、gcc的警告和提示

1、gcc包含完整的出错检查和警告提示功能,可以帮助程序员尽快找到错误的代码。

2、gcc包含30多个警告和3个警告级别。

四、一个不好的例子

 //bad.c

#include<stdio.h>
void main(void)
{
        long long int var = 3;
        printf("this is not a standard c program!\n");
}

该代码不好的地方有:

1、main函数没有使用return语句返回int类型值

2、变量var未使用

实际编译结果:

五、gcc的警告选项

1、-Wcomment,如果出现注释嵌套则警告(/* 后出现 /*)

2、-Wformat,如果传递给printf的参数与指定格式不匹配则告警

3、-Wmain,如果main的返回类型不是int或者调用main时参数不正确则告警

4、-Wparentheses,根据上下文推断,如果(n==10)写作(n=10)则警告

5、-Wswitch, 如果switch中少了一个或者少了多个case分支(仅对enum适用)则警告。

6、-Wunused, 变量声明了但未使用,或者static类型函数未被调用则警告

7、-Wuninitialized, 使用的自动变量没有初始化则警告

8、-Wundef, 如果在#if宏中使用了未定义的变量做判断则警告

9、-Winline,函数不能被内联则警告

10、-Wmissing-declarations, 如果定义了全局函数,但却没有在任何头文件中声明则警告

11、-Wlong-long, 使用了 long long类型则警告

12、-Werror, 把所有的警告转变为错误

六、gcc的库依赖

1、函数库:头文件(.h)+库文件(.so,.a)

2、系统能够识别的默认路径:

(1)头文件:/usr/include

(2)库文件: /usr/lib

3、使用默认路径的文件需要在编译时指定路径

(1)头文件用 “-I”【大写的i】

(2)库文件用"-L",-l(小写的L)后的参数指明要寻找库"libkk.so"

例:gcc k.c -I  /home/include  -o k

       gcc k.c  -L   /home/lib   -lkk  -o k

七、gcc的优化选项

1、代码优化指的是编译器通过分析源代码,找出其中尚未达到最优的部分,然后对其重新进行组合,目的是改善程序的执行性能。

2、gcc代码优化采用“-On”选项

(1)-O,-O1,同时减小代码的长度和执行时间

(2)-O2,包括-O的功能,以及指令调整等调整工作

(3)-O3,包括-O2的功能,以及循环展开等工作

八、优化的实例

//optimize.c


#include<stdio.h>

int main()
{
        double counter;
        double result;
        double temp;
        for(counter = 0; counter < 4000.0*4000.0*4000.0/20.0 + 2030; counter += (5 -3 + 2 + 1)/4)
        {
                temp = counter/1239;
                result = counter;
        }

        printf("the result is %1f\n", result);
        return 0;
}

1、分别使用以下选项编译程序

(1)不优化,直接编译

gcc optimize.c
(2)优化,编译

gcc optimize.c  -o optimize
 

2、运行两个程序,比较运行时间

 

 可以看到,优化后的程序,运行时间确实是减少很多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WangLanguager

您的鼓励是对我最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值