Src Url:http://blog.csdn.net/cws1214/article/details/12996351
 
A.预编译部分 
1.预编译DB2篇

1.1 什么是DB2预编译

在我们用C语言编写访问DB2的程序过程中,需要用到嵌入式SQL,其作用是将DB2 SQL混入一般C程序中, DB2预编译器可以将SQL语法直接转换为DB2行时服务应用程序编程接口(API)调用。

1.2 什么是bind 
这是DB2
prep要做的事情,即把SQC中的SQL语句变为DB2数据库可认的API。bind的作用主要是根据你SQC中的SQL语句使用的表和操作指定一个访
问时DB要使用的策略,是一种优化作用,加快数据访问的速度;当然也可以不bind,那样,访问的过程策略是在访问时才有的,速度会受很大的影响,特别是
并发访问。 
 
2.预编译命令
2.1 db2 prep .sqc文件 bindfile 其中bindfile参数作用是生成和sqc文件同名的.bnd文件

例: db2 prep /export/home/shwhome/sqc/CON_DB2.sqc bindfile 如果编译正常完成,则在.sqc文件同目录下会生成CON_DB2.c和CON_DB2.bnd文件 
2.2 bind .bnd文件 
例: db2 bind /export/home/shwhome/sqc/CON_DB2.bnd 
因为是DB2的预编译命令,使用的是DB2的预编译器,所以以上两条命令需要在连接DB2数据库的情况下才可以使用

B.嵌入式部分 
1.嵌入式C程序的编译 
我们采用GCC来编译C程序,GCC的一般编译命令请参考文档中的相关说明,这里具体说明在目前环境下编译C程序的注意点。

1.1 编译C程序

gcc -m64 -c -I/export/home/shwhome/inc -o /export/home/shwhome/obj/testdb.o /export/home/shwhome/src/testdb.c 
参数说明 
-m64:

在64位服务器上编译时采用,这里为了将所有的编译后的目标文件统一,所以都加上-m64,如果再之后引用目标文件没有采用-m64编译则在最后编译时会
出现ELF CLASS32(或ELF CLASS64)错误. -C: 只编译并生成目标文件,不做链接。 
1.2 编译SQC文件生成的.C文件

gcc
-m64 -c -I/export/home/shwhome/inc -I/export/home/aix/sqllib/include
-L/usr/include/lib -o /export/home/shwhome/obj/CON_DB2.o
/export/home/shwhome/sqc/CON_DB2.c 
参数说明

-I/export/home/aix/sqllib/include:

这个目录下主要使用到2个头文件:sqladef.h和sqlca.h,这个是DB2预编译包含的都文件,可以查看你用prep编译出来的与.sqc同名
的.C文件,其中就包含这两个头文件。其中aix是DB2Instance用户,DB2安装后会将include路径复制到instance用户的环境变
量中,再次创建instance后只要复制过来就可以,因为Instance用户还包含其他的环境设定,所以不要直接引用-I/opt/IBM/db2
/V9.5/include/这个DB2的安装路径

-L/usr/include/lib: 这个目录是系统包含函数的库文件,是编写应用程序的时候使用的相当于API,也就是应用编程接口。
※ -I/usr/include和-L/usr/include/lib是将usr/include下的函数作为头文件包括进来,并且将程序链接到库文件,这个例子中没有用到,但是如果保险的话,在编译时最好加上这两个选项。

1.3 将两个目标文件(主体C程序和嵌入式SQL)编译成可执行程序

gcc -m64 -ldb2 -lc -o /export/home/shwhome/bin/testdb /export/home/shwhome/obj/CON_DB2.o /export/home/shwhome/obj/testdb.o 
参数说明 
-ldb2:

链接DB2库文件。在SQC程序编译时必须链接libdb2.so库,其路径是/usr/lib/krb5/libdb2.so,之所以写成-ldb2,
是在使用-l时,将库名的lib和后缀都去除,即库名是db2。以上命令是引用/export/home/shwhome/obj/CON_DB2.o
/export/home/shwhome/obj/testdb.o这两个目标文件,编译后生成testdb,放在路径/export/home
/shwhome/bin下。

[转]嵌入式SQC文件编译的更多相关文章

  1. Ubuntu的多文件编译以及c语言的数组、函数

    闲言少叙,直接切入主题. 一.Linux下的多文件编译(Ubuntu系统). 对于小程序来说,往往一个.c文件就足够了,里面包含了各种主函数和功能函数,以及函数的声明等等.但是这样的弊端主要有两点,一 ...

  2. C文件编译、链接指令

    通过mac终端 输入指令: cc -c 文件名.c 可以把C文件编译成.o文件(其实是2进制文件) 然后通过指令 cc 文件名.o 把.o文件链接C文件所需要的C语言的底层库,成为可以直接运行的lin ...

  3. OC方法和文件编译

    OC方法和文件编译 一.OC方法 (一)对象方法 (1)对象方法以-开头如 -(void)xx; (2)对象方法只能又对象来调用 (3)对象方法中可以访问当前对象的成员变量 (4)调用格式   [对象 ...

  4. C语言-------多文件编译

    (1)前段时间,学长讲解宏的一些知识  也提起了那个多文件编译,同过看别人的博客,自己也懂了一些,现在来总结一下这个多文件编译,其实和java里面的那个class的调用好像有联系 其定义即可以理解成: ...

  5. linux kernel 模块多文件编译

    /*************************************************************************** * linux kernel 模块多文件编译 ...

  6. Qt creator error: LNK1123: 转换到 COFF 期间失败: 文件无效或损坏(vs2010的嵌入式清单文件)

    下面是vs2010导入别人文件时出现的问题的解决方案:VS2010在经历一些更新后,建立Win32 Console Project时会出“error LNK1123” 错误,解决方案为将 项目|项目属 ...

  7. ios开发问题:添加库和复制其它工程文件编译错误问题

    首先添加库问题: 选择页签Build Phases->Link Binary With Libraries点+添加库 然后command+shift+k清除历史debug的垃圾 复制其它工程文件 ...

  8. Linux内核驱动将多个C文件编译成一个ko文件的方法——每一个C文件中都有module_init与module_exit

    以两个C文件为例: 将本该被分别编译成adc_device.ko和adc_driver.ko的adc_device.c.adc_driver.c编译成一个ko文件! 採用方法: 第一步.改动C文件 1 ...

  9. JAVA 文件编译执行与虚拟机(JVM)简单介绍

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytpo3 java程序的内存分配 JAVA 文件编译执行与虚拟机(JVM)介绍 ...

随机推荐

  1. IO基础

    流向: 输入流:从硬盘到java 程序 (读数据) 输出流:从java 到硬盘 (写数据) 数据类型: 字节流:    {用记事本打开,不能读懂,用 字节流}     输入:   InputStrea ...

  2. nginx反向代理后getRequestURL会出现问题

    nginx反向代理后getRequestURL会出现问题 http://huangqiqing123.iteye.com/blog/1895192

  3. Codeforce 287 div2 C题

    题目链接:http://codeforces.com/contest/507/problem/C 解题报告:现在有一个满二叉树型的迷宫,入口在根结点,出口在第n个叶节点,有一串命令,LRLRLRLRL ...

  4. 使用JavaScript在项目前台开发的58种常用小技巧

    oncontextmenu="return false" :禁止右键 onselectstart="return false" : 禁止选取 onpaste = ...

  5. SQL语句在查询分析器中可以执行,代码中不能执行

    问题:SQL语句在查询分析器中可以执行,代码中不能执行 解答:sql中包含数据库的关键字,将关键字用[]括起来,可以解决. 后记:建数据库的时候尽量避免使用关键字. 例子: sql.Format(&q ...

  6. Delphi Dll 消息处理

    转载:http://blog.csdn.net/lailai186/article/details/8770643 事情的导火线是GIF图片的显示. 在应用程序中, 利用三方的GIFImage.pas ...

  7. ModelAndView的介绍

    ModelAndView的构造方法有7个.但是它们都是相通的.这里使用无参构造函数来举例说明如何构造ModelAndView实例. ModelAndView类别就如其名称所示,是代表了MVC Web程 ...

  8. tornado RequestHandler request.body & request.arguments

    request.body , 请求的原始内容,post方式放在body中的. request.arguments, body参数和url参数的统一体, 同时也是经过“加工”,解码的. eg.在对接其他 ...

  9. 应用HTK搭建语音拨号系统1:数据准备

    选自:http://maotong.blog.hexun.com/6204849_d.html 应用HTK搭建语音拨号系统--数据准备 苏统华 哈尔滨工业大学人工智能研究室 2006年10月30日 声 ...

  10. 开源工作流 Bonita BPM (JAVA)

    Bonita BPM 开源工作流 Bonita BPM  (JAVA) http://www.bonitasoft.com/