c语言bnd文件,Unix环境下嵌入式C程序编译
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下。
c语言bnd文件,Unix环境下嵌入式C程序编译相关推荐
- 二级c语言编译完程序如何运行,计算机二级C语言辅导:C++环境下编译和运行c语言...
一 单个文件运行 1 打开vc++出现如图 2 从file菜单中选择"new"→c++source file如图 3 单击"--"命令按扭,在choose di ...
- 成功解决:将后缀.pyx格式文件(linux环境)编译成pyd文件(windows环境下)实现python编程加载或导入
成功解决:将后缀.pyx格式文件(linux环境)编译成pyd文件(windows环境下)实现python编程加载或导入 目录 解决问题 解决思路 解决方法 解决问题 .pyx格式文件,在window ...
- Windows在cmd命令行环境下运行c程序
现在有许多便利的编译器,例如DevC++,sublime,vscode等等,在这些编译器里面我们添加必要的插件就可以直接运行C语言程序.但是还有一种我们可以采取的普适的运行C程序的方法--在cmd命令 ...
- win10环境下 运行debug程序
百度网盘:链接:https://pan.baidu.com/s/1y6omgW6fI-gT3Dp-0hutOg 提取码:iw4l CSDN0积分下载:https://download.csdn. ...
- linux使用gcc实现扫雷,基于linux环境下扫雷应用程序
基于linux环境下扫雷应用程序 (16页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 <网络操作系统>报告(应用程序开发) ...
- Linux上运行扫雷,基于linux环境下扫雷应用程序.docx
总俶斜技誓魄 <网络操作糸统>掖告 (应用程序开发丿 题 目: 基于I inux平台GCC环境下扫雷应用程 序开发 姓 名: 李磊 学 院: 理学院 专 业: 网络工程 班 级: 092 ...
- 基于VB环境下的语音识别程序开发方法
摘要:语音识别技术的发展和广泛应用,使用户与计算机的对话方式不再仅仅局限在使用键盘或鼠标发送指令的方式.本文在visual basic 编程环境下使用Microsoft Speech SDK中的语音接 ...
- Linux下C/C++程序编译链接加载过程中的常见问题及解决方法
Linux下C/C++程序编译链接加载过程中的常见问题及解决方法 1 头文件包含的问题 报错信息 该错误通常发生在编译时,常见报错信息如下: run.cpp:2:10: fatal error: dl ...
- c语言Linux用线程创建文件,Linux环境下C语言线程创建---简单代码
在Linux环境下用C语言编写线程创建. //file name: pthreadtext.c #include #include //线程头文件 //pthread不是linux下的默认的库,也就是 ...
最新文章
- Webstrom卡顿问题解决
- MYSQL5.7.17设置初始密码
- RocketMQ消息支持的模式-消息异步发送
- Excel 2013中单元格添加下拉列表的方法
- python实用的几个脚本程序(自己在用)
- Bootstrap3 源码版本的文件结构
- vue实现消息badge 标记_Vue $mount实战之实现消息弹窗组件
- Java构造器(构造方法)与方法区别
- Yarn 和 NPM 国内快速镜像(淘宝镜像)
- iphone长截图哪个软件好_iPhone上最好的长截图工具!
- jrtplib linux编译,jrtplib+jthread 交叉编译
- matlab 三角函数 积化和差,三角函数积化和差
- QT windows ICO图标制作方法
- vfp access mysql具体_详细介绍Visual FoxPro数据表的索引
- “无须”与“无需”最简易区别法
- 导入数据报错Packet for query is too large (20717492 4194304).
- 30分钟快速生成元宇宙专属虚拟人
- 深度好文,腾讯2019互联网趋势报告
- UBuntu 下载安装
- 【总结】利用AWS实现高可用性和云灾备