当前位置:文档之家› gcc安装教程

gcc安装教程

gcc安装教程
gcc安装教程

详解Linux安装GCC方法

下载:https://www.doczj.com/doc/7d4522185.html,/gnu/gcc/gcc-4.5.1/gcc-4.5.1.tar.bz2

浏览:https://www.doczj.com/doc/7d4522185.html,/gnu/gcc/gcc-4.5.1/

查看Changes:https://www.doczj.com/doc/7d4522185.html,/gcc-4.5/changes.htm

现在很多程序员都应用GCC,怎样才能更好的应用GCC。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。本文以在Redhat Linux安装GCC4.1.2为例(因在项目开发过程中要求使用,没有用最新的GCC 版本),介绍Linux安装GCC过程。

安装之前,系统中必须要有cc或者gcc等编译器,并且是可用的,或者用环境变量CC指定系统上的编译器。如果系统上没有编译器,不能安装源代码形式的GCC 4.1.2。如果是这种情况,可以在网上找一个与你系统相适应的如RPM等二进制形式的GCC软件包来安装使用。本文介绍的是以源代码形式提供的GCC软件包的安装过程,软件包本身和其安装过程同样适用于其它Linux和Unix系统。

系统上原来的GCC编译器可能是把gcc等命令文件、库文件、头文件等分别存放到系统中的不同目录下的。与此不同,现在GCC建议我们将一个版本的GCC安装在一个单独的目录下。这样做的好处是将来不需要它的时候可以方便地删除整个目录即可(因为GCC没有uninstall功能);缺点是在安装完成后要做一些设置工作才能使编译器工作正常。在本文中采用这个方案安装GCC 4.1.2,并且在安装完成后,仍然能够使用原来低版本的GCC编译器,即一个系统上可以同时存在并使用多个版本的GCC编译器。

按照本文提供的步骤和设置选项,即使以前没有安装过GCC,也可以在系统上安装上一个可工作的新版本的GCC编译器。

1 下载

在GCC网站上(https://www.doczj.com/doc/7d4522185.html,)或者通过网上搜索可以查找到下载资源。目前GCC的最新版本为4.2.1。可供下载的文件一般有两种形式:gcc-4.1.2.tar.gz和gcc-4.1.2.tar.bz2,只是压缩格式不一样,内容完全一致,下载其中一种即可。

2. 解压缩

拷贝gcc-4.1.2.tar.bz2(我下载的压缩文件)到/usr/local/src(根据自己喜好选择)下,根据压缩

格式,选择下面相应的一种方式解包(以下的“%”表示命令行提示符):

% tar zxvf gcc-4.1.2.tar.gz

或者

% bzcat gcc-4.1.2.tar.bz2 | tar xvf -

新生成的gcc-4.1.2这个目录被称为源目录,用${srcdir}表示它。以后在出现${srcdir}的地方,应该用真实的路径来替换它。用pwd命令可以查看当前路径。

在${srcdir}/INSTALL目录下有详细的GCC安装说明,可用浏览器打开index.html阅读。3. 建立目标目录

目标目录(用${objdir}表示)是用来存放编译结果的地方。GCC建议编译后的文件不要放在源目录${srcdir]中(虽然这样做也可以),最好单独存放在另外一个目录中,而且不能是${srcdir}的子目录。

例如,可以这样建立一个叫/usr/local/gcc-4.1.2的目标目录:

% mkdir /usr/local/gcc-4.1.2

% cd gcc-4.1.2

以下的操作主要是在目标目录${objdir} 下进行。(否则会出错,后面有解释)

4. 配置

配置的目的是决定将GCC编译器安装到什么地方(${destdir}),支持什么语言以及指定其它一些选项等。其中,${destdir}不能与${objdir}或${srcdir}目录相同。

配置是通过执行${srcdir}下的configure来完成的。其命令格式为(记得用你的真实路径替换${destdir}):

% ${srcdir}/configure --prefix=${destdir} [其它选项]

例如,如果想将GCC 4.1.2安装到/usr/local/gcc-4.1.2目录下,则${destdir}就表示这个路径。

在我的机器上,我是这样配置的:

% ../gcc-4.1.2/configure --prefix=/usr/local/gcc-4.1.2 --enable-threads=posix

--disable-checking --enable--long-long --host=i386-redhat-linux--with-system-zlib

--enable-languages=c,c++,java

将GCC安装在/usr/local/gcc-4.1.2目录下,支持C/C++和JAVA语言,其它选项参见GCC 提供的帮助说明。

5. 编译

% make

6. 安装

执行下面的命令将编译好的库文件等拷贝到${destdir}目录中(根据你设定的路径,可能需要管理员的权限):

% make install

至此,GCC 4.1.2安装过程就完成了。

7. 其它设置

GCC 4.1.2的所有文件,包括命令文件(如gcc、g++)、库文件等都在${destdir}目录下分别存放,如命令文件放在bin目录下、库文件在lib下、头文件在include下等。由于命令文件和库文件所在的目录还没有包含在相应的搜索路径内,所以必须要作适当的设置之后编译器才能顺利地找到并使用它们。

7.1 gcc、g++、gcj的设置

要想使用GCC 4.1.2的gcc等命令,简单的方法就是把它的路径${destdir}/bin放在环境变量PATH中。我不用这种方式,而是用符号连接的方式实现,这样做的好处是我仍然可以使用系统上原来的旧版本的GCC编译器。

首先,查看原来的gcc所在的路径:

% which gcc

在我的系统上,上述命令显示:/usr/bin/gcc。因此,原来的gcc命令在/usr/bin目录下。我们可以把GCC 4.1.2中的gcc、g++、gcj等命令在/usr/bin目录下分别做一个符号连接:% cd /usr/bin

% ln -s ${destdir}/bin/gcc gcc412

% ln -s ${destdir}/bin/g++ g++412

% ln -s ${destdir}/bin/gcj gcj412

这样,就可以分别使用gcc412、g++412、gcj412来调用GCC 4.1.2的gcc、g++、gcj完成对C、C++、JAVA程序的编译了。同时,仍然能够使用旧版本的GCC编译器中的gcc、g++等命令。

(cool,我感觉棒极了!!1)

7.2 库路径的设置

将${destdir}/lib路径添加到环境变量LD_LIBRARY_PATH中,例如,如果GCC 4.1.2安装在/usr/local/gcc-4.1.2目录下,在RH Linux下可以直接在命令行上执行

% export LD_LIBRARY_PATH=/usr/local/gcc-4.1.2/lib

最好添加到系统的配置文件中,这样就不必要每次都设置这个环境变量了,在文件$HOME/.bash_profile中添加下面两句:

LD_LIBRARY_PATH=/usr/local/gcc-4.1.2/lib:$LD_LIBRARY_PATH

export LD_LIBRARY_PATH

重启系统设置生效,或者执行命令

% source $HOME/.bash_profile

用新的编译命令(gcc412、g++412等)编译你以前的C、C++程序,检验新安装的GCC编译器是否能正常工作。

完成了Linux安装GCC,之后你就能轻松地编辑了。

from:https://www.doczj.com/doc/7d4522185.html,/art/200912/168804.htm

在RHLinux下安装gcc-4.0.1方法比较简单,但是安装过程中有些环节是需要注意的,否则,可能会导致安装不成功,或者安装报错。具体安装过程如下:

首先,下载并解压缩gcc的RPM包至源目录(如/opt/gcc-4.0.1)

1、解压缩RPM包:

[root@linuxopt]# tar xjvf gcc-4.0.1.tar.bz2 (解压后生成源目录/opt/gcc-4.0.1)

2、创建安装目标目录:

[root@linux opt]# mkdir /usr/local/gcc-4.0.1/

3、进入安装目标目录:

[root@linux opt]# cd /usr/local/gcc-4.0.1/ (这一步很重要,配置安装文件时,需要在目标目录下执行configure命令)

[root@linux opt]# pwd

/usr/local/gcc-4.0.1

4、配置安装文件:

[root@linux gcc-4.0.1]# /opt/gcc-4.0.1/configure --prefix=/usr/local/gcc-4.0.1/ (这一步非常重要,需要在安装的目标目录下,执行源目录/opt/gcc-4.0.1/中的configure命令,配置将gcc安装到目标目录/usr/local/gcc-4.0.1/)

creating cache ./config.cache

checking host system type... i686-pc-linux-gnu

5、编译安装文件:

[root@linux gcc-4.0.1]# pwd

/usr/local/gcc-4.0.1

[root@linux gcc-4.0.1]# make (在目标目录下执行编译)

6、安装gcc:

[root@linux gcc-4.0.1]# pwd

/usr/local/gcc-4.0.1

[root@linux gcc-4.0.1]# make install (在目标目录下执行安装)

如果安装过程中步骤和命令没有错误,你肯定能安装成功。

---------------------------------------------------------------------

首先,现在最新的包GCC 4.2.bz2,一般的到处都有的下,linux下的下载速度很满,20多k,很恶心,我喜欢迅雷的下载速度,在windows下下载,大概42M,下载速度2到4M,回到linux下,挂载,ntfs格式的我的,具体不说了,说安装!

进入到挂载的目录下,先cp GCC4.2.bz2 /azuo,

cd /azuo,

tar -xvf GCC 4.2.bz2 ,

得到gcc-4.2,

cd gcc-4.2,在/usr目录下建立一个文件夹就是现在要存放新的gcc的目录,

mkdir /usr/gcc4

./configure –prefix=/usr/gcc4

回车,就会有配置信息,只要不报错就可以了,

make,这个过程很久,因为我没有设置一些具体的选项,因此,所有的组件几乎都要编译一遍,我的电脑cpu:AMD 3200+X2 ,1.5g内存,大概花费一个半小时。

到这个时候为止,/usr/gcc4下还没有任何东西,编译过程都是发生在源文件夹,让我们再来一个动作,所有的要用到的东西都会配置到目标文件夹下,

make install;

这个过程也不短,等着就是了。

一切都已经弄好了之后就是使用最新的gcc了,可以看到,在/usr/gcc4/bin下有gcc,

g++,等一些东西,都是可以用的,写两个程序:aa.c:

1 #include

2

3 int main(void) {

4 printf("ad");

5 return 1;

6 }

gcc -o aa aa.c

执行 ./aa

上面的这个是c的,下面这个就是c++的了:

a.cpp:

1 #include

2 using namespace std;

3 int main(void) {

4 cout << "Ok!" << endl;

5 return 1;

6 }

g++ -o a a.cpp

执行就是了./a

一切ok了,就可以让最新的gcc工具取代原来的工具了。看看原来的gcc是什么版本的,我们好卸载它:

[root@BTazuo bin]# rpm -qa gcc

gcc-4.1.2-27.fc7

[root@BTazuo bin]# rpm -e gcc-4.1.2-27.fc7

error: Failed dependencies:

gcc is needed by (installed) systemtap-0.5.13-1.fc7.i386

gcc = 4.1.2-27.fc7 is needed by (installed) gcc-c++-4.1.2-27.fc7.i386

gcc = 4.1.2-27.fc7 is needed by (installed) gcc-gfortran- 4.1.2 -27.fc7. i386 [root@BTazuo bin]# rpm -e gcc-c++-4.1.2-27.fc7.i386

[root@BTazuo bin]# rpm -e gcc-gfortran-4.1.2-27.fc7.i386

[root@BTazuo bin]# rpm -e gcc-4.1.2-27.fc7

error: Failed dependencies:

gcc is needed by (installed) systemtap-0.5.13-1.fc7.i386

[root@BTazuo bin]# g++

bash: g++: command not found

卸载成功

[root@BTazuo bin]# gcc

gcc: 没有输入文件,可见gcc犹在

[root@BTazuo bin]# rpm -e systemtap-0.5.13-1.fc7.i386

[root@BTazuo bin]# gcc

gcc: 没有输入文件

[root@BTazuo bin]# rpm -e gcc-4.1.2-27.fc7

[root@BTazuo bin]# gcc

bash: /usr/lib/ccache/gcc: 没有那个文件或目录

最后的卸载成功!

这个时候,要注意了,我的gcc在/usr/bin下面有,在/usr/lib/ccache这个目录下也有,分别在这两个下面都要建立一个链接:

[root@BTazuo bin]# ln -s /usr/gcc4/bin/g++ g++

[root@BTazuo bin]# g++

g++: 没有输入文件

可见g++已经装好了,可以使用了。

然后是gcc:

[root@BTazuo bin]# ln -s /usr/gcc4/bin/gcc gcc

[root@BTazuo bin]# gcc

bash: /usr/lib/ccache/gcc: 没有那个文件或目录

[root@BTazuo bin]# ./gcc

gcc: 没有输入文件

可见还要给另外一个目录建立一个gcc的链接:

[root@BTazuo lib]# ln -s /usr/gcc4/bin/gcc /usr/lib/ccache/gcc

[root@BTazuo lib]# gcc

gcc: 没有输入文件

到此为止,gcc和g++都已经建立好了,可以用了,最后把原来的包和解压文件都可以删除了,以节省硬盘空间!

-------------------------------------------------------------------------------------------------------

下面介绍其在Red Hat Linux 9.0编译器给gcc 3.2.2环境下的安装方法。

一.确定安装环境

本安装方法适用于Red Hat Linux 9.0操作系统,自带的GCC编译器是GCC 3.2.2版本。其他系列的linux操作系统或是其他版本GCC下安装过程可能有些细节上的不同。

注:因为不同版本的GCC编译器下一些库的定义可能有不同,因此首先要确定一下本机的GCC编译器版本。确定方法是进入命令行输入命令gcc –v得到的结果如图1.1所示:

图1.1

可见本机的GCC版本为GCC 3.2.2,根据simplescalar网站上的一些介绍,该模拟器的开发工具可能是GCC2.7左右,比较接近GCC 3.2.2,因此估计安装过程会比较顺利。二.获得安装包

完成本安装过程的安装包可以在

https://www.doczj.com/doc/7d4522185.html,

下下载,本安装所需要的安装包共有以下三个

三建立安装目录,解压安装包

建立安装目录为/root/simplescalar,将安装包复制到安装目录,整个过程如下:

解压缩,命令为tar –zxvf,加压缩完毕后用rm*.tgz命令删除压缩包,整个过程输入命令如下:

tar –zxvf simplesim-3v0d.tgz

tar –zxvf simpletools-2v0.tgz

tar –zxvf simpleutils-2v0.tgz

rm*.tgz

加压缩后得到如下七个文件夹:

四.安装binutils2.5.2

首先用configure命令配置程序的安装环境和参数,生成Makefile文件,整个过程如下:

注:configure命令的参数含义说明

-host:配置安装环境

-target:配置成littleEndian模式

-with-gnu-as 加载汇编器

-with-gnu-ld 加载链接器

-prefix 设置安装目录

此时遇到两个错误,如下所示:

从错误说明可以估计出错误来自于libiberty文件夹下的dummy.c文件。网上一些帖子说是dummy.c中定义的宏functions.def文件中的函数定义与声明不一致引起的,将它们改成一致就可以通过编译。但是这样做的话,继续编译依然会遇到许多错误。这里我试出了最好的方法就是将dummy.c文件中的内容全部删除(即将dummy.c变成空文件)然后再make一次,这回不报任何错误,编译一次通过!

运行make install命令,这时binutils-2.5.2安装成功!

五.安装simplescalar

Simplescalar是最简单的一个安装过程,运行下列命令即可完成安装!

六.安装gcc-2.6.3

安装好simplescalar后在安装文件夹/root/simplescalar下可以找到一个名为bin的文件夹,里面包含的是一些simplescalar自带的工具,如链接工具等,该文件内容如下:

可见,里面没有C编译工具gcc,因此还需要安装gcc2.6.3作为simplescalar的内置编译工具,下面介绍安装方法。

首先对安装环境进行配置,生成Makefile文件,具体方法如下图所示。

Makefile文件生成完毕后,运行make命令,此时出现以下错误:

由错误报告可知,这是由于sys_errlist的定义不一致造成的,打开cccp.c文件发现其194行附近有如下代码,第194行为extern char *sys_errlist[]。显然要消除冲突,只需改变宏编译的分支方向,使其不走这一分支即可。尝试在这段代码前面如175行加上#define bsd4_4,修改后再次make,该错误改正,遇到下一个错误。

第二个错误是sdbout.c文件中的一些常量没有定义,如下:

因此第一估计是头文件的问题,打开sdbout.c发现其包含的头文件有如下几个:

可以肯定报错的原因是宏编译的分支的问题(走不同的宏编译分支,可能包含syms.h或者是gsyms.h)。经过多次尝试,发现在前面加上#undef USG即可解决该错误(即把gsyms.h包含进去)。

继续make,发生第三个错误,如下:

这个错误和第一个错误一样,是由于sys_errlist定义冲突引起的,因此进入gcc.c文件,在172行之前(这里加在167行)加上#define bsd4_4即可。

继续make,发生第四个错误,如下:

和前面一样,只要在g++.c文件的第90行代码段之前(这里加在85行)加上#define bsd4_4即可。

继续make,发生第五个错误,如下:

这里提示是将cp/g++.c文件中第213行的sys_errlist改成strerror或者strerror_r,然

而改过之后会报strerror未定义的错误,上网搜了很久也没发现有这两个定义的头文件名,最后根据函数名感觉这段代码(pfatal_with_name)的功能可能是获得错误名,将其删除估计对工作影响不大,因此干脆将这个函数放空,放空后再运行make,果然OK,不报任何错误,编译通过!

运行make install,gcc 2.6.3安装成功!

返回simplescalar,进入bin文件夹,可以发现里面多了一个sslittle-na-sstrix-gcc文件,该文件是simplescalar的内建C编译器,如下所示:

进一步运行./sslittle-na-sstrix-gcc –v测试出该内建编译器版本为gcc 2.6.3。

到此为止,整个安装过程结束,下面进行测试。

七.测试

为了测试simplescalar是否能够顺利运行,我们对其进行测试,测试程序依然采用最经典的hello world!程序,程序如下:

#include

main()

{

gcc编译器使用简明指南

gcc编译器使用简明指南 gcc对文件的处理需要经过预处理->编译->汇编->链接的步骤,从而产生一个可执行文件,各部分对应不同的文件类型,具体如下: file.c c程序源文件 file.i c程序预处理后文件 file.cxx c++程序源文件,也可以是https://www.doczj.com/doc/7d4522185.html, / file.cpp / file.c++ file.ii c++程序预处理后文件 file.h c/c++头文件 file.s 汇编程序文件 file.o 目标代码文件 gcc [选项]文件列表 -ansi 强制完全ANSI一致 -c 仅编译或汇编,生成目标代码文件,将.c、.i、.s等文件生成.o文件,其余文件被忽略 -S 仅编译,不进行汇编和链接,将.c、.i等文件生成.s文件,其余文件被忽略 -E 仅预处理,并发送预处理后的.i文件到标准输出,其余文件被忽略 -o file 创建可执行文件并保存在file中,而不是默认文件a.out -g 产生用于调试和排错的扩展符号表,用于GDB调试,切记-g和-O通常不能一起使用 -w 取消所有警告 -W 给出更详细的警告 -O [num]优化,可以指定0-3作为优化级别,级别0表示没有优化 -x language 默认为-x none,即依靠后缀名确定文件类型,加上-x lan确定后面所有文件类型,直到下一个-x出现为止 -D macro[=]类似于源程序里的#define,在-D macro中的macro可被源程序识别,例如gcc -D NUM -D FILE=\"bbs.txt\" hello.c -o hello,第一个-D选项定义宏NUM,在程序中可以使用#ifdef来检查是否被设置,第二个-D定义宏FILE,在源程序中可用 -U macro 类似于源程序开头定义#undef macro,也就是取消源程序中的某个宏定义

gcc编译器的下载和安装教程_华清远见

gcc编译器的下载和安装教程 今天分享的教程是gcc编译器的下载和安装教程,大家可以跟着教程一起来实现他! Linux下变成的源码要运行,必须先转成二进制的机器码。此时就需要编译器,Linux系统下的Gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。 Gcc编译器能将C、C++语言源程序通过编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。 比如,下面这段源码(文件名叫做test.c)。 #include int main(void) { printf("Hello, world!\n"); return 0; } 编译则使用gcc命令,gcc命令提供了非常多的命令选项。 一. 常用编译命令选项 假设源程序文件名为test.c。 1. 无选项编译链接 用法:#gcc test.c 作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out,如果需要执行,内核中必须支持该文件的格式,默认一般都是elf可执行程序 2. 选项 -o 用法:#gcc test.c -o test 作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。 3. 选项 -E

用法:#gcc -E test.c -o test.i 作用:将test.c预处理输出test.i文件,预处理其实就是处理#预处理符号,比如#include, #define, #if, #ifdef, #error等 4. 选项 -S 用法:#gcc -S test.i 作用:将预处理输出文件test.i汇编成test.s文件。汇编语言对应汇编指令,默认gcc编译成x86指令,如果需要编译arm架构的,就必须使用交叉工具链 5. 选项 -c 用法:#gcc -c test.s 作用:将汇编输出文件test.s编译输出test.o文件,二进制文件就是101010机器码 6. 无选项链接 用法:#gcc test.o -o test 作用:将编译输出文件test.o链接成最终可执行文件test。 如果需要修改Ubuntu的gcc版本,可以看一下你的Ubuntu安装了哪些版本的gcc 用命令:ls /usr/bin/gcc* -l 显示是 lrwxrwxrwx 1 root root 7 2017-08-14 15:17 /usr/bin/gcc -> gcc-4.6 -rwxr-xr-x 1 root root 302104 2017-09-17 05:43 /usr/bin/gcc-4.6 由上面显示可以看出默认安装的是gcc-4.6,现在来改成gcc-4.7 $ sudo apt-get install gcc-4.7 $ sudo apt-get install g++-4.7 删除gcc-4.6的软连接文件/usr/bin/gcc。(只是删除软连接) 命令:sudo rm /usr/bin/gcc 然后建一个软连接,指向gcc-4.7。 命令:sudo ln -s /usr/bin/gcc-4.7 /usr/bin/gcc 然后可以通过命令:gcc -v 查看版本

Object-C 经典入门教程

Object-C 入门教程 分类:Sip&asterisk2009-05-04 16:34 16409人阅读评论(2) 收藏举报大纲 o开始吧下载这篇教学 o设定环境 o前言 o编译 hello world o创建 Classes@interface o@implementation o把它们凑在一起 o详细说明...多重参数 o建构子(Constructors) o访问权限 o Class level access o异常情况(Exceptions)处理 o继承、多型(Inheritance, Polymorphism)以及其他面向对象功 能id 型别 o继承(Inheritance) o动态识别(Dynamic types) o Categories o Posing o Protocols o内存管理Retain and Release(保留与释放) o Dealloc o Autorelease Pool o Foundation Framework ClassesNSArray o NSDictionary ?优点与缺点 ?更多信息 开始吧 下载这篇教学 ?所有这篇初学者指南的原始码都可以由objc.tar.gz下 载。这篇教学中的许多范例都是由 Steve Kochan 在 Programming in Objective-C. 一书中撰写。如果你想得到更 多详细信息及范例,请直接参考该书。这个网站上登载的所有 范例皆经过他的允许,所以请勿复制转载。 设定环境 ?Linux/FreeBSD: 安装GNUStep为了编译 GNUstep

应用程序,必须先执行位于 /usr/GNUstep/System/Makefiles/GNUstep.sh 的 GNUstep.sh 这个档案。这个路径取决于你的系统环境, 有些是在 /usr, some /usr/lib,有些是/usr/local。 如果你的 shell 是以 csh/tcsh 为基础的 shell,则应 该改用 GNUStep.csh。建议把这个指令放在 .bashrc 或 .cshrc 中。 ?Mac OS X: 安装XCode ?Windows NT 5.X: 安装cygwin或mingw,然后安装 GNUStep 前言 ?这篇教学假设你已经有一些基本的 C 语言知识,包括 C 数 据型别、什么是函式、什么是回传值、关于指针的知识以及基 本的 C 语言内存管理。如果您没有这些背景知识,我非常建议 你读一读 K&R 的书:The C Programming Language(译注:台 湾出版书名为 C 程序语言第二版)这是 C 语言的设计者所写 的书。 ?Objective-C,是 C 的衍生语言,继承了所有 C 语言的特 性。是有一些例外,但是它们不是继承于 C 的语言特性本身。 ?nil:在 C/C++ 你或许曾使用过 NULL,而在 Objective-C 中则是 nil。不同之处是你可以传递讯息给 nil(例如 [nil message];),这是完全合法的,然而你却不能对 NULL 如法炮 制。 ?BOOL:C 没有正式的布尔型别,而在 Objective-C 中也不 是「真的」有。它是包含在 Foundation classes(基本类别库) 中(即 import NSObject.h;nil 也是包括在这个头文件内)。 BOOL 在 Objective-C 中有两种型态:YES 或 NO,而不是 TRUE 或 FALSE。 ?#import vs #include:就如同你在 hello world 范例中看 到的,我们使用了#import。#import 由 gcc 编译程序支援。 我并不建议使用 #include,#import基本上跟 .h 档头尾的 #ifndef #define #endif 相同。许多程序员们都同意,使用这 些东西这是十分愚蠢的。无论如何,使用 #import 就对了。这 样不但可以避免麻烦,而且万一有一天 gcc 把它拿掉了,将会 有足够的 Objective-C 程序员可以坚持保留它或是将它放回 来。偷偷告诉你,Apple 在它们官方的程序代码中也使用了 #import。所以万一有一天这种事真的发生,不难预料 Apple 将 会提供一个支持 #import 的 gcc 分支版本。 ?在 Objective-C 中, method 及 message 这两个字是可以 互换的。不过messages 拥有特别的特性,一个 message 可以 动态的转送给另一个对象。在Objective-C 中,呼叫对象上的 一个讯息并不一定表示对象真的会实作这个讯息,而是对象知 道如何以某种方式去实作它,或是转送给知道如何实作的对象。

linux下安装gcc、g++开发环境

一、ubuntu下gcc/g++/gfortran的安装 1.安装 (1).gcc ubuntu下自带gcc编译器。可以通过“gcc -v”命令来查看是否安装。 (2).g++ 安装g++编译器,可以通过命令“sudo apt-get install build-essential”实现。 执行完后,就完成了gcc,g++,make的安装。build-essential是一整套工具,gcc,libc等等。通过“g++ -v”可以查看g++是否安装成功。 注:“sudo apt-get install build-essential --fix-missing”,这个命令是修补安装build-essential,即已安装了部分build-essential,但没有安装完全,此时可以使用该命令继续安装 build-essential。 (3).gfortran 输入命令:sudo apt-get install gfortran 通过命令“gfortran -v”,可以查看gfortran是否安装成功。 2.通过apt-get install安装软件后,软件的安装目录 1.通过apt-get install 命令安装了一些软件,但这些软件的源码以及那些安装完以后的文件放在哪个文件夹下面? 可以通过以下两种方式查看: (1).在terminal中输入命令:dpkg -L 软件名 eg:dpkg -L gcc dpkg -L gcc-4.4 dpkg -L g++

dpkg -L g++-4.4 (2).在新立得中搜索到你已经安装的软件包,选中点属性(或右键),点属性对话框中的“已安装的文件”即可看到。 二.CentOS下gcc/g++/gfortran的安装 1.安装 再ubuntu下直接apt-get install gcc g++就可以了。按照类似的逻辑,再CentOS下yum install gcc g++ 报告无法找到g++包。查了一下,原来这个包的名字叫做gcc-c++。完整的应该是yum installgcc gcc-c++ (1)gcc 命令:yum install gcc (2)g++/gfortran 命令:yum install gcc-c++ 执行完该命令后,g++/gfortran都被安装上了。

非root权限安装gcc

非root权限安装gcc详细教程 安装依赖库: GCC依赖于gmp 4.2+, mpfr 2.4+和mpc 0.8+,这里先下载安装这几个。 安装gmp 4.3.2: 下载最新版本:https://https://www.doczj.com/doc/7d4522185.html,/download/gmp/ 解压:tar jxvf gmp-4.3.2.tar.bz2 进入目录:cd gmp-4.3.2 配置:./configure --prefix=$HOME/gmp-4.3.2/ 编译:make 安装:make install MFPR3.1.4: mpfr依赖于gmp。 下载:http://mpfr.loria.fr/mpfr-current/ 解压:tar xvf mpfr-3.1.4.tar.bz2 进入目录:cd mpfr-3.1.4 配置:./configure --prefix=$HOME/mpfr-3.1.4 --with-gmp=$HOME/gmp-4.3.2/ 编译:make 安装:make install MPC1.0.3:

mpc依赖于gmp和mpfr。 下载:ftp://https://www.doczj.com/doc/7d4522185.html,/gnu/mpc/ 解压:tar xvf mpc-1.0.3.tar.gz 进入目录:cd mpc-1.0.3 配置:./configure --prefix=$HOME/mpc-1.0.3 --with-mpfr=$HOME/mpfr-3.1.4 --with-gmp=$HOME/gmp-4.3.2 编译:make 安装:make install 在这里我们在配置的时候将安装目录统一指定为$HOME,将程序执行文件,库文件及头文件全部安装在自己的目录下,呵呵,因为没有root。 另外,要及时地更新环境变量的配置,即~/.bashrc,将文件的lib位置写进去。 在安装的过程中,还会有缺少m4、automake、autoconf的情况,这时还要先安装这几个。安装过程与这三个类似,就不详细说了。这些补完,才能顺利来到gcc-5.2.0的安装步骤。 安装gcc-5.2.0: 下载:wget ftp://https://www.doczj.com/doc/7d4522185.html,/gnu/gcc/gcc-5.2.0/gcc-5.2.0.tar.bz2 解压:tar xvf gcc-5.2.0.tar.bz2 进入目录:cd gcc-5.2.0 先unset若干个系统变量,以免出现某些宏找不到的情况。 unset CPLUS_INCLUDE_PATH LIBRARY_PATH 接下来,配置GCC:

GCC内联汇编入门

GCC内联汇编入门 分类:linux编程2008-12-21 15:48 507人阅读评论(0) 收藏举报 目录(?)[-] 1. 前言 1. 版权与许可证 2. 回馈与更正 3. 感谢 2. 简介 3. GCC汇编语法 4. 基本内联汇编 5. 扩展内联汇编 1. 汇编程序模板 2. 操作数 3. Clobber列表 4. Volatile 6. 更多关于约束条件 1. 常用的约束 2. 约束修饰符 7. 一些有用的诀窍 8. 结束语 9. 参考 原文为GCC-Inline-Assembly-HOWTO,在google上可以找到原文,欢迎指出翻译错误。 中文版说明 由于译者水平有限,故译文出错之处,还请见谅。C语言的关键字不译,一些单词或词组(如colbber等)由于恐怕译后词不达意,故并不翻译,由下面的单词表代为解释,敬请见谅。 英文原文中的单词和词组: operand:操作数,可以是寄存器,内存,立即数。 volatile:易挥发的,是C语言的关键字。 constraint:约束。 register:本文指CPU寄存器。 asm:“asm”和“__asm__”在C语言中是关键字。原文中经常出现这个单词,是指嵌入到C语言(或者其它语言)的汇编程序片断。 basic inline assembly:指C语言中内联汇编程序的一种形式,和extended asm对 应。基本格式如下:

asm("assembly code"); extended assembly:和basic inline assembly对应,比它多了一些特性,如可以指明输入,输出等。基本格式如下: asm ( assembler template : output operands : input operands : list of clobbered registers ); clobber list:实际上就是被使用的寄存器的列表,用来告诉GCC它们已经被asm 使用了,不要在asm程序外使用它们。不然可能带来不可预见的后 果。 clobbered registers:它和clobber list对应。 assembler template:就是汇编模板,所有内联汇编代码都有按一定的格式。 见extended assembly的说明 作者:Sandeep.S 译者:吴遥 版本号 v0.1 2003年3月01日 翻译版更新日期 2008/06/11 这篇HOWTO解释GCC提供的内联汇编特性的用途和用法。学习这篇文章只须具备两个前提条件,显然那就是对x86汇编语言和C语言有基本的了解。 目录 1.前言 1.1版权与许可证 1.2回馈与更正 1.3感谢 2.简介 3.GCC汇编语法 4.基本内联汇编 5.扩展内联汇编 5.1汇编程序模板 5.2操作数 5.3 Clobber列表 5.4 Volatile … ? 6.更多关于约束条件

Linux上安装GCC编译器过程

Linux上安装GCC编译器过程 20日最新版本的GCC编译器3.4.0发布了。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。GCC 3.4.0比以前版本更好地支持了C++标准。本文以在Redhat Linux上安装GCC3.4.0为例,介绍了GCC的安装过程。 安装之前,系统中必须要有cc或者gcc等编译器,并且是可用的,或者用环境变量CC指定系统上的编译器。如果系统上没有编译器,不能安装源代码形式的GCC 3.4.0。如果是这种情况,可以在网上找一个与你系统相适应的如RPM等二进制形式的GCC软件包来安装使用。本文介绍的是以源代码形式提供的GCC软件包的安装过程,软件包本身和其安装过程同样适用于其它Linux和Unix系统。 系统上原来的GCC编译器可能是把gcc等命令文件、库文件、头文件等分别存放到系统中的不同目录下的。与此不同,现在GCC建议我们将一个版本的GCC安装在一个单独的目录下。这样做的好处是将来不需要它的时候可以方便地删除整个目录即可(因为GCC没有uninstall功能);缺点是在安装完成后要做一些设置工作才能使编译器工作正常。在本文中我采用这个方案安装GCC 3.4.0,并且在安装完成后,仍然能够使用原来低版本的GCC编译器,即一个系统上可以同时存在并使用多个版本的GCC编译器。 按照本文提供的步骤和设置选项,即使以前没有安装过GCC,也可以在系统上安装上一个可工作的新版本的GCC编译器。 1. 下载 在GCC网站上(https://www.doczj.com/doc/7d4522185.html,/)或者通过网上搜索可以查找到下载资源。目前GCC的最新版本为 3.4.0。可供下载的文件一般有两种形式:gcc-3.4.0.tar.gz和gcc-3.4.0.tar.bz2,只是压缩格式不一样,内容完全一致,下载其中一种即可。 2. 解压缩 根据压缩格式,选择下面相应的一种方式解包(以下的“%”表示命令行提示符): % tar xzvf gcc-3.4.0.tar.gz 或者 % bzcat gcc-3.4.0.tar.bz2 | tar xvf - 新生成的gcc-3.4.0这个目录被称为源目录,用${srcdir}表示它。以后在出现${srcdir}的地方,应该用真实的路径来替换它。用pwd命令可以查看当前路径。 在${srcdir}/INSTALL目录下有详细的GCC安装说明,可用浏览器打开index.html阅读。 3. 建立目标目录 目标目录(用${objdir}表示)是用来存放编译结果的地方。GCC建议编译后的文件不要放在源目录${srcdir]中(虽然这样做也可以),最好单独存放在另外一个目录中,而且不能是${srcdir}的子目录。 例如,可以这样建立一个叫gcc-build 的目标目录(与源目录${srcdir}是同级目录): % mkdir gcc-build % cd gcc-build 以下的操作主要是在目标目录${objdir} 下进行。 4. 配置 配置的目的是决定将GCC编译器安装到什么地方(${destdir}),支持什么语言以及指定其它一些选项等。其中,${destdir}不能与${objdir}或${srcdir}目录相同。 配置是通过执行${srcdir}下的configure来完成的。其命令格式为(记得用你的真实路径替换${destdir}): % ${srcdir}/configure --prefix=${destdir} [其它选项] 例如,如果想将GCC 3.4.0安装到/usr/local/gcc-3.4.0目录下,则${destdir}就表示这个路径。 在我的机器上,我是这样配置的: % ../gcc-3.4.0/configure --prefix=/usr/local/gcc-3.4.0 --enable-threads=posix

GCC安装

RedHat5.5 升级安装GCC-4.6.1详细教程 一、什么是Gcc Linux系统下的Gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。 Gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。 二、gcc所遵循的部分约定规则 前面提到便宜的后缀问题,而gcc则通过后缀来区别输入文件的类别,下面我们来介绍gcc 所遵循的部分约定规则。 .c为后缀的文件,C语言源代码文件; .a为后缀的文件,是由目标文件构成的档案库文件; .C或.cc或.cxx为后缀的文件,是C++源代码文件; .h为后缀的文件,是程序所包含的头文件; .i为后缀的文件,是已经预处理过的C源代码文件; .ii为后缀的文件,是已经预处理过的C++源代码文件; .m为后缀的文件,是Objective-C源代码文件; .o为后缀的文件,是编译后的目标文件; .s为后缀的文件,是汇编语言源代码文件; .S为后缀的文件,是经过预编译的汇编语言源代码文件。 三、Gcc的执行过程

虽然我们称Gcc是C语言的编译器,但使用gcc由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤∶预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。 ●命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。 ●接着调用cc1进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,.S为后缀的汇编语言源代码文件和汇编、.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。 ●当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。 四、Gcc的基本用法和选项 在使用Gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称。Gcc编译器的调用参数大约有100多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数 Gcc最基本的用法是∶gcc[options] [filenames] ,其中options就是编译器所需要的参数,filenames给出相关的文件名称。 五、Gcc的参数选项 -c,只编译,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件。 -o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。 -g,产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,我们就必须加入这个选项。

CentOS安装gcc

一、CentOS5.2系统安装在虚拟机上,编译gcc. 挂载CentOS的DVD系统光盘,然后进入CentOS目录内,安装顺序如下: rpm -ivh cpp-4.1.2-42.el5.i386.rpm rpm -ihv kernel-headers-2.6.18-92.el5.i386.rpm rpm -ivh glibc-headers-2.5-24.i386.rpm rpm -ivh glibc-devel-2.5-24.i386.rpm rpm -ivh libgomp-4.1.2-42.el5.i386.rpm rpm -ivh gcc-4.1.2-42.el5.i386.rpm 二、下载安装Toolchains。 1. 打开虚拟机进入CentOS, 在root 下进行以下操作,目的是下载一些移植必备的Linux软件开发包。 sudo yum install git-core make gcc ncurses-devel bison byacc flex gawk gettext ccache zlib-devel gtk2-devel lzo-devel 三、在CentOS上安装Git Git是Linux Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。Git跟Subversion是不同类型的版本控制系统。Git是分布式的,而Subversion是中心式的。在CentOS上安装Git非常方便,可以安装EPEL,这是一个由Fedora 社区打造,由为RHEL 及衍生发行版提供高质量软件的项目,里面有软件还是比较丰富的,默认的没有git。我的CentOS版本是5.2,执行下面命令安装该库: sudo rpm -Uvh https://www.doczj.com/doc/7d4522185.html,/pub/epel/5/i386/epel-release-5-3.noarch.rpm 如果是CentOS 4的话,可以试着执行: rpm -Uvh https://www.doczj.com/doc/7d4522185.html,/pub/epel/4/i386/epel-release-4-9.noarch.rpm 然后就是,sudo yum install git了。 四、然后检查CentOS默认的shell是否为“bash” ls -l /bin/sh 若显示/bin/sh—>bash则正确。 若不是,使用root登陆,命令: sudo rm /bin/sh sudo ln -s bash /bin/sh

linux系统下C编译器GCC入门

linux系统下C编译器— gcc 入门 <一>gcc简介 Linux系统下的gcc(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。gcc编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为 a.out的文件。在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。而gcc则通过后缀来区别输入文件的类别,下面我们来介绍gcc所遵循的部分约定规则。 .c为后缀的文件,C语言源代码文件; .a为后缀的文件,是由目标文件构成的档案库文件; .C,.cc或.cxx 为后缀的文件,是C++源代码文件; .h为后缀的文件,是程序所包含的头文件; .i 为后缀的文件,是已经预处理过的C源代码文件; .ii为后缀的文件,是已经预处理过的C++源代码文件; .m为后缀的文件,是Objective-C源代码文件; .o为后缀的文件,是编译后的目标文件; .s为后缀的文件,是汇编语言源代码文件; .S为后缀的文件,是经过预编译的汇编语言源代码文件。 <二>gcc的执行过程 虽然我们称gcc是C语言的编译器,但使用gcc由C语言源代码文件生成可执行文件的过程不仅仅是编译的过程,而是要经历四个相互关联的步骤∶预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编(Assembly)和连接(Linking)。命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。接着调用cc1进行编译,这个阶段根据输入文件生成以.o为后缀的目标文件。汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,. S为后缀的汇编语言源代码文件和汇编,.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。 <三>gcc的基本用法和选项 在使用gcc编译器的时候,我们必须给出一系列必要的调用参数和文件名称。g cc编译器的调用参数大约有100多个,其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常用的参数。

GCC安装

一个系统中有两个GCC 安装之前,系统中必须要有cc或者gcc等编译器,并且是可用的,或者用环境变量CC指定系统上的编译器。如果系统上没有编译器,不能安装源代码形式的GCC 3.4.0。如果是这种情况,可以在网上找一个与你系统相适应的如RPM等二进制形式的GCC软件包来安装使用。本文介绍的是以源代码形式提供的GCC 软件包的安装过程,软件包本身和其安装过程同样适用于其它Linux和Unix系统。 系统上原来的GCC编译器可能是把gcc等命令文件、库文件、头文件等分别存放到系统中的不同目录下的。与此不同,现在GCC建议我们将一个版本的GCC安装在一个单独的目录下。这样做的好处是将来不需要它的时候可以方便地删除整个目录即可(因为GCC没有uninstall功能);缺点是在安装完成后要做一些设置工作才能使编译器工作正常。在本文中我采用这个方案安装GCC 3.4.0,并且在安装完成后,仍然能够使用原来低版本的GCC编译器,即一个系统上可以同时存在并使用多个版本的GCC编译器。 按照本文提供的步骤和设置选项,即使以前没有安装过GCC,也可以在系统上安装上一个可工作的新版本的GCC编译器。 1. 下载 在GCC网站上(https://www.doczj.com/doc/7d4522185.html,/)或者通过网上搜索可以查找到下载资源。目前GCC的最新版本为 3.4.0。可供下载的文件一般有两种形式: gcc-3.4.0.tar.gz和gcc-3.4.0.tar.bz2,只是压缩格式不一样,内容完全一致,下载其中一种即可。 2. 解压缩 根据压缩格式,选择下面相应的一种方式解包(以下的“%”表示命令行提示符): % tar xzvf gcc-3.4.0.tar.gz 或者 % bzcat gcc-3.4.0.tar.bz2 | tar xvf - 新生成的gcc-3.4.0这个目录被称为源目录,用${srcdir}表示它。以后在出现${srcdir}的地方,应该用真实的路径来替换它。用pwd命令可以查看当前路径。 在${srcdir}/INSTALL目录下有详细的GCC安装说明,可用浏览器打开index.html阅读。

详解Linux安装GCC方法

下载:https://www.doczj.com/doc/7d4522185.html,/gnu/gcc/gcc-4.5.1/gcc-4.5.1.tar.bz2 浏览:https://www.doczj.com/doc/7d4522185.html,/gnu/gcc/gcc-4.5.1/ 查看Changes:https://www.doczj.com/doc/7d4522185.html,/gcc-4.5/changes.htm 现在很多程序员都应用GCC,怎样才能更好的应用GCC。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。本文以在Redhat Linux安装GCC4.1.2为例(因在项目开发过程中要求使用,没有用最新的GCC 版本),介绍Linux安装GCC过程。 安装之前,系统中必须要有cc或者gcc等编译器,并且是可用的,或者用环境变量CC指定系统上的编译器。如果系统上没有编译器,不能安装源代码形式的GCC 4.1.2。如果是这种情况,可以在网上找一个与你系统相适应的如RPM等二进制形式的GCC软件包来安装使用。本文介绍的是以源代码形式提供的GCC软件包的安装过程,软件包本身和其安装过程同样适用于其它Linux和Unix系统。 系统上原来的GCC编译器可能是把gcc等命令文件、库文件、头文件等分别存放到系统中的不同目录下的。与此不同,现在GCC建议我们将一个版本的GCC安装在一个单独的目录下。这样做的好处是将来不需要它的时候可以方便地删除整个目录即可(因为GCC没有uninstall功能);缺点是在安装完成后要做一些设置工作才能使编译器工作正常。在本文中采用这个方案安装GCC 4.1.2,并且在安装完成后,仍然能够使用原来低版本的GCC编译器,即一个系统上可以同时存在并使用多个版本的GCC编译器。 按照本文提供的步骤和设置选项,即使以前没有安装过GCC,也可以在系统上安装上一个可工作的新版本的GCC编译器。 1 下载 在GCC网站上(https://www.doczj.com/doc/7d4522185.html,)或者通过网上搜索可以查找到下载资源。目前GCC的最新版本为 4.2.1。可供下载的文件一般有两种形式:gcc-4.1.2.tar.gz和gcc-4.1.2.tar.bz2,只是压缩格式不一样,内容完全一致,下载其中一种即可。 2. 解压缩 拷贝gcc-4.1.2.tar.bz2(我下载的压缩文件)到/usr/local/src(根据自己喜好选择)下,根据压缩格式,选择下面相应的一种方式解包(以下的“%”表示命令行提示符): % tar zxvf gcc-4.1.2.tar.gz

gcc编译器使用说明

要想读懂本文,你需要对C语言有基本的了解,本文将介绍如何使用gcc编译器。首先,我们介绍如何在命令行方式下使用编译器编译简单的C源代码。然后,我们简要介绍一下编译器究竟作了那些工作,以及如何控制编译过程。我们也简要介绍了调试器的使用方法。 GCC rules 你能想象使用封闭源代码的私有编译器编译自由软件吗?你怎么知道编译器在你的可执行文件中加入了什么?可能会加入各种后门和木马。Ken Thompson是一个著名的黑客,他编写了一个编译器,当编译器编译自己时,就在'login'程序中留下后门和永久的木马。请到这里阅读他对这个杰作的描述。幸运的是,我们有了gcc。当你进行 configure; make; make install 时, gcc在幕后做了很多繁重的工作。如何才能让gcc为我们工作呢?我们将开始编写一个纸牌游戏,不过我们只是为了演示编译器的功能,所以尽可能地精简了代码。我们将从头开始一步一步地做,以便理解编译过程,了解为了制作可执行文件需要做些什么,按什么顺序做。我们将看看如何编译C程序,以及如何使用编译选项让gcc按照我们的要求工作。步骤(以及所用工具)如下:预编译 (gcc -E),编译 (gcc),汇编 (as),和连接 (ld)。 开始... 首先,我们应该知道如何调用编译器。实际上,这很简单。我们将从那个著名的第一个C程序开始。(各位老前辈,请原谅我)。 #include int main() { printf("Hello World!\n"); } 把这个文件保存为 game.c。你可以在命令行下编译它: gcc game.c 在默认情况下,C编译器将生成一个名为 a.out 的可执行文件。你可以键入如下命令运行它:a.out Hello World 每一次编译程序时,新的 a.out 将覆盖原来的程序。你无法知道是哪个程序创建了 a.out。

g++安装方法

安装gcc4.4.2需要依赖mpfr,gmp。 1,安装m4,运行sudo aptitude install build-essential m4 或者apt-get install m4。这是安装gmp 所必须的,还好Ubuntu提供了安装gmp ./configure --prefix=/usr/local/gmp make make check make install 安装mgfr ./configure --prefix=/usr/loca/mpfr --with-gmp-include=/usr/local/gmp/include --with-gmp-lib=/usr/local/gmp/lib --with-gmp=/usr/local/gmp make make check make install 安装gcc 设gcc的源代码的目录为src_path 编译目录为build_path ../../gcc-4.4.2/configure --prefix=/usr/local/gcc-4.4.2 --enable-threads=posix --disable-checking --enable-long-long --with-system-zlib --with-gmp-include=/usr/local/gmp/include --with-gmp-lib=/usr/local/gmp/lib --with-gmp=/usr/local/gmp --with-mpfr-include=/usr/local/mpfr/include --with-mpfr-lib=/usr/local/mpfr/lib --with-mpfr=/usr/local/mpfr make make check make install 解压缩 根据压缩格式,选择下面相应的一种方式解包(以下的“%”表示命令行提示符): % tar xzvf gcc-3.4.0.tar.gz 或者 % bzcat gcc-3.4.0.tar.bz2 | tar xvf – 注:如果下载更新的gcc,比如gcc-4.1.1或gcc-4.1.0,后面就要修改texinfo的版本支持信息,因为版本太高了 新生成的gcc-3.4.0这个目录被称为源目录,用${srcdir}表示它。以后在出现${srcdir}的地方,应该用真实的路径来替换它。用pwd命令可以查看当前路径。 在${srcdir}/INSTALL目录下有详细的GCC安装说明,可用浏览器打开index.html阅读。 建立目标目录 目标目录(用${objdir}表示)是用来存放编译结果的地方。GCC建议编译后的文件不要放在源目录${srcdir}中(虽然这样做也可以),最好单独存放在另外一个目录中,而且不能是${srcdir}的子目录。

Proteus入门教程完整版

Proteus 入门教程 本文将简单介绍一下Proteus 的使用。在这里,我用的Proteus 版本是Proteus 6.7 sp3 Professional。 一、Proteus 6 Professional 界面简介 安装完Proteus 后,运行ISIS 6 Professional,会出现以下窗口界面: 为了方便介绍,我分别对窗口内各部分进行中文说明(见上图)。下面简单 介绍各部分的功能: 1.原理图编辑窗口(The Editing Window):顾名思义,它是用来绘制原理 图的。蓝色方框内为可编辑区,元件要放到它里面。注意,这个窗口是 没有滚动条的,你可用预览窗口来改变原理图的可视范围。 2.预览窗口(The Overview Window):它可显示两个内容,一个是:当你 在元件列表中选择一个元件时,它会显示该元件的预览图;另一个是, 当你的鼠标焦点落在原理图编辑窗口时(即放置元件到原理图编辑窗口 后或在原理图编辑窗口中点击鼠标后),它会显示整张原理图的缩略图, 并会显示一个绿色的方框,绿色的方框里面的内容就是当前原理图窗口 中显示的内容,因此,你可用鼠标在它上面点击来改变绿色的方框的位 置,从而改变原理图的可视范围。 3.模型选择工具栏(Mode Selector Toolbar): 主要模型(Main Modes): 1* 选择元件(components)(默认选择的) 2* 放置连接点 3* 放置标签(用总线时会用到) 4* 放置文本 5* 用于绘制总线 6* 用于放置子电路 7* 用于即时编辑元件参数(先单击该图标再单击要修改的元件) 配件(Gadgets): 1* 终端接口(terminals):有VCC、地、输出、输入等接口 2* 器件引脚:用于绘制各种引脚 3* 仿真图表(graph):用于各种分析,如Noise Analysis 4* 录音机 5* 信号发生器(generators) 6* 电压探针:使用仿真图表时要用到 7* 电流探针:使用仿真图表时要用到 8* 虚拟仪表:有示波器等 2D 图形(2D Graphics): 1* 画各种直线 2* 画各种方框 3* 画各种圆 4* 画各种圆弧

Redhat linux下安装gcc

一、安装步骤 1、使用which gcc命令发现gcc没有安装 2、拷贝gcc-3.2.2-5.i386.rpm 尝试安装 说明在这之前还需要先装binutils、cpp、glibc-devel这三个包3、拷贝binutils-2.13.90.0.18-9.i386.rpm cpp-3.2.2-5.i386.rpm glibc-devel-2.3.2-11.9.i386.rpm 到install目录分别安装 rpm -ivh binutils-2.13.90.0.18-9.i386.rpm rpm -ivh cpp-3.2.2-5.i386.rpm 但安装第三个包glibc-devel-2.3.2-11.9.i386.rpm时报错: 说明在安装这个包之前需要安装kernel-headers 4、拷贝glibc-kernheaders-2.4-8.10.i386.rpm到install目录安装rpm -ivh glibc-kernheaders-2.4-8.10.i386.rpm 5、继续重新安装glibc-devel-2.3.2-11.9.i386.rpm rpm -ivh glibc-devel-2.3.2-11.9.i386.rpm 6、最后重新安装gcc-3.2.2-5.i386.rpm rpm -ivh gcc-3.2.2-5.i386.rpm 7、重新使用which gcc 说明安装成功! 二、总结 一共需要拷贝以下五个安装包: binutils-2.13.90.0.18-9.i386.rpm glibc-devel-2.3.2-11.9.i386.rpm

相关主题
文本预览
相关文档 最新文档