当前位置:首页 » 编程软件 » linuxgcc编译c文件

linuxgcc编译c文件

发布时间: 2022-09-23 22:16:24

① 关于linux环境下ubuntu使用gcc编译C语音

ubuntu是Linux的一种,所以Linux的编译器gcc同样也适用于ubuntu。
要在ubuntu下编译gcc,可以按照如下步骤。

1,确认gcc是否安装。
Ubuntu的标准安装,会同步安装gcc编译器,如果没有安装,那么需要手动安装。
在shell下,打gcc --version,如果可以正确显示版本信息,表示已经安装,可以忽略第二步。

2,安装gcc。
在shell下,使用命令

sudo apt-get build-depgcc
即可智能下载安装gcc,前提为系统需要联网。

3, 执行编译。
执行c语言编译的最简命令为
gcc c_files -o target_name
其中c_files为所有需要编译的C文件列表,target_name为生成的可执行文件名。
执行后,如果有错误,那么需要根据错误进行修改源程序,直至没有错误为止,这时会生成一个与之前设定的target_name同名的可执行文件。通过
./target_name
可以运行该程序。

② 在linux中,怎么用gcc编译文件

在终端中输入 gcc 文件名 -o 目标文件名
然后 ./目标文件名 就行了,没有目标文件名,自动存为 a
执行 ./a 就行了。

在使用Gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数。
GCC最基本的用法是∶gcc [options] [filenames]
其中options就是编译器所需要的参数,filenames给出相关的文件名称。
-c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。
-o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。
-g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。
-O,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。
-O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。
-Idirname,将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。C程序中的头文件包含两种情况∶
A)#include <myinc.h>
B)#include “myinc.h”
其中,A类使用尖括号(< >),B类使用双引号(“ ”)。对于A类,预处理程序cpp在系统预设包含文件目录(如/usr/include)中搜寻相应的文件,而B类,预处理程序在目标文件的文件夹内搜索相应文件。

GCC执行过程示例

示例代码 a.c:
#include <stdio.h>
int main()
{
printf("hello\n");
}
预编译过程:
这个过程处理宏定义和include,并做语法检查。
可以看到预编译后,代码从5行扩展到了910行。
gcc -E a.c -o a.i
cat a.c | wc -l
5
cat a.i | wc -l
910
编译过程:
这个阶段,生成汇编代码。
gcc -S a.i -o a.s
cat a.s | wc -l
59
汇编过程:
这个阶段,生成目标代码。
此过程生成ELF格式的目标代码。
gcc -c a.s -o a.o
file a.o
a.o: ELF 64-bit LSB relocatable, AMD x86-64, version 1 (SYSV), not stripped
链接过程:
链接过程。生成可执行代码。链接分为两种,一种是静态链接,另外一种是动态链接。使用静态链接的好处是,依赖的动态链接库较少,对动态链接库的版本不会很敏感,具有较好的兼容性;缺点是生成的程序比较大。使用动态链接的好处是,生成的程序比较小,占用较少的内存。
gcc a.o -o a
程序运行:
./a
hello
编辑本段
GCC编译简单例子

编写如下代码:
#include <stdio.h>
int main()
{
printf("hello,world!\n");
}
执行情况如下:
gcc -E hello.c -o hello.i
gcc -S hello.i -o hello.s
gcc -c hello.s -o hello.o
gcc hello.c -o hello
./hello
hello,world!

③ 如何在linux系统中用gcc编译并且运行c程序

1、gcc
t
文件名.c
-o
文件名
2、直接运行
o
后面的文件名即可
gcc(选项)(参数)
选项:
-o:指定生成的输出文件;
-E:仅执行编译预处理;
-S:将C代码转换为汇编代码;
-wall:显示警告信息;
-c:仅执行编译操作,不进行连接操作。
示例:
->gcc
test.c
-o
test
->test

④ linux终端下如何进行C语言编译

1、首先在linux下判断是否安装gcc编译器,直接执行:gcc -v,判断是否安装gcc。

⑤ Linux能直接编译C语言吗

是可以的。你可以先分别用gcc
-c生成.o,再用gcc
-o
编译就可以了。如gcc
-c
a.c
gcc
-c
b.c
,gcc
-o
my
a.o
b.o,my就是生成的可执行文件名,最好还是写makefile

⑥ 如何用GCC在linux下编译C语言程序

在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器,假设我们有下面一个非常简单的源程序(hello.c):


int main(int argc,char **argv)


{


printf("Hello Linux ");


}


要编译这个程序,我们只要在命令行下执行:


gcc -o hello hello.c


gcc 编译器就会为我们生成一个hello的可执行文件.执行./hello就可以看到程
序的输出结果了

⑦ 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 ");

}

(7)linuxgcc编译c文件扩展阅读:

在使用GCC编译器的时候,我们必须给出一系列必要的调用参数和文件名称。GCC编译器的调用参数大约有100多个,这里只介绍其中最基本、最常用的参数。具体可参考GCC Manual。

GCC最基本的用法是∶gcc [options] [filenames]

其中options就是编译器所需要的参数,filenames给出相关的文件名称。

网络_gcc

⑧ linux系统中用gcc编译并且运行c程序

【希望对你有帮助】

建议你看看编程的一些基础知识


- 经典hello word 程序

#include <stdio.h>

int mian()

{

printf("hello world! ");

return 0;

}


- 编译

-进入终端

-进入源文件所在的目录

$ gcc hello.c -o hello


- 运行

$ ./hello

    ⑨ linux中如何编译c文件

    用gcc编译器编译c文件,先下载安装一个gcc编译器(如果已有则忽略),然后在命令框输入
    gcc (文件名).c -o (可执行文件名).o

    ⑩ linux下c语言gcc编译的时候如果不知道.c文件怎么链接的

    有以下步骤:

    1.源程序的编译
    在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 下面
    我们以一个实例来说明如何使用gcc编译器.
    假设我们有下面一个非常简单的源程序(hello.c):
    int main(int argc,char **argv)
    {
    printf("Hello Linux\n");
    }
    要编译这个程序,我们只要在命令行下执行:
    gcc -o hello hello.c
    gcc 编译器就会为我们生成一个hello的可执行文件.执行./hello就可以看到程
    序的输出结果了.命令行中 gcc表示我们是用gcc来编译我们的源程序,-o 选项表示
    我们要求编译器给我们输出的可执行文件名为hello 而hello.c是我们的源程序文件.
    gcc编译器有许多选项,一般来说我们只要知道其中的几个就够了. -o选项我们
    已经知道了,表示我们要求输出的可执行文件名. -c选项表示我们只要求编译器输出
    目标代码,而不必要输出可执行文件. -g选项表示我们要求编译器在编译的时候提
    供我们以后对程序进行调试的信息.
    知道了这三个选项,我们就可以编译我们自己所写的简单的源程序了,如果你
    想要知道更多的选项,可以查看gcc的帮助文档,那里有着许多对其它选项的详细说
    明.
    2.Makefile的编写
    假设我们有下面这样的一个程序,源代码如下:

    #include "mytool1.h"
    #include "mytool2.h"
    int main(int argc,char **argv)
    {
    mytool1_print("hello");
    mytool2_print("hello");
    }

    #ifndef _MYTOOL_1_H
    #define _MYTOOL_1_H
    void mytool1_print(char *print_str);
    #endif

    #include "mytool1.h"
    void mytool1_print(char *print_str)
    {
    printf("This is mytool1 print %s\n",print_str);
    }

    #ifndef _MYTOOL_2_H
    #define _MYTOOL_2_H
    void mytool2_print(char *print_str);
    #endif

    #include "mytool2.h"
    void mytool2_print(char *print_str)
    {
    printf("This is mytool2 print %s\n",print_str);
    }
    当然由于这个程序是很短的我们可以这样来编译
    gcc -c main.c
    gcc -c mytool1.c
    gcc -c mytool2.c
    gcc -o main main.o mytool1.o mytool2.o
    这样的话我们也可以产生main程序,而且也不时很麻烦.但是如果我们考虑一
    下如果有一天我们修改了其中的一个文件(比如说mytool1.c)那么我们难道还要重
    新输入上面的命令?也许你会说,这个很容易解决啊,我写一个SHELL脚本,让她帮我
    去完成不就可以了.是的对于这个程序来说,是可以起到作用的.但是当我们把事情
    想的更复杂一点,如果我们的程序有几百个源程序的时候,难道也要编译器重新一
    个一个的去编译?
    为此,聪明的程序员们想出了一个很好的工具来做这件事情,这就是make.我们
    只要执行以下make,就可以把上面的问题解决掉.在我们执行make之前,我们要先
    编写一个非常重要的文件.--Makefile.对于上面的那个程序来说,可能的一个
    Makefile的文件是:
    # 这是上面那个程序的Makefile文件
    main:main.o mytool1.o mytool2.o
    gcc -o main main.o mytool1.o mytool2.o
    main.o:main.c mytool1.h mytool2.h
    gcc -c main.c
    mytool1.o:mytool1.c mytool1.h
    gcc -c mytool1.c
    mytool2.o:mytool2.c mytool2.h
    gcc -c mytool2.c
    有了这个Makefile文件,不过我们什么时候修改了源程序当中的什么文件,我们
    只要执行make命令,我们的编译器都只会去编译和我们修改的文件有关的文件,其
    它的文件她连理都不想去理的.
    下面我们学习Makefile是如何编写的.
    在Makefile中也#开始的行都是注释行.Makefile中最重要的是描述文件的依赖
    关系的说明.一般的格式是:
    target: components
    TAB rule
    第一行表示的是依赖关系.第二行是规则.
    比如说我们上面的那个Makefile文件的第二行
    main:main.o mytool1.o mytool2.o
    表示我们的目标(target)main的依赖对象(components)是main.o mytool1.o
    mytool2.o 当倚赖的对象在目标修改后修改的话,就要去执行规则一行所指定的命
    令.就象我们的上面那个Makefile第三行所说的一样要执行 gcc -o main main.o
    mytool1.o mytool2.o 注意规则一行中的TAB表示那里是一个TAB键
    Makefile有三个非常有用的变量.分别是$@,$^,$<代表的意义分别是:
    $@--目标文件,$^--所有的依赖文件,$<--第一个依赖文件.
    如果我们使用上面三个变量,那么我们可以简化我们的Makefile文件为:
    # 这是简化后的Makefile
    main:main.o mytool1.o mytool2.o
    gcc -o $@ $^
    main.o:main.c mytool1.h mytool2.h
    gcc -c $<
    mytool1.o:mytool1.c mytool1.h
    gcc -c $<
    mytool2.o:mytool2.c mytool2.h
    gcc -c $<
    经过简化后我们的Makefile是简单了一点,不过人们有时候还想简单一点.这里
    我们学习一个Makefile的缺省规则

    热点内容
    超级访问陈小春应采儿 发布:2025-05-16 09:43:29 浏览:477
    缓存视频合并工具最新版 发布:2025-05-16 09:35:03 浏览:194
    花雨庭服务器ip地址和端口 发布:2025-05-16 09:34:58 浏览:239
    同时修改多台服务器管理地址工具 发布:2025-05-16 09:20:36 浏览:421
    什么配置就能玩地平线 发布:2025-05-16 09:13:46 浏览:82
    python旋转图片 发布:2025-05-16 09:13:40 浏览:638
    少女前线防检测脚本 发布:2025-05-16 08:59:07 浏览:728
    编译器对系统的依赖 发布:2025-05-16 08:37:29 浏览:711
    javamap数组 发布:2025-05-16 08:37:28 浏览:451
    移动光猫如何自行修改密码 发布:2025-05-16 08:20:15 浏览:125