Chinaunix

标题: 请教ldd undefined symbol错误 [打印本页]

作者: gtbml    时间: 2008-07-07 14:25
标题: 请教ldd undefined symbol错误
在linux下编译后生成的3dpro.so,运行ldd -r 3dpro.so显示下面错误:
linux-gate.so.1 =>  (0xb7f52000)
        /etc/libcwait.so (0xb7e19000)
        libclntsh.so.9.0 => /opt/oracle/product/9.2.0.4/lib/libclntsh.so.9.0 (0xb7448000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb735f000)
        libnsl.so.1 => /lib/libnsl.so.1 (0xb7331000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb7319000)
        libdl.so.2 => /lib/libdl.so.2 (0xb7314000)
        libACE.so.5.5.0 => /opt/ACE_wrappers/ace/libACE.so.5.5.0 (0xb71be000)
        libm.so.6 => /lib/libm.so.6 (0xb7196000)
        libc.so.6 => /lib/libc.so.6 (0xb703f000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb7034000)
        libwtc9.so => /opt/oracle/product/9.2.0.4/lib/libwtc9.so (0xb7031000)
        /lib/ld-linux.so.2 (0x80000000)
        librt.so.1 => /lib/librt.so.1 (0xb7028000)
undefined symbol: _ZN26LT_LastInvestQueryResponseC1Ev   (./3dpro.so)
undefined symbol: _ZN11LT_Response10setRetCodeESs       (./3dpro.so)
undefined symbol: _ZN11LT_Response9fillValueESsSs       (./3dpro.so)
undefined symbol: _ZN25LT_LastInvestQueryRequestC1ERK10LT_Request       (./3dpro.so)
undefined symbol: _ZN25LT_LastInvestQueryRequest8getDevIdEv     (./3dpro.so)
undefined symbol: _ZN10LT_Message10getMessageEv (./3dpro.so)
undefined symbol: _ZN11LT_Response10getRetCodeEv        (./3dpro.so)
undefined symbol: _ZN10LT_Message8getMsgIdEv    (./3dpro.so)
undefined symbol: _ZN16LP_ThreadContext13getSqlContextEv        (./3dpro.so)
undefined symbol: _ZN11LP_DbCommon9db_commitEPv (./3dpro.so)
undefined symbol: _ZN25LT_LastInvestQueryRequest9getGameIdEv    (./3dpro.so)
undefined symbol: _ZN26LT_LastInvestQueryResponse9setGameIdERKSs        (./3dpro.so)
undefined symbol: _ZN26LT_LastInvestQueryResponse10setIssueIdERKSs      (./3dpro.so)
......
......
相关的Makefiel文件内容如下:
CC   = g++ -g
LIBPUB_PATH       = $(WORK_V2)/lottsrv/lib
LIBSO_TARGET_PATH = $(WORK_V2)/lottsrv/gamesrv/lib
CIN=/usr/lib/gcc/i386-pc-linux/4.2.1

INCLDIRS = -I$(ACE_ROOT) -I$(LIBPUB_PATH)

LINKFLAGS = -shared  

DEFS = -mcpu=i486
CCFLAGS = -DIPS_DEBUG -Wall -mcpu=i486 $(DEFS)

LDFLAGS = -Xlinker -rpath -Xlinker -ftemplate-depth-128 \
          -Wall -D_REENTRANT -fPIC \
          -L$(ORACLE_HOME)/lib -lclntsh \
          -L$(CIN) -lstdc++ -lnsl -lpthread -lm -lc -ldl \
          -L$(ACE_ROOT)/lib -lACE \
          -L$(ACE_ROOT)/ace -lACE \
          -L$(LIBPUB_PATH) -llottpub -ldbcommon -lencrypt -llottproto -lbasepro -loracle9i3d

SO_TARGET = 3dpro.so

OBJS   = LT_3DGameProcess.o LT_3DTicket.o LT_3DWinSearch.o LT_3DPrize.o LT_3DPrizeCalculator.o \
                  LT_3DTicketCode.o LT_3DWinCode.o LT_3DDataChange.o               

.SUFFIXES: .cpp .o

all: $(SO_TARGET)

.cpp.o:
        $(CC) $(INCLDIRS) $(CCFLAGS) -c $*.cpp

$(SO_TARGET): $(OBJS)
        $(CC) $(LINKFLAGS) -o $(SO_TARGET) $(OBJS) $(LDFLAGS)
        @chmod a+rx $(SO_TARGET)

install:
        cp $(SO_TARGET)                                      $(LIBSO_TARGET_PATH)

clean:
        rm $(OBJS)
        rm $(SO_TARGET)
        rm $(LIBSO_TARGET_PATH)/$(SO_TARGET)
由于对G++编译项不怎么了解,弄了几天都不知道怎么做了,希望大家多给点帮助,谢谢了。
作者: net_robber    时间: 2008-07-07 15:04
库版本不对

开发环境和运行环境不一样吧?
作者: gtbml    时间: 2008-07-07 15:37
标题: 回复 #2 net_robber 的帖子
环境是换了,以前是在aix中编译的,现在修改了一下Makefile文件,想在Linux中编译,使程序能支持多平台的。能具体说说还需要修改那些地方么?
作者: gtbml    时间: 2008-07-08 16:04
没有人碰到相关的问题么?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2