开发者社区> 问答> 正文

c的静态库包含的错误?报错

一个错误,不知道如何解决

练习个 tuxedo和数据库连接的例子,不是xa的方式,就是在tpsvrinit 连接数据库, 如果是短链接的就在tpreturn()前释放连接的.遇到一个不是问题的问题,应该是个人c的能力不够,没搞定,看那个大侠帮帮忙看怎么解决:

先有个db.cp 封装了数据库相关的操作,编译成.a了
在tuxedo服务编译的时候加入db.a,供后续数据库操作
但编译的时候 报错了,如下:
/bea/tuxedo8.1/bin/build server -v -l "-L/oracle/instant client_11_2/ -L/bea/tuxedo8.1/lib -L/mgcrm/run/public/lib -lclntsh -ldl -lm -lpthread -lTools -lTuxedo81 -lDb" -s TOUPPER -s stest -o/mgcrm/bankapp/bin/simpserv -f "simpserv.o"
cc -I$TUXDIR/include -o /mgcrm/bankapp/bin/simpserv BS-3cfa.c -L${TUXDIR}/lib simpserv.o -ltux -lbuft -lfml -lfml32 -lengine -ldl -lpthread /usr/lib/libcrypt.a -L/oracle/instantclient_11_2/ -L/bea/tuxedo8.1/lib -L/mgcrm/run/public/lib -lclntsh -ldl -lm -lpthread -lTools -lTuxedo81 -lDb
/mgcrm/run/public/lib/libDb.a(db.o): In function `getConnetion':
/mgcrm/resources/db/db.cp:50: undefined reference to `SQLCA'
collect2: ld 返回 1
CMDTUX_CAT:1832: ERROR: can't execute cc -I$TUXDIR/include -o /mgcrm/bankapp/bin/simpserv BS-3cfa.c -L${TUXDIR}/lib simpserv.o -ltux -lbuft -lfml -lfml32 -lengine -ldl -lpthread /usr/lib/libcrypt.a -L/oracle/instantclient_11_2/ -L/bea/tuxedo8.1/lib -L/mgcrm/run/public/lib -lclntsh -ldl -lm -lpthread -lTools -lTuxedo81 -lDb

这个老是说libDb.a里面 undefined reference to `SQLCA',, 折腾了好一会,没搞定, 谁给看看,非常感谢啦.

展开
收起
爱吃鱼的程序员 2020-06-22 14:39:20 520 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    把数据库的lib也加进来试试。就是定义RM的那个。

    今天在编译的时候用了-MM参数看引用的头文件,才发现sqlca.h和sqlda.h引用的是/bea/tuxedo8.1/include下的,应该是引用oracle才对,改了下就好了,


    2020-06-22 14:39:39
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载