GNU C 编译系统gcc 1. 生成和安装gcc 大部分GNU软件采用 configure ,make , make install 方式,但gcc本身是编译系统的,故有所不同。
生成过程: 本地cà本地c生成的gcc1à gcc1生成gcc2àgcc2生成的gcc3 具体步骤: #tar zxvf gcc-2.8.1.tar.gz 解压缩 #./configure CPU-COMPANY-SYSTEM //指定 指定安装目录 要加上 –prefix=/DIR
确保Bison parser generator 已被安装 执行命令,生成gcc编译器 #make bootstrap LANGUAGES=LANGUAGE-LIST BOOT_CFLAGS=OPTION-LIST 其中:language-list 指定gcc要支持的语言,取值有c,从c++和objective-c OPTION-LIST 指定编译选项,常用”-g –O2”
这样就已经生成了gcc编译器,但通常用来校验一下生成的是否正确。 比较stage1 和stage2 生成的gcc编译器,执行 #make compare
安装: gcc的标准安装目录:/usr/local 下的各个子目录,如/usr/local/bin, /usr/local/lib,/usr/local/include等,可以用—prefix=DIR改变默认路径.
#make install 将ccl,cpp 和libgcc.a 复制到安装目录$DIR/gcc-lib.TARGET.VERSION下。缺省情况就是 /usr/local/lib/gcc-lib/TARGET/VERSION,其中,TARGET 是configure指定的目标机类型。同时安装程序还将编译器xgcc复制成/usr/local/bin/gcc.
检查: #gcc/v 这样可以编译C程序,对c++支持需要libg++。
#tar zxvf libg++-2.7.2tar.gz #cd libg++-2.7.2 #./configure #make all #make install
2. 使用gcc进行编译和装配 控制gcc处理步骤的命令选项 命令选项 说明 输出文件后缀 -E 仅预处理,但不编译,汇编,装配 .i, .ii -S 预处理,编译,但不汇编,装配 .s -c 预处理,编译,汇编,但不装配 .o -o 预处理,编译,汇编,装配 .so, a.out
例如,生成目标文件 ,可以用目标文件生成函数库 #gcc –c foo.c 3. 创建函数库 ar 命令,创建和更新静态函数库,共享函数库的装配器gld创建 #ar rs libname filenames 更新一个函数库 #ar rux libname filenames
从函数库中删除一个或多个文件 #ar ds libname filenames
从函数库中提取一个或多个文件 #ar x libname filenames
创建共享库的命令如下: #gld –shared –o libname.so filename1.o filename2.o libname.so 是共享库的名字,filename1.o 和filename2.o 是共享库的目标代码 他们必须是用 –fpic 或-fPIC生成的(表示为位置无关的目标码)
4. GNU MAKE 概述: 简单的makefile: example: main.o iodat.o dorun.o lo.o gcc –o example main.o iodat.o dorun.o lo.o main.o: main.c gcc –c main.c iodat.o: iodat.c gcc –c iodat.c dorun.o: dorun.c gcc –c dorun.c lo.o: lo.s gas –o lo.o lo.s clean: rm *.o
|