首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | HR | 镜像
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>其他编程>正文

Linux下proc编译及gcc编译的学习体会

http://www.oklinux.cn  2008-08-03  linuxidc   会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

在Linux下编译.pc文件(即应用了oracle的嵌入式数据库开发语言)过程有两步:

首先经过proc预处理把.pc文件编译成.c文件:

proc test.pc

这期间如果报错那么就是一些库文件和头文件没有包含进去。proc 常用参数选项说明:

(1)code:指出预编译处理所生成的c函数的格式当code= ANSI_C时,生成符合ANSI_C标准的函数原型参数:

extern sqlca(log*,void *);

当code=KR_C时生成如下格式的函数原型参数:

extern sqlca(/*_log*,void *_*/);

语法:code=ANSI_C|KR_C缺省值为KR_C。注:能在命令行里或程序上输入。

(2)DBMS:指定所用oracle数据库管理系统的版本。

语法:DBMS=NATIVE|v6|v7

缺省值:NATIVE。注:只能在命令行上输入。(3)ERRORS:

指出编译程序时产生的错误信息是否发送到终端和清单文件。

语法:ERRORS=YES|NO,为YES时发送到终端和清单文件,为NO 时只发送到清单文件。

默认:YES。

注:能在程序和命令行上输入。

(4)INCLUDE:指定EXEC SQL INCLUDE 文件的目录路径,只适用于使用目录的操作系统。

语法:INCLUDE =PATH

(5)MODE:指定程序遵循的标准

语法:

MODE=ORACLE|ISO|ANSI.....还有其他标准。

(6)ONAME:指定输出文件:

语法:

ONAME=PATH FILENAME

(7)LINES:指出预编译处理程序是否对输出文件加#line命令。

(8)INAME:指定输 入文件:

语法:

ONAME=PATH FILENAME

预编译完后会产生相应的.c文件,接下来对.c文件进行编译:

这里使用gcc编译。

gcc编译的选项参数说明:

-c

只激活预处理,编译,和汇编,也就是他只把程序做成obj文件

例子用法:

gcc -c hello.c

他将生成.o的obj文件

-S

只激活预处理和编译,就是指把文件编译成为汇编代码。

例子用法

gcc -S hello.c

他将生成.s的汇编代码,你可以用文本编辑器察看

-E

只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里

面.

例子用法:

gcc -E hello.c > pianoapan.txt

gcc -E hello.c | more

慢慢看吧,一个hello word 也要与处理成800行的代码

-o

制定目标名称,缺省的时候,gcc 编译出来的文件是a.out,很难听,如果

你和我有同感,改掉它,哈哈

例子用法

gcc -o hello.exe hello.c (哦,windows用习惯了)

gcc -o hello.asm -S hello.c

-ansi

关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一

些asm inline typeof关键字,以及UNIX,vax等预处理宏,

-wall 显示警告信息

-fno-asm

此选项实现ansi选项的功能的一部分,它禁止将asm,inline和typeof用作

关键字。-fno-strict-prototype

只对g 起作用,使用这个选项,g 将对不带参数的函数,都认为是没有显式

的对参数的个数和类型说明,而不是没有参数.

而gcc无论是否使用这个参数,都将对没有带参数的函数,认为城没有显式说

明的类型-fthis-is-varialble

就是向传统c 看齐,可以使用this当一般变量使用.-fcond-mismatch

允许条件表达式的第二和第三参数类型不匹配,表达式的值将为void类型-funsigned-char

-fno-signed-char

-fsigned-char

-fno-unsigned-char

这四个参数是对char类型进行设置,决定将char类型设置成unsigned char(前

两个参数)或者 signed char(后两个参数)-include file

包含某个代码,简单来说,就是便以某个文件,需要另一个文件的时候,就可以

用它设定,功能就相当于在代码中使用#include

例子用法:

gcc hello.c -include /root/pianopan.h-imacros file

将file文件的宏,扩展到gcc/g 的输入文件,宏定义本身并不出现在输入文件

中-Dmacro

相当于C语言中的#define macro-Dmacro=defn

相当于C语言中的#define macro=defn-Umacro

相当于C语言中的#undef macro-undef

取消对任何非标准宏的定义-Idir

在你是用#include"file"的时候,gcc/g 会先在当前目录查找你所制定的头

文件,如果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他

回先在你所制定的目录查找,然后再按常规的顺序去找.

对于#include,gcc/g 会到-I制定的目录查找,查找不到,然后将到系

统的缺省的头文件目录查找-I-

就是取消前一个参数的功能,所以一般在-Idir之后使用-idirafter dir

在-I的目录里面查找失败,讲到这个目录里面查找.-iprefix prefix

-iwithprefix dir

一般一起使用,当-I的目录查找失败,会到prefix dir下查找-nostdinc

使编译器不再系统缺省的头文件目录里面找头文件,一般和-I联合使用,明确

限定头文件的位置-nostdin C

规定不在g 指定的标准路经中搜索,但仍在其他路径中搜索,.此选项在创建

libg 库使用-C

在预处理的时候,不删除注释信息,一般和-E使用,有时候分析程序,用这个很

方便的-M

生成文件关联的信息。包含目标文件所依赖的所有源代码

你可以用gcc -M hello.c来测试一下,很简单。-MM

和上面的那个一样,但是它将忽略由#include造成的依赖关系。-MD

和-M相同,但是输出将导入到.d的文件里面-MMD

和-MM相同,但是输出将导入到.d的文件里面-Wa,option

此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选

项,然后传递给会汇编程序-Wl.option

此选项传递option给连接程序;如果option中间有逗号,就将option分成多个选

项,然后传递给会连接程序.

共3页: 上一页 1 [2] [3] 下一页

上一篇:MySQL服务器上添加一个允许远程访问的用户   下一篇:Linux下用gedit制作脚本的简单例子[图文]

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Linux下用gedit制作脚本的简单例子[图文]
·给801卡的Linux驱动程序增加了自己的内存映射函数
·Linux gcc下指定对齐方式
·我的Linux下命令行C代码编辑器配置
·Linux-2.6.26内核的改变总结
·Linux下编程常用头文件整理
·Linux系统中配置JDK和PHP调用java类
·Linux计算时间间隔
·编译Linux时出现:“错误:数组元素的类型不完全”
·对于Linux socket与epoll配合相关的一些心得记录
·分享经验丰富的Linux程序员Spence Murray的开发技巧
·Linux与xp下的计算时间比较
·php中init()函数和Linux系统的init进程
·Linux下静态加载一个动态库出现的问题及解决
·Ubuntu删除旧内核的shell脚本
·Linux系统中进程的状态
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Linux源代码已超过1000万行 价值达5亿
·Linux下安装PCI转串口卡及USB转串口器
·基于3c2410的Linux2.6.22移植
·Java基础:Java初学者必须了解的基础问
·Linux下while循环中数组赋值的方法
·C 异步编程方式
·Linux驱动开发之input子系统
·Linux下paste命令
·Ubuntu Linux下C编译错误解决实例
·Ubuntu下向系统日志写记录
·Linux内核模块编程helloworld小程序问
·Ubuntu下QT的开发环境
  阅读排行
·Linux编程时获取当前时间实例解析
·Linux中断处理学习笔记
·Linux环境下OpenGL编程学习
·Linux下安装g77 fortran complier过程
·Linux添加路径到PATH
·Linux多线程编程学习之线程同步
·Linux内核补丁与补丁的安装
·Linux - 非阻塞socket编程处理EAGAIN错
·Linux下Qtopia Core 4.3(QT/E)交叉编译
·Linux平台下学写批处理
·初识Linux脚本编程(shell)
·Linux文件系统ext4 相关知识大全
·新手学堂 Linux的sort命令使用
·Linux环境下重新编译GCC-4.3.0
·在Linux上获得线程id的方法
网摘收藏: