[转]嵌入式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)介绍 ...
随机推荐
- DAY3 python群发短信
手机轰炸,burpsuit 抓取注册页面输入的手机号,然后每点击一次forword ,都开开始放行,发短信.也可以发到repeat 里面进行 ,重复发送短信. import requests impo ...
- PHPCMS几个有用的全局函数
1.$site_setting = get_site_setting($siteid); 这个get_site_setting()函数读取的是多站点中$siteid站点的相关配置,具体位置在网站根 ...
- 百度定位API报错:leaked ServiceConnection com.baidu.location.LocationClient$1@426122f0
使用百度MapApi定位时候,当退出当时使用的activity后,则会报如题的异常,解决办法: 1:当退出当前定位的activity时,一定要在onDestroy方法中要mLocClient.stop ...
- java 自定义标签 传值
<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://ja ...
- Win7平台下React-Native开发之Android项目打包发布流程
一.bundle文件 React-Native开发步骤中,有一个步骤是使用命令 react-native start 去启动一个基于Node.js的服务,名字为packager.这个packager的 ...
- HDU 4941 Magical Forest(map映射+二分查找)杭电多校训练赛第七场1007
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4941 解题报告:给你一个n*m的矩阵,矩阵的一些方格中有水果,每个水果有一个能量值,现在有三种操作,第 ...
- linux下安装使用libuuid(uuid-generate)
linux下安装使用libuuid(uuid-generate) linux下安装使用libuuid(uuid-generate) UUID简介 安装libuuid库 编写一个程序试一下 代码 编译运 ...
- ubuntu系统安装PHP扩展
GD库的安装 sudo apt-get install php5-gd sudo apt-get install php5-gd sudo /etc/init.d/apache2 restart CU ...
- 将 JAR 转为 EXE – EXE4J 的使用教程(第一期)(转载)
http://www.iteknical.com/convert-jar-to-exe-phase-i-exe4j-tutorial/
- 【leetcode】Merge k Sorted Lists
Merge k Sorted Lists Merge k sorted linked lists and return it as one sorted list. Analyze and descr ...