㈠ c编译器cc1与gcc
起初的gcc就是个脚本,用变种Pascal。没错,gcc就是个套子。cc1在/usr/lib/gcc下,不在$PATH变量里
㈡ C语言编译器有哪些各有什么特点
C语言编译器目前主要有VC++、dev-C++、C-Free、win-TC、TC 2.0等等。
其中比较经典的VC++,微软的产品,编译器,链接器,运行,调试等功能于一体的强大开发工具,特点是功能十分强大,对于新手来说需要一段时间去摸索。
dev-C++是windows下一款开发c/c++的开发环境,使用gcc为编译器,遵循标准,功能比较强大,语法高量,可以进行单步调试(这对排除错误很重要),进行断点设置等功能,遵循C标准,是一款很强大的开发工具。
C-Free是一款支持多种编译器的专业化C/C++集成开发环境(IDE)。利用C-Free,使用者可以轻松地编辑、编译、连接、运行、调试C/C++程序。
TC 2.0:Borland公司的产品,在dos界面下编译运行,小巧、灵活,但是不能使用鼠标。
win-TC:在tc2.0的基础上加上了界面,能够使用鼠标,具有语法高量,可以嵌入汇编等特点,对新手一些,拜托了不能用鼠标的困难。
编译器,简单讲,就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器(Linker) → 可执行程序 (executables)。
㈢ centos6.5 汇编器cc1 :bash:cc1 command not found
bash:cc1 command not found
找不到cc1,没有cc1这个命令
链接器的话我知道ld
或者你是不是在找cc gcc 之类的东西
gcc可以链接目标文件
㈣ arm-linux-gcc 编译时出现错误 arm-none-linux-gnueabi-gcc:error trying to exec 'cc1' 怎么解决
arm-none-linux-gnueabi-gcc,编译器未找到,先把编译器装上(就是解压),然后添加路径
vi ~/.bash_profile
在PATH下一行添加路径
export PATH=$PATH:/(编译器所在路径)/bin/arm-none-linux-gnueabi-
㈤ 编译器在编译阶段,究竟做哪些事情
1. 预处理首先源代码文件(.c/.cpp)和相关头文件(.h/.hpp)被预处理器cpp预编译成.i文件(C++为.ii)。预处理命令为:gcc –E hello.c –o hello.i预编译过程主要处理那些源代码中以#开始的预编译指令,主要处理规则如下:u 将所有的#define删除,并且展开所有的宏定义;u 处理所有条件编译指令,如#if,#ifdef等;u 处理#include预编译指令,将被包含的文件插入到该预编译指令的位置。该过程递归进行,及被包含的文件可能还包含其他文件。u 删除所有的注释//和 /**/;u 添加行号和文件标识,如#2 “hello.c” 2,以便于编译时编译器产生调试用的行号信息及用于编译时产生编译错误或警告时能够显示行号信息;u 保留所有的#pragma编译器指令,因为编译器须要使用它们。2. 编译编译过程就是把预处理完的文件进行一系列词法分析,语法分析,语义分析及优化后生成相应的汇编代码文件(.s)。编译的命令为:gcc –S hello.i –o hello.s或者从源文件直接输出汇编代码文件:gcc –S hello.c –o hello.s现在版本的GCC把预编译和编译两个步骤合并成一个步骤,由程序cc1来完成(C++为cc1plus)。3. 汇编汇编就是将汇编代码转变成机器可以执行的命令,生成目标文件(.o),汇编器as根据汇编指令和机器指令的对照表一一翻译即可完成。汇编的命令为:gcc –c hello.s –o hello.o或者从源文件直接输出目标文件:gcc –c hello.c –o hello.o4. 链接链接就是链接器ld将各个目标文件组装在一起,解决符号依赖,库依赖关系,并生成可执行文件。链接的命令为:ld –static crt1.o crti.o crtbeginT.o hello.o –start-group –lgcc –lgcc_eh –lc-end-group crtend.o crtn.o一般我们使用一条命令就可以完成上述4个步骤:gcc hello.c实际上gcc只是一些其它程序的包装,它会根据不同参数去调用预编译编译程序cc1、汇编器as、链接器ld。
㈥ 已编写好一个C语言源程序(名为file.c),要在计算机上运行,应该经历哪些步骤
预处理:一般根据程序中定义的宏,把它们替换为所代替的值。
编译(compile):生成汇编代码 ——file.S
汇编(assembly):将汇编程序由汇编器(assembler)生成目标代码(或机器代码)——file.o
链接(link):把目标代码链接为可执行文件——file.exe (GUN C Compiler一般生成a.out)
㈦ 交叉编译几种常见的报错
(1)交叉编译器
在主机上用来编译其它类型机器上可执行代码的编译器就叫交叉编译器,我们进行嵌入式linux的开发主机大部分都是X86,而我们的嵌入式系统的处理器有可能是ARM/MIPS等非X86处理器,这时候就必须使用ARM/MIPS的交叉编译器才能编译出在这些处理器上能够执行的代码。这里我们使用的是ARM最新的EABI编译器。
交叉编译器在编译的时候,对于浮点运行会预设硬浮点运算FPA(float point architecture),而没有FPA的CPU,比如三星的2440等,会使用FPE(float point emulation即软浮点),这样在速度上就会受到极大限制。使用EABI(embeded application binary interface)则可以对此改善处理。
(2)不修改MAKEFILE来建立编译环境
将arm-2008q3.tar.bz2拷贝到ubuntu系统的某个目录,解压后。使用VI编辑/etc/bash.bashrc,在文件最后加入环境变量设置(注:加bin的含义是交叉编译器工具目录):
保存后,用source运行一次该文件,就可以了。
(3)gcc: error trying to exec 'cc1': execvp: No such file or directory 的解决
今天在编译开发板环境时,明明设置好编译器的环境变量了,编译时就是会出现:gcc: error trying to exec 'cc1': execvp: No such file or directory 错误提示。后来发现一个方法可以解决,输入:whereis gcc,就可以了发现好几个gcc,包括/usr/bin/gcc,所以我就把PATH路径设过去,就OK了。
(4)Clock skew detected. Your build may be incomplete
如果你装了Windows Linux双系统,系统时间很可能出问题,从而造成文件修改时间比系统时间晚,两种办法:
1,应该是你的PC的系统时钟错误,在BIOS中修改正确。
2,使用touch命令将所有文件的时间戳修改为你系统的当前时间。解决方法:find ./-name "*" -exec touch {} \;
㈧ 编译时cc1plus.exe错误怎么解决
1、一般这个问题都是在win7和vista下面用VC6的问题,尝试下面几种方法,如果不行,就重新找一个VC版本吧2、具体步凑:一: “CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目 录 /VC98/Bin”
㈨ cc1: error: PLCC.c: No such file or directory 编译失败! 那里地问题
这个错误信息就是说你当前所编译的源文件所在的目录下没有PLCC.c这个文件。
㈩ c语言编译器哪个好
1.
GCC
大名鼎鼎的GNU的C/C++/Obj-C编译器,
当前版本是2.8.1,
但据说与2.7.*有兼容性
问题.
而使用较广的是gcc
2.7.2系列,
如RedHat5中带的就是gcc
2.7.2.3
有时候在Cyrix上用gcc会有些问题,
因此有一套针对Cyrix特点的gcc
2.7.2.3
我这里有RedHat5的rpms
ftp://166.111.68.98/pub/Warez-CD/Huricane-contrib
(Cyrix
2.7.2.3
&
2.8.1)
其基本结构就是一个front
end和back
end,
/usr/bin/gcc
就是个front
end,
其kernel东西都放在
/usr/lib/gcc-lib下面,
cpp是C预处理器,
cc1*的1M多的就是编译器的核心模块了
cc1
C
compiler
cc1plus
C++
compiler
cc1obj
Object-C
compiler
但gcc并没有集成Fortran的compiler,
一般要用f2c转成C后才用gcc编译
好象也还有个g77
Fortran
compiler吧?
gcc的不断发展完善使许多commercial
compiler都相形见绌,
那当然,
gcc/emacs
都由GNU创始人Richard
Stallman手创,
是GNU的旗舰产品,
质量当然没得说了:-)
由于
Unix平台的高度可移植性,
gcc几乎在各种常见的Unix平台上都有,
即使是
Win32/DOS也有gcc的port.
比如说该死的Solaris普通版本连compiler都没有,
也
就只好用gcc了...
2.
EGCS(Experimental/Enhanced
GNU
Compiler
System)
这是gcc的发展方向,
把fortran等编译器集成进来,
也许还会有Pascal?
它的构造很清晰,
把对gcc的各种改进/port都集成回去.
如gcc
2.7系列据说是
没有对Pentium进行优化的,
而egcs则把pgcc对Pentium的一些优化集成进去了
现在gcc的开发工作主要就是egcs,
由Cygnus公司领导(?),
这Cygnus公司还是很
不错的,
还出了GNU-Win32,
SourceNavigator等,
是GNU的坚实拥护者:-))
http://egcs.cygnus.com
包括了C/C++/Obj-C/Fortran
编译器,
当前最新版本1.0.2,
还在不断开发中
昨天download发现KDE
Beta4都用egcs编译了
:-)
Fortran集成进来后在/usr/lib/gcc-lib下又多了个f771的back
end,
当然
还是g77/f77
编译
我这里有egcs
1.0.2
的rpm
在RH5-CD/collect下面
3.
PGCC(Pentium
GCC)
http://www.gcc.ml.org
针对Pentium
CPU进行了编译器优化的compiler
pgcc据说用JPEG压缩解压缩测试最快可比gcc快
30%!
新版的pgcc都是基于egcs的,
以一个patch的形式release