C语言 gcc

GNU编译套件(GNU Compiler Collection),GPL许可发行的自由软件.大多数Unix操作系统采纳为标准编译器,同时也适用于Win

gcc -E 得.i 调用cpp
预处理(头文件展开,宏替换)

gcc -S 得.s 调用gcc本身
汇编语言

gcc -c 得到.o 调用as
编译成二进制文件

gcc -o得到.o 调用ld(链接libc)
这一步是链接

gcc后用file查看

gcc参数描述
-I编译时所包含的文件路径(其实改c文件中include的路径也行)
-L包含库的路径
-l指定库名,比如xx.soxx.a
-o指定生成的文件名
-D相当于defn,指定宏编译
-ggdb模式,可以调试
-lstdc++编译c++代码,一般使用g++
Wall显示更多的警告
-O优化等级(1,2,3),就是内联函数
-E头文件展开,宏替换
-S编译成汇编

编译C

例子:
假设有以下的文件

|-- fn
|   `-- add.c
|-- h
|   `-- head.h
`-- test.c

test.c文件内容

#include "head.h"
#define DEBUG 0 //为了下面写宏的展示
int main(void)
{
        int a =1, b = 2;
        int c;//使用-Wall参数会警告该参数没有初始化
#ifdef DEBUG  //如果定义了DEBUG则会执行以下的
        printf("hello C\n");
#endif
        printf("%d\n",add(a,b));
        return 0;
}

add.c 内容

int add(int a,int b){
        return a+b;
}

head.h内容


#include <stdio.h>
extern int add(int a,int b);

使用以下命令进行编译

claroja@claroja:~/gcc$ gcc test.c ./fn/add.c -I ./h -Wall -o test
test.c: In function ‘main’:
test.c:6:6: warning: unused variable ‘c’ [-Wunused-variable]
  int c;

1.test.c和fn目录下add.c一起编译(因为test.c调用了add.c,注意add.c要加路径)
2.-I参数指明了头文件的路径

编译C++

#include <iostream>
using namespace std;
int main(){
        cout << "Hello C++" << endl;
        return 0;
}

g++ test.cpp -o testcpp

对于C语言编译gcc,在Windows系统中,如果出现不是内部或外部命令的错误提示,通常是因为系统没有找到gcc的可执行文件。解决这个问题的方法可以参考以下步骤: 1. 首先,确认你已经安装了gcc编译器。你可以通过下载mingw来安装gcc,可以从官网(http://www.mingw.org/)或者sourceforge网站(https://sourceforge.net/projects/mingw/)下载,根据你的系统选择合适的安装包进行安装。 2. 安装完成后,需要将gcc的可执行文件所在的路径添加到系统的环境变量中。具体操作可以参考以下步骤: a. 打开Windows系统的“控制面板”,点击“系统和安全”。 b. 在系统和安全窗口中,点击“系统”,然后选择“高级系统设置”。 c. 在高级系统设置窗口中,点击“环境变量”按钮。 d. 在环境变量窗口中,找到“系统变量”下的“Path”变量,点击“编辑”按钮。 e. 在编辑环境变量窗口中,点击“新建”按钮,然后输入gcc的可执行文件所在的路径,例如:"C:\MinGW\bin"。 f. 确认并保存你所做的更改。 3. 完成以上步骤后,重新打开命令行窗口,输入gcc命令,如果不再提示不是内部或外部命令的错误信息,那么gcc编译器就可以正常使用了。 希望这些步骤可以帮助你解决问题。如果还有其他疑问,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值