c的静态库包含的错误

酷酷的就 发布于 2013/11/04 19:53
阅读 525
收藏 0
GCC

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

练习个 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',, 折腾了好一会,没搞定, 谁给看看,非常感谢啦.
加载中
0
铂金胖子
铂金胖子
把数据库的lib也加进来试试。 就是定义RM的那个。
0
酷酷的就
酷酷的就

引用来自“铂金胖子”的答案

把数据库的lib也加进来试试。 就是定义RM的那个。
没用到RM,  相关的库  -lclntsh -ldl -lm -lpthread也是包含的
0
酷酷的就
酷酷的就

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


返回顶部
顶部