① gcc的使用简介
GCC默认编译C程序啊!
要用gcc编译C++,可以通过-x选项来改变gcc的行为。比如:
gcc -x c++ main.cpp 是编译C++
gcc -x c main.cpp 是编译C
gcc -x java T.java 是编译java
。。。。。。
可以通过 man gcc 查阅更多选项的说明。
② 如何用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就可以看到程
序的输出结果了
③ gcc链接静态库时对待.a文件和.o文件的不同
gcc链接静态库时对待.a文件和.o文件的不同
为了提高效率,C语言允许将局部变量得值放在CPU中的寄存器中,这种变量叫“寄存器变量”,用关键字register作声明。
【例8.17】使用寄存器变量。
int fac(int n)
{register int i,f=1;
for(i=1;i<=n;i++)
f=f*i
return(f);
}
main()
{int i;
for(i=0;i<=5;i++)
printf("%d!=%d\n",i,fac(i));
}
说明:
1) 只有局部自动变量和形式参数可以作为寄存器变量;
2) 一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量;
3) 局部静态变量不能定义为寄存器变量。
8.9.5 用extern声明外部变量
外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。如果在定义点之前的函数想引用该外部变量,则应该在引用之前用关键字extern对该变量作“外部变量声明”。表示该变量是一个已经定义的外部变量。有了此声明,就可以从“声明”处起,合法地使用该外部变量。
【例8.18】用extern声明外部变量,扩展程序文件中的作用域。
④ C语言 gcc命令 MAC系统
大致上明白,你是想用终端,GCC编译器编译C源文件吧?
第一步:你用编辑器例如textwrangler编辑C源文件(不推荐用XCODE,因为目前来说没必要)
int main(int agrc, char* agrv[]) {
int i = 3;
printf("%d", i);
return 0;
}
编辑完成后,放在桌面上(我只是举个例子,你可以放在不同的文件目录下)
第二步:你打开终端,输入
cd /Users/你电脑用户名/Desktop/
你可以输入pwd确认下当前路径是否是桌面,ls可以显示当前路径的所有文件夹。
然后再输入 cc -c main.c 开始编译
在桌面上会生成一个main.o的二进制文件。
然后再输入 cc main.o 链接库
然后会生成一个a.out的最终文件,你可以输入./a.out运行。
满意请采纳,谢谢
⑤ 有关C和GCC 的
gcc是按照最新的c语言标准的,有一些地方跟平常我们学的C语言教程不同。
好像main 要用int类型返回,你的程序中main 要用 int ,结尾用 return 0 ;
gcc中调用 数学函数库 要加参数 -im。
⑥ 用gcc编译器C语言程序的技巧
方法/步骤
1、编写c代码,并输入以下代码,生成文件hello.c
[root@wahoo
test]#
vim
hello.c
#include
<stdio.h>
#define
DISPLAY
"hello
c!"
int
main(void)
{
printf("%s\n",
DISPLAY
);
return
0;
}
ZZ(说明:ZZ当前文件进行快速保存操作)
2、预编译(Preprocessing)
会对各种预处理指令(#include
#define
#ifdef
等#开始的代码行)进行处理,删除注释和多余的空白字符,生成一份新的代码
[root@wahoo
test]#gcc
-E
hello.c
-o
hello.i
E
参数
通知gcc对目标文件进行预编译,这里是对文件hello.c文件
o
参数
是对命令输出结果进行导入操作,这里是把
gcc
-E
hello.c
操作结果输出到文件hello.i(命名要自定义)中进行保存
这个命令执行完后我们目录下多了一个文件hello.i,你可以查阅一下文件的内容。
3、编译(Compilation)
对代码进行语法、语义分析和错误判断,生成汇编代码文件
[root@wahoo
test]#gcc
-S
hello.i
-o
hello.s
S
参数
通知gcc对目标文件进行编译,这里是对文件hello.i文件
通过这一步我们知道
C语言跟汇编的
关系,至于他们之前是如何进行转换的,大家可以进行更深入的学习与探讨。
此时目录下多了一个hello.s文件,内容如图
4、汇编(Assembly)
把汇编代码转换与计算机可认识的二进制文件,要知道计算机只认识0和1呢
[root@wahoo
test]#gcc
-c
hello.s
-o
hello.o
c
参数
通知gcc对目标文件执行指令转换操作
此步骤我们得到文件hello.o
大家也同样打开文件查看一下,这个文件里面几乎没几个字符大家能看懂,这就对了,但大家可以通过这种方法将其转化为我们可读的形式:
[root@wahoo
test]#readelf
-a
hello.o
5、链接(Linking/Build)
通俗的讲就是把多个*.o文件合并成一个可执行文件,二进制指令文件
[root@wahoo
test]#gcc
hello.o
-o
hello
这里我们就得到了一个可以直接在系统下执行的文件
hello
我们也可以对这个文件进行readelf操作,也可以进行二进制指令转汇编的操作
[root@wahoo
test]#objmp
-d
hello
6、程序运行
[root@wahoo
test]#./hello
hello
c!
7、总结:gcc
编译c程序的主要过程包括
预编译->编译->汇编->连接
四个过程,每个过程都分别进行不同的处理,了解了这其中的一些原理,对c编程的理解大有益处
⑦ linux 怎么编译c的源程序的gcc,编译命令是什么
编译方法:格式 gcc [option] [sourcefilename]常用的选项最简单的是:gcc hello.c默认的情况下将生成a.out的可执行性文件,
只需要在终端上输入./a.out就可以看到执行的结果,如果你想指定生成目标文件的名字那么你可以加上 -o选项,命令如下:gcc -o hello hello.c
命令:gcc -c hello hello.c
(7)c语言gcc使用a扩展阅读:
gcc命令的基本用法
gcc[options][filenames]
其中,filenames为文件名;options为编译选项。
当不使用任何编译选项编译hello.c时,gcc将会自动编译产生一个a.out的可执行文件:
[root@localhostc]#ls
hello.c
[root@localhostc]#gcchello.c
[root@localhostc]#ls
a.outhello.c
执行:
[root@localhostc]#./a.out
Hello,World!
使用-o编译选择,可以为编译后的文件指定一个名字:
[root@localhostc]#ls
a.outhello.c
[root@localhostc]#gcchello.c-ohello
[root@localhostc]#ls
a.outhellohello.c
执行:
[root@localhostc]#./hello
Hello,World!
注意:使用-o选项时,-o后面必须跟一个文件名,即:-o outfile。
为了便于描述后面的选项,删除hello和a.out可执行文件。
⑧ C语言 gcc
自己写个 strlwr 吧
char *strlwr(char *str)
{
char *p;
p = str;
while(*p)
{
if(*p>='A' && *p<='A')
{
*p += 32;
}
p++;
}
}
⑨ 为什么我用gcc编译的c语言程序,编译好后名称都是a.exe
加-o选项指定 output 的文件名
gcc -o xxx.exe xxx.c