首页 | | 管理入口  
 
我的日历
 
最新评论
 
访问统计
 
我找日志
 
获取RRS
我的 Blog:
birdhook 最新的 20 条日志
[燕山月似钩]
[高山流水]
[随笔心情日记]
[读书笔记]
全站 Blog:
全站最新的 20 条日志
 
友情连接
QQQQQQQQQQQQQQQ
 
笔记:gcc 基础
作者:遥遥  发表时间:2004-11-28

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

所属栏目:读书笔记  


 


{CommentAuthor}:
{CommentContent}

--- {CommentTime} | {CommentEmail} {CommentUrl} {CommentIp}

Design by smallfish
Powered by 5DBlog.com