[转]嵌入式SQC文件编译
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,那样,访问的过程策略是在访问时才有的,速度会受很大的影响,特别是
并发访问。
例: 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
参数说明
这个目录下主要使用到2个头文件:sqladef.h和sqlca.h,这个是DB2预编译包含的都文件,可以查看你用prep编译出来的与.sqc同名
的.C文件,其中就包含这两个头文件。其中aix是DB2Instance用户,DB2安装后会将include路径复制到instance用户的环境变
量中,再次创建instance后只要复制过来就可以,因为Instance用户还包含其他的环境设定,所以不要直接引用-I/opt/IBM/db2
/V9.5/include/这个DB2的安装路径
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文件编译的更多相关文章
- Ubuntu的多文件编译以及c语言的数组、函数
闲言少叙,直接切入主题. 一.Linux下的多文件编译(Ubuntu系统). 对于小程序来说,往往一个.c文件就足够了,里面包含了各种主函数和功能函数,以及函数的声明等等.但是这样的弊端主要有两点,一 ...
- C文件编译、链接指令
通过mac终端 输入指令: cc -c 文件名.c 可以把C文件编译成.o文件(其实是2进制文件) 然后通过指令 cc 文件名.o 把.o文件链接C文件所需要的C语言的底层库,成为可以直接运行的lin ...
- OC方法和文件编译
OC方法和文件编译 一.OC方法 (一)对象方法 (1)对象方法以-开头如 -(void)xx; (2)对象方法只能又对象来调用 (3)对象方法中可以访问当前对象的成员变量 (4)调用格式 [对象 ...
- C语言-------多文件编译
(1)前段时间,学长讲解宏的一些知识 也提起了那个多文件编译,同过看别人的博客,自己也懂了一些,现在来总结一下这个多文件编译,其实和java里面的那个class的调用好像有联系 其定义即可以理解成: ...
- linux kernel 模块多文件编译
/*************************************************************************** * linux kernel 模块多文件编译 ...
- Qt creator error: LNK1123: 转换到 COFF 期间失败: 文件无效或损坏(vs2010的嵌入式清单文件)
下面是vs2010导入别人文件时出现的问题的解决方案:VS2010在经历一些更新后,建立Win32 Console Project时会出“error LNK1123” 错误,解决方案为将 项目|项目属 ...
- ios开发问题:添加库和复制其它工程文件编译错误问题
首先添加库问题: 选择页签Build Phases->Link Binary With Libraries点+添加库 然后command+shift+k清除历史debug的垃圾 复制其它工程文件 ...
- Linux内核驱动将多个C文件编译成一个ko文件的方法——每一个C文件中都有module_init与module_exit
以两个C文件为例: 将本该被分别编译成adc_device.ko和adc_driver.ko的adc_device.c.adc_driver.c编译成一个ko文件! 採用方法: 第一步.改动C文件 1 ...
- JAVA 文件编译执行与虚拟机(JVM)简单介绍
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytpo3 java程序的内存分配 JAVA 文件编译执行与虚拟机(JVM)介绍 ...
随机推荐
- Codeforces Round #335 Sorting Railway Cars 动态规划
题目链接: http://www.codeforces.com/contest/606/problem/C 一道dp问题,我们可以考虑什么情况下移动,才能移动最少.很明显,除去需要移动的车,剩下的车, ...
- Linux 利器- Python 脚本编程入门(一)
导读 众所周知,系统管理员需要精通一门脚本语言,而且招聘机构列出的职位需求上也会这么写.大多数人会认为 Bash (或者其他的 shell 语言)用起来很方便,但一些强大的语言(比如 Python)会 ...
- [BZOJ1999][codevs1167][Noip2007]Core树网的核
[BZOJ1999][codevs1167][Noip2007]Core树网的核 试题描述 设T=(V, E, W) 是一个无圈且连通的无向图(也称为无根树),每条边带有正整数的权,我们称T为树网(t ...
- BZOJ 2574: [Poi1999]Store-Keeper
Description 推箱子. \(n,m\leqslant 100\) Sol Tarjan+边双连通分量+BFS. 直接搜索的复杂度是 \(n^6\) 记录人的位置,箱子的位置和转移. 箱子的位 ...
- Github GUI 托管代码教程
附录:克隆仓库到本地:git clone https://github.com/chzeze/WeiboHomeCrawl.git
- ModelAndView的介绍
ModelAndView的构造方法有7个.但是它们都是相通的.这里使用无参构造函数来举例说明如何构造ModelAndView实例. ModelAndView类别就如其名称所示,是代表了MVC Web程 ...
- 用ConfigParser模块读写配置文件——Python
对于功能较多.考虑用户体验的程序,配置功能是必不可少的,如何存储程序的各种配置? 1)可以用全局变量,不过全局变量具有易失性,程序崩溃或者关闭之后配置就没了,再者配置太多,将变量分配到哪里也是需要考虑 ...
- 如何优雅的使用 phpStorm 开发工具
按照惯例依然是从百科上复制一条简介: PhpStorm 是 JetBrains 公司开发的一款商业的 PHP 集成开发工具.PhpStorm可随时帮助用户对其编码进行调整,运行单元测试或者提供可视化d ...
- ubuntu update dns server
edit: /etc/resolvconf/resolv.conf.d/base nameserver 114.114.114.114 execute this: $ resolvconf -u f ...
- 【云计算】Cloudify-基于TOSCA规范的开源云应用编排系统
.cloudify-manager-blueprints:https://github.com/cloudify-cosmo/cloudify-manager-blueprints/tree/3. ...