gcc编译器和编程软件 gcc编译器和c 编译器
发布日期:2020-10-19摘要:在linux下安装GCC编译器,只要敲入命令就行啦?需不需要另外下软件 Ubunutu最容易了,apt-get install gcc就好red hat下载gcc的rpm包安装也容易:rpm -i...
在linux下安装GCC编译器,只要敲入命令就行啦?需不需要另外下软件...
Ubunutu最容易了,apt-get install gcc就好red hat下载gcc的rpm包安装也容易:rpm -ivh gcc-4.1.2-50.el5.i386.rpm不过有依赖关系,如果安装不起检查下依赖包装好了没有rpm -ivh kernel-headers-2.6.18-238.el5.i386.rpm rpm -ivh glibc-headers-2.5-58.i386.rpmrpm -ivh glibc-devel-2.5-58.i386.rpm
linux gcc 编译器怎么和visual c++ 不一样呀? 主要是库函数的问题?
主要是两者编译环境和支持组件有不同。
1、GCC(GNU Compiler Collection,GNU编译器套件),是由 GNU 开发的编程语言编译器。
它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分。
目前主要是应用于Unix下编译环境。
支持C++,如Fortran、Pascal、Objective-C、Java、Ada、Go等语言。
2、Visual C++ 是由MS公司开发的C++编译器,其中包含C和c++的编译器,依赖于win系统,需要win环境支持,不能在unix下运行。
linux下c语言编程
实在点,给你些命令操作操作,不过好象有点多,哈哈 Linux/Unix常用命令1、目录操作 和DOS相似,UNIX采用树型目录管理结构,由根目录(/)开始一层层将子目录建下去,各子目录以 / 隔开。
用户login后,工作目录的位置称为 home directory,由系统管理员设定。
‘~’符号代表自己的home directory,例如 ~/myfile 是指自己home目录下myfile这个文件。
(1)显示目录文件 ls 执行格式: ls [-atFlgR] [name] (name可为文件或目录名称) 例: ls 显示出当前目录下的文件 ls -a 显示出包含隐藏文件的所有文件 ls -t 按照文件最后修改时间显示文件 ls -F 显示出当前目录下的文件及其类型 ls -l 显示目录下所有文件的许可权、拥有者、文件大小、修改时间及名称 ls -lg 同上 ls -R 显示出该目录及其子目录下的文件 注:ls与其它命令搭配使用可以生出很多技巧(最简单的如"ls -l | more"),更多用法请输入ls --help查看,其它命令的更多用法请输入 命令名 --help 查看.(2)建新目录 mkdir 执行格式: mkdir directory-name 例: mkdir dir1 (新建一名为dir1的目录) (3)删除目录 rmdir 执行格式: rmdir directory-name 或 rm directory-name 例:rmdir dir1 删除目录dir1,但它必须是空目录,否则无法删除 rm -r dir1 删除目录dir1及其下所有文件及子目录 rm -rf dir1 不管是否空目录,统统删除,而且不给出提示,使用时要小心 (4) 改变工作目录位置 cd 执行格式: cd [name] 例: cd 改变目录位置至用户login时的working directory cd dir1 改变目录位置,至dir1目录 cd ~user 改变目录位置,至用户的working directory cd .. 改变目录位置,至当前目录的上层目录 cd ../user 改变目录位置,至上一级目录下的user目录 cd /dir-name1/dir-name2 改变目录位置,至绝对路径(Full path) cd - 回到进入当前目录前的上一个目录 (5)显示当前所在目录pwd 执行格式: pwd (6)查看目录大小du 执行格式: du [-s] directory 例: du dir1 显示目录dir1及其子目录容量(以kb为单位) du -s dir1 显示目录dir1的总容量 (7)显示环境变量 echo $HOME 显示家目录 echo $PATH 显示可执行文件搜索路径 env 显示所有环境变量(可能很多,最好用"env | more","env | grep PATH"等) (8)修改环境变量,在bash下用export,如: export PATH=$PATH:/usr/local/bin 想知道export的具体用法,可以用shell的help命令:help export2、文件操作 (1)查看文件(可以是二进制的)内容 cat 执行格式:cat filename或more filename 或cat filename|more 例: cat file1 以连续显示方式,查看文件file1的内容 more file1 或 cat file1|more 以分页方式查看文件的内容 (2)删除文件 rm 执行格式: rm filename 例: rm file? rm f* (3)复制文件 cp 执行格式: cp [-r] source destination 例: cp file1 file2 将file1复制成file2 cp file1 dir1 将file1复制到目录dir1 cp /tmp/file1 将file1复制到当前目录 cp /tmp/file1 file2 将file1 复制到当前目录名为file2 cp -r dir1 dir2 (recursive copy)复制整个目录。
(4)移动或更改文件、目录名称mv 执行格式: mv source destination 例: mv file1 file2 将文件file1,更名为file2 mv file1 dir1 将文件file1,移到目录dir1下 mv dir1 dir2 (5)比较文件(可以是二进制的)或目录的内容 diff 执行格式: diff [-r] name1 name2 (name1、name2同为文件或目录) 例: diff file1 file2 比较file1与file2的不同处 diff -r dir1 dir2 比较dir1与dir2的不同处 (6)文件中字符串的查找 grep 执行格式: grep string file 例: grep abc file1 查找并列出串abc所在的整行文字 (7)文件或命令的路径寻找 执行格式一:whereis command 显示命令的路径 执行格式二:which command 显示路径及使用者所定义的别名 执行格式三:whatis command 显示命令的功能摘要 (8)建立文件或目录的链接 ln 例: ln source target1 建立source文件(已存在)的硬链接,命名为target1 ln -s source target2 建立source文件的符号链接,命名为target2 文件编辑器vi vi是在UNIX 上被广泛使用的中英文编辑软件。
vi是visual editor的缩写,是UNIX提供给用户的一个窗口化编辑环境。
进入vi,直接执行vi编辑程序即可。
例:$vi test.c 显示器出现vi的编辑窗口,同时vi会将文件复制一份至缓冲区(buffer)。
vi先对缓冲区的文件进行编辑,保留在磁盘中的文件则不变。
编辑完成后,使用者可决定是否要取代原来旧有的文件。
1、vi的工作模式 vi提供二种工作模式:输入模式(insert mode)和命令模式(command mode)。
使用者进入vi后,即处在命令模式下,此刻键入的任何字符皆被视为命令,可进行删除、修改、存盘等操作。
要输入信息,应转换到输入模式。
(1)命令模式 在输入模式下,按ESC可切换到命令模式。
命令模式下,可选用下列指令离开vi::q! 离开vi,并放弃刚在缓冲区内编辑的内容 :wq 将缓冲区内的资料写入磁盘中,并离开vi :ZZ 同wq :x 同wq :w 将缓冲区内的资料写入磁盘中,但并不离开vi :q 离开vi,若文件被修改过,则要被要求确认是否放弃修改的内容,此指令可与:w配合使用 (2)命令模式下光标的移动 H 左移一个字符 J 下移一个字符 K 上移一个字符 L 右移一个字符 0 移至该行的首 $ 移至...
怎样用gcc编译程序代码
C语言程序设计,谭浩强的也可以。
C语言,白皮书当然更好。
C++推荐C++ Primer Plus,Java我不喜欢,就不推荐了。
工具方面推荐VIM的官方手册,GCC中文文档,GDB中文文档,GNU开源软件开发指导(电子书),汇编语言程序设计(让你对库,链接,内嵌汇编,编译器优化选项有初步了解,不必深度)。
...
如何用GCC在linux下编译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的缺省规则 .c.o: gcc -c $< 这个规则表示所有的 .o文件都是依赖与相应的.c文件的.例如mytool.o依赖于 mytool.c这样Makefile还可以变为: # 这是再一次简化后的Makefile main:main.o mytool1.o mytool2.o gcc -o $@ $^ .c.o: gcc -c $< 好了,我们的Makefile 也差不多了,如果想知道更多的关于Makefile规则可以查 看相应的文档. 3.程序库的链接 试着编译下面这个程序 #include int main(int argc,char **argv) { double value; printf("Value:%f\n",value); } 这个程序相...
linux C语言编程gcc和qt学哪个好?
gcc是一个编译器,qt是一个界面编程工具,两者是不能比的。
linux下编译c程序必然要用到gcc编译器,而qt则是用来开发界面程序的,类似windows下微软的mfc,你要在linux下写程序,必然的要会使用gcc对你的程序进行编译,至于qt只是个基于C++的界面程序开发工具,觉得以后用到就学一下,用不到就算了。
我在和你说一遍,gcc只是一个编译器。
你的意思是linux下的c/c++集成开发环境吧,anjuta,eclipse等等都可以,但他们只是提供了开发环境,编译器还是用的gcc。
如何用GCC在linux下编译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的缺省规则 .c.o: gcc -c $ 这个规则表示所有的 .o文件都是依赖与相应的.c文件的.例如mytool.o依赖于 mytool.c这样Makefile还可以变为: # 这是再一次简化后的Makefile main:main.o mytool1.o mytool2.o gcc -o $@ $^ .c.o: gcc -c $ 好了,我们的Makefile 也差不多了,如果想知道更多的关于Makefile规则可以查 看相应的文档. 3.程序库的链接 试着编译下面这个程序 #include int main(int argc,char **argv) { double value; printf("Value:%f\n",value); } 这个程序相当简单,但是当我们用 gcc -o temp temp.c 编译时会出现下面所示 的错误. /tmp/cc33Kydu.o: ...
Linux 下如何装 C 编译器
如果说你只是学习语法知识,理解C/C++编程精要的话,个人感觉VC太大了,GCC比较适合,而且对标准的支持也好。
在Linux下GCC是不二的选择。
下面说说Windows下。
原来我选择的是devcpp,安装后只有58M左右,用起来基本合适,Debugging也不错。
现在我选用devcpp里面自带的gcc做编译器后端,用Code:Block做前端,调试起来更加人性化(当然Code:Blocks也支持VC编译器做后端)。
最后,很多人学习C都是从Turbo C 2.0开始的,到3.1它也开始支持C++了,也可以选用下的。
只有在对比中选择适合自己的,才是好的。
Best Wishes!
-
给我们打电话
7*24小时服务热线:1399999999
全国客服热线:400-0000-000 -
百度地图
福建省三明市 -
给我们发邮件
E-mail:[email protected]
在线沟通