BBS.ChinaUnix.net
首页 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  会员: 密码: 免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


[ASE] 请教:aix53 + sybase125下编译cp程序,报Undefined symbol错

首页 » 论坛 » Sybase »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
wboobw
新手




UID:707775
注册:2008-5-20
最后登录: 2008-05-26
帖子:2
精华:0

可用积分:2 (白手起家)
信誉积分:0
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


1楼 发表于 2008-5-20 23:50 
平台:
aix5.3.0.0  
sybase 12.5.4  32位
rs6000

SYBPLATFORM=rs6000已经定义

描述:
从aix4.3.2.0 sybase 12.0 移植到 aix 5.3.0.0 sybase 12.5.4,在aix4.3.2.0 sybase 12.0上面没有出现问题,
顺利编译,但在新的平台下:sybase的sample/esqlc下的例子可以编译成功,但是编译自己的应用的时候报错,预编译没事,
ld的时候报错:
ld: 0711-317 ERROR: Undefined symbol: .cs__delete_thread_msg__FP10_cscontext
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.

我看了我门平台自己的应用和makefile,程序中也都include了头文件/OCS-12_5/include/sybhesql.h和sybtesql.h,
make的要素和sample里面的本质是一样的,只是多连接了我们应用自己的东西,make以及makefile如下,我觉得可能是连进来的
我们自己的静态库libpub.a有问题,但是我看了我们生成静态库libpub.a的makefile和程序,没有什么错,而且里面用到的.h都有,
都是没有什么异常的:

[系统>/home/xe/src/tools]make
        /sybase/OCS-12_5/bin/cpre -m -l -Uxe -SSYBASE -Dxe -Pxe -I/home/xe/src/include
        -I/sybase/OCS-12_5/include -O ferr.C ferr.cp

M_WHEN_ERROR,Unable to find the SQL statement 'WHENEVER SQLERROR'.
M_WHEN_WARN,Unable to find the SQL statement 'WHENEVER WARNING'.
M_WHEN_NF,Unable to find the SQL statement 'WHENEVER NOT FOUND'.
0 Error(s) and 3 Warning(s) found.
Statistical Report:
        Program name: cpre
        Options specified: -l -m
        Input file name: ferr.cp
        Listing file name:
        Target file name: ferr.C
        ISQL file name:
        Tag ID specified:
        Compiler used: ANSI_C
        Open Client version: CS_VERSION_125
        Number of information messages: 11
        Number of warning messages: 3
        Number of error messages: 0
        Number of SQL statements parsed: 6
        Number of host variables declared: 3
        Number of SQL cursors declared: 0
        Number of dynamic SQL statements: 0
        Number of stored Procedures generated: 0
        Connection(s) information:
                User id: xe
                Server: SYBASE
                Database: xe

        xlc -g  -I/home/xe/src/include  -I/sybase/OCS-12_5/include -o /home/xe/bin/ferr /home/xe/src/tools/ferr.C
        -lC -lm  /home/xe/lib/libpub.a /sybase/OCS-12_5/lib/libct.so /sybase/OCS-12_5/lib/libcs.so /sybase/OCS-12_5/lib/libcomn.so /sybase/OCS-12_5/lib/libtcl.so /sybase/OCS-12_5/lib/libintl.so /sybase/OCS-12_5/lib/libsybdb.so

ld: 0711-317 ERROR: Undefined symbol: .cs__delete_thread_msg__FP10_cscontext
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
make: 1254-004 The error code from the last command is 8.


我的makefile:

SYSDIR =$(SYBASE)/OCS-12_5
SYSHEAD =$(SYSDIR)/include
INCLUDE  = -I$(SYSHEAD)
INCL = -I$(PSHOME)/src/include -I$(PSHOME)/src/include/comhead  $(INCLUDE)
PRECOMP = $(SYBASE)/OCS-12_5/bin/cpre -m -l -Uxe -SSYBASE -Dxe -Pxe $(INCL)
LINK = xlc -g
SYBLIBDIR= $(SYBASE)/OCS-12_5/lib/
LIBS =  $(SYBLIBDIR)libct.so\
        $(SYBLIBDIR)libcs.so\
        $(SYBLIBDIR)libcomn.so\
        $(SYBLIBDIR)libtcl.so\
        $(SYBLIBDIR)libintl.so\
        $(SYBLIBDIR)libsybdb.so
        
BIN = $(PSHOME)/bin/
LIB = $(PSHOME)/lib/
SRC = $(PSHOME)/src/tools/
HEADFILE=$(PSHOME)/src/include/comhead/*.h

$(BIN)ferr(SRC)ferr.cp $(LIB)libpub.a $(HEADFILE)
        $(PRECOMP) -O ferr.C ferr.cp
        $(LINK) $(INCL) -o $(BIN)ferr $(SRC)ferr.C -lC -lm $(LIB)libpub.a $(LIBS)
        rm ferr.C

请大家指点,找了很久的错,都找不到原因



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘
wboobw
新手




UID:707775
注册:2008-5-20
最后登录: 2008-05-26
帖子:2
精华:0

可用积分:2 (白手起家)
信誉积分:0
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


2楼 发表于 2008-5-26 09:51 
回复 #1 wboobw 的帖子

问题已经解决,按照sybase的sample的makefile来写也不行,最后是将sybase中include部分的sybesql.c编译为.o,然后在自己的应用程序makefile中连上这个.o就可以了,在程序中直接include不行,所以将程序中include的都去掉:
64位环境也是这样做,就可以了:

封掉:
/*
#include "/sybase/OCS-12_5/include/sybhesql.h"
#include "/sybase/OCS-12_5/include/sybtesql.h"
*/

makefile改为:

SYBSRC=sybesql.o

sybesql.o:/sybase/OCS-12_5/include/sybesql.c
        $(LINK) $(INCL) -c /sybase/OCS-12_5/include/sybesql.c

$(BIN)ferr(SRC)ferr.cp $(LIB)libpub.a $(HEADFILE)
        $(PRECOMP) -O ferr.C ferr.cp
        $(LINK) $(INCL) -o $(BIN)ferr $(SRC)ferr.C -lC -lm $(SYBSRC) $(LIB)libpub.a $(LIBS)
        rm ferr.C



您对本贴的看法:鲜花[0] 臭蛋[0]
空间积分可以换礼品了! | 有奖跟帖:服务器节能,奖50-100元图书 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘

首页 » 论坛 » Sybase »


 


Copyright © 2001-2008 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

Processed in 0.074537 second(s), 4 queries , Gzip enabled