Default style (Cherry Eve). Switch styles (Capricorn). Atom Feed Calendar
http://developers.sun.com.cn/blog/BennyLuo/date/20070828 星期二 八月 28, 2007

项目中AIX移植到Solaris上所碰到问题及解决方法

上星期在做海南方面的一个项目,客户用C++开发的64位应用程序,里面涉及Oracle9, Tuxedo 8.1,原来运行在AIX平台上,现在尝试把应用程序移植到Solaris平台上,由于之前测试环境还未装好Solaris 10和Sun studio 11, 所以我们只能使用旧的操作系统Solaris 9和Sun workshop 6 update 2.

首先碰到的问题是客户移植了应用过来,但在编译的时候却碰到:

  ld: fatal: file CASH_BILL.o: wrong ELF class: ELFCLASS64
ld: fatal: File processing errors. No output written to CASH_BILL

这个问题看起来是64位应用和32位应用不兼容的问题,检查了客户应用程序,Oracle library, Tuxedo.

对待客户应用程序的目标文件:

file *.o

C_DB_ERRMSG_PROCESS.o: ELF 64-bit MSB relocatable SPARCV9 Version 1 C_OCCI_DBACCESS.o: ELF 64-bit MSB relocatable SPARCV9 Version 1

对应客户的静态链接库:

elfdump libbobase.a

ELF Header

ei_magic: { 0x7f, E, L, F } ei_class: ELFCLASS64

ei_data: ELFDATA2MSB e_machine: EM_SPARCV9

e_version: EV_CURRENT e_type: ET_REL

e_flags: [ EF_SPARCV9_TSO ]

..........

对应Oracle打命令file *.so:

libskgxp9.so: ELF 64-bit MSB dynamic lib SPARCV9 Version 1, dynamically linked, not stripped libskgxpd.so: ELF 64-bit MSB dynamic lib SPARCV9 Version 1, dynamically linked, not stripped

libskgxpu.so: ELF 64-bit MSB dynamic lib SPARCV9 Version 1, dynamically linked, not stripped libtracepls9.so: ELF 64-bit MSB dynamic lib SPARCV9 Version 1, dynamically linked, not stripped libvppdc.so:

................

 

对应Tuxedo打 file *.so:

libjconv.so: ELF 32-bit MSB dynamic lib SPARC Version 1, dynamically linked, not stripped

libticudata.so: ELF 32-bit MSB dynamic lib SPARC Version 1, dynamically linked, not stripped

libticui18n.so: ELF 32-bit MSB dynamic lib SPARC Version 1, dynamically linked, not stripped

libticuuc.so: ELF 32-bit MSB dynamic lib SPARC Version 1, dynamically

.................

和客户聊过后,知道Tuxedo是以32位形式装的,应该是32位Tuxedo和64位应用不兼容,于是叫客户下载64位Tuxedo安装,并重新设置环境和重编译.

ELFClass64得以解决,但却碰到新的一堆Undefined Symbol问题:

在Tuxedo调用buildserver命令时使用Workshop CC编译器时发现

 

make -f ./Makefile SVC="CASH_BILL,REVERSE_BILL,BAL_TRANSFER,AUTO_BILLING,ROLL_BAL_TRANS,DISP_DEPOSIT" OBJS="CASH_BILL.o" EXE=CASH_BILL build_server

=======[ CASH_BILL ]=======
buildserver -f "-AA" -o CASH_BILL -v -s CASH_BILL,REVERSE_BILL,BAL_TRANSFER,AUTO_BILLING,ROLL_BAL_TRANS,DISP_DEPOSIT -f "CASH_BILL.o" -f "-L/acct/tibs_bill/public  -llocalpublic -L/acct/tibs_bill/component  -lcomponent -L/acct/tibs_bill/bointerface/lib  -lbobase -L/acct/tibs_bill/bointerface/lib  -lbohandler -L/acct/tibs_bill/bointerface/lib  -lbohelper"  -f "-L/oracle9i/OraHome1/lib/ -L/oracle9i/OraHome1/rdbms/lib/ -L/acct/tibs_bill/bointerface/lib -locci9 -lclntsh `cat /oracle9i/OraHome1/lib/sysliblist` -lm"  -f "-lmcci -lnon_ws_mcci -ltxml"
cc -xarch=v9 -w  -I$TUXDIR/include -o CASH_BILL BS-1771.c  -L${TUXDIR}/lib -AA CASH_BILL.o -L/acct/tibs_bill/public  -llocalpublic -L/acct/tibs_bill/component  -lcomponent -L/acct/tibs_bill/bointerface/lib  -lbobase -L/acct/tibs_bill/bointerface/lib  -lbohandler -L/acct/tibs_bill/bointerface/lib  -lbohelper -L/oracle9i/OraHome1/lib/ -L/oracle9i/OraHome1/rdbms/lib/ -L/acct/tibs_bill/bointerface/lib -locci9 -lclntsh -lnsl -lsocket -lgen -ldl -lm -lmcci -lnon_ws_mcci -ltxml  -ltux -lbuft   -lfml -lfml32 -lengine -R/usr/lib/lwp -lpthread -lposix4 -lsocket -lnsl
Undefined                       first referenced
 symbol                             in file
__1cG__CrunKpure_error6F_v_         /acct/tibs_bill/component/libcomponent.a(C_OCCI_DBACCESS.o)
__1cDstdGvector4CpnPT_DUEADJUSTINFO_n0AJallocator4C2___2G6Mrk3_r3_ /acct/tibs_bill/bointerface/lib/libbohelper.a(Billoccitype.o)
__1cGoracleEocciJgetVector4nPT_REVERSERECORD__6Frkn0BHAnyData_rnDstdGvector4CpTAn0EJallocator4C7_____v_ /acct/tibs_bill/bointerface/lib/libbohelper.a(Billoccitype.o)
__1cDstdNbasic_ostream4Ccn0ALchar_traits4Cc___2l6MI_r1_ /acct/tibs_bill/bointerface/lib/libbobase.a(DOMTreeErrorReporter.o)
__1cGoracleEocciJsetVector4nLT_STAFFINFO__6Frn0BHAnyData_rknDstdGvector4CpTAn0EJallocator4C6_____v_ /acct/tibs_bill/bointerface/lib/libbohelper.a(Billoccitype.o)
__1cGC_DateItoString6Mpc_1_         /acct/tibs_bill/component/libcomponent.a(C_DEPOSIT_CONFER_PROCESS.o)
__1cGoracleEocciJgetVector4nNT_PAYMENTPLAN__6Frkn0BHAnyData_rnDstdGvector4CpTAn0EJallocator4C7_____v_ /acct/tibs_bill/bointerface/lib/libbohelper.a(Billoccitype.o)
__1cDstdGvector4CpnTT_BALANCESOURCEINFO_n0AJallocator4C2___2G6Mrk3_r3_ /acct/tibs_bill/bointerface/lib/libbohelper.a(Billoccitype.o)
__1cDstdGvector4CpnYT_BALANCEITEMGROUPMEMBER_n0AJallocator4C2___M__insert_aux6Mp2rk2_v_ /acct/tibs_bill/component/libcomponent.a(C_BALANCE_FEE_COMPARE.o)
__1cGoracleEocciJgetVector4nTT_ACCTBALANCEDETAIL__6Frkn0BHAnyData_rnDstdGvector4CpTAn0EJallocator4C7_____v_ /acct/tibs_bill/bointerface/lib/libbohelper.a(Billoccitype.o)
__1cDstdGvector4CpnST_CONFERRULEDETAIL_n0AJallocator4C2___M__insert_aux6Mp2rk2_v_ /acct/tibs_bill/component/libcomponent.a(C_DEPOSIT_CONFER_PROCESS.o)
__1cLNumber2cSTR6FrknGoracleEocciGNumber__pc_ /acct/tibs_bill/component/libcomponent.a(C_INVOICE_INTERFACE_PROCESS.o)
__1cDstdGvector4CpnNT_PAYMENTPLAN_n0AJallocator4C2___M__insert_aux6Mp2rk2_v_ /acct/tibs_bill/component/libcomponent.a(C_PAYMENT_PLAN_PROCESS.o)
__1cDstdMout_of_range2T6M_v_        CASH_BILL.o
__1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___2G6Mpkc_r1_ CASH_BILL.o
__1cDstdGvector4CpnOT_DUEPRICERULE_n0AJallocator4C2___M__insert_aux6Mp2rk2_v_ /acct/tibs_bill/component/libcomponent.a(C_DUE_MGR_PROCESS.o)
__1cDstdGvector4CpnPT_TRUSTSENDINFO_n0AJallocator4C2___M__insert_aux6Mp2rk2_v_ /acct/tibs_bill/component/libcomponent.a(C_INVOICE_BILL_PROCESS.o)
__1cDstdGvector4CpnNT_PAYMENTINFO_n0AJallocator4C2___M__insert_aux6Mp2rk2_v_ /acct/tibs_bill/component/libcomponent.a(C_ACCT_BALANCE_MGR.o)
__1cDstdGvector4CpnPT_TRUSTBANKINFO_n0AJallocator4C2___M__insert_aux6Mp2rk2_v_ /acct/tibs_bill/component/libcomponent.a(C_DB_TRUST_BANK.o)
__1cGoracleEocciJsetVector4nUT_PAYMENTMETHODGROUP__6Frn0BHAnyData_rknDstdGvector4CpTAn0EJallocator4C6_____v_ /acct/tibs_bill/bointerface/lib/libbohelper.a(Billoccitype.o)
__1cDstdEcopy4CppnGT_ROLE_C3_6FTA4TB_5_ /acct/tibs_bill/component/libcomponent.a(C_STAFF_AUTH_PROCESS.o)
__1cGoracleEocciJgetVector4nPT_BALANCEPAYOUT__6Frkn0BHAnyData_rnDstdGvector4CpTAn0EJallocator4C7_____v_ /acct/tibs_bill/bointerface/lib/libbohelper.a(Billoccitype.o)
__1cGoracleEocciJsetVector4nRT_DAILYREPORTINFO__6Frn0BHAnyData_rknDstdGvector4CpTAn0EJallocator4C6_____v_ /acct/tibs_bill/bointerface/lib/libbohelper.a(Billoccitype.o)
__1cDstdEcopy4CppnKT_BILLINFO_C3_6FTA4TB_5_ /acct/tibs_bill/component/libcomponent.a(C_ACCT_BALANCE_MGR.o)
__1cDstdGvector4CpnKT_PLATFORM_n0AJallocator4C2___M__insert_aux6Mp2rk2_v_ /acct/tibs_bill/component/libcomponent.a(C_DEPOSIT_CONFER_PROCESS.o)
__1cG__CrunIex_alloc6FL_pv_         CASH_BILL.o
__1cDstdGvector4CpnUT_PAYMENTMETHODGROUP_n0AJallocator4C2___2G6Mrk3_r3_ /acct/tibs_bill/bointerface/lib/libbohelper.a(Billoccitype.o)
__1cG__CrunIex_throw6Fpvpkn0AQstatic_type_info_pF1_v_v_ CASH_BILL.o
__1cGoracleEocciJgetVector4nOT_BILLINGCYCLE__6Frkn0BHAnyData_rnDstdGvector4CpTAn0EJallocator4C7_____v_ /acct/tibs_bill/bointerface/lib/libbohelper.a(Billoccitype.o)
__1cDstdGvector4CpnOT_RETURNOBJECT_n0AJallocator4C2___2G6Mrk3_r3_ /acct/tibs_bill/bointerface/lib/libbohelper.a(Billoccitype.o)
__1cGoracleEocciJsetVector4nST_VALBALANCEDETAIL__6Frn0BHAnyData_rknDstdGvector4CpTAn0EJallocator4C6_____v_ /acct/tibs_bill/bointerface/lib/libbohelper.a(Billoccitype.o)
__1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___2G6Mrk1_r1_ CASH_BILL.o
__1cDstdZ__RTTI__1nDstdJexception__ CASH_BILL.o
__1cMfreeHashList6FppnGlist_s__v_   /acct/tibs_bill/component/libcomponent.a(C_DB_DUE_MGR_PROCESS.o)
__1cGoracleEocciJsetVector4nPT_BALANCEPAYOUT__6Frn0BHAnyData_rknDstdGvector4CpTAn0EJallocator4C6_____v_ /acct/tibs_bill/bointerface/lib/libbohelper.a(Billoccitype.o)
__1cDstdEcopy4CppnUT_CONDITIONREFOBJECT_C3_6FTA4TB_5_ /acct/tibs_bill/component/libcomponent.a(C_ACCT_BALANCE_MGR.o)
__1cDstdGvector4CpnQT_REPRINTINVOICE_n0AJallocator4C2___M__insert_aux6Mp2rk2_v_ /acct/tibs_bill/component/libcomponent.a(C_BILL_PROCESS.o)
__1cDstdObasic_ofstream4Ccn0ALchar_traits4Cc___2T6M_v_ /acct/bea/tuxedo/tuxedo8.1/lib/libtxml.so
__1cGoracleEocciJsetVector4nTT_INVOICERECORDINFO__6Frn0BHAnyData_rknDstdGvector4CpTAn0EJallocator4C6_____v_ /acct/tibs_bill/bointerface/lib/libbohelper.a(Billoccitype.o)
__1cGoracleEocciJgetVector4nST_VALBALANCEDETAIL__6Frkn0BHAnyData_rnDstdGvector4CpTAn0EJallocator4C7_____v_ /acct/tibs_bill/bointerface/lib/libbohelper.a(Billoccitype.o)
__1cGoracleEocciJgetVector4nTT_INVOICERECORDINFO__6Frkn0BHAnyData_rnDstdGvector4CpTAn0EJallocator4C7_____v_ /acct/tibs_bill/bointerface/lib/libbohelper.a(Billoccitype.o)

.............

这一堆错误大概有四百多个都是在客户自己生成的静态链接库里面的目标文件找不到一些函数,估计是把目标文件打包成静态链接库出现了问题,于是检查makefile, 发现:

发现Makefile里面打包时使用了ar的命令

AR=ar -r

而根据Workshop的Manual,是建议使用CC的选项-xar来打包的,所以改为:

AR=CC -xar -o
#AR=ar -r

然后重新编译, 发现少了一大堆错误, 但依然存在其他的错误:

make -f ./Makefile SVC="GET_FEE_INFO,GET_FEE_DETAIL,BILL_QUERY,PAYMENT_QUERY,GET_BAL_SRC,GET_VAL_BALANCE,GET_CONFER_INFO,BILL_HISTORY,REPRINT_QUERY" OBJS="CASH_ASSISTANT.o" EXE=CASH_ASSISTANT build_server

=======[ CASH_ASSISTANT ]=======
buildserver -f "-AA" -o CASH_ASSISTANT -v -s GET_FEE_INFO,GET_FEE_DETAIL,BILL_QUERY,PAYMENT_QUERY,GET_BAL_SRC,GET_VAL_BALANCE,GET_CONFER_INFO,BILL_HISTORY,REPRINT_QUERY -f "CASH_ASSISTANT.o" -f "-L/acct/tibs_bill/public  -llocalpublic -L/acct/tibs_bill/component  -lcomponent -L/acct/tibs_bill/bointerface/lib  -lbobase -L/acct/tibs_bill/bointerface/lib  -lbohandler -L/acct/tibs_bill/bointerface/lib  -lbohelper"  -f "-L/oracle9i/OraHome1/lib/ -L/usr/lib/sparcv9/ -lCrun -lCstd -L/oracle9i/OraHome1/rdbms/lib/ -locci9 -lclntsh `cat /oracle9i/OraHome1/lib/sysliblist` -lm"  -f "-lmcci -lnon_ws_mcci -ltxml"
cc -xarch=v9 -w  -I$TUXDIR/include -o CASH_ASSISTANT BS-398c.c  -L${TUXDIR}/lib -AA CASH_ASSISTANT.o -L/acct/tibs_bill/public  -llocalpublic -L/acct/tibs_bill/component  -lcomponent -L/acct/tibs_bill/bointerface/lib  -lbobase -L/acct/tibs_bill/bointerface/lib  -lbohandler -L/acct/tibs_bill/bointerface/lib  -lbohelper -L/oracle9i/OraHome1/lib/ -L/usr/lib/sparcv9/ -lCrun -lCstd -L/oracle9i/OraHome1/rdbms/lib/ -locci9 -lclntsh -lnsl -lsocket -lgen -ldl -lm -lmcci -lnon_ws_mcci -ltxml  -ltux -lbuft   -lfml -lfml32 -lengine -R/usr/lib/lwp -lpthread -lposix4 -lsocket -lnsl
Undefined                       first referenced
 symbol                             in file
__1cGC_DateItoString6Mpc_1_         /acct/tibs_bill/component/libcomponent.a(C_DEPOSIT_CONFER_PROCESS.o)
__1cLNumber2cSTR6FrknGoracleEocciGNumber__pc_ /acct/tibs_bill/component/libcomponent.a(C_INVOICE_INTERFACE_PROCESS.o)
__1cMfreeHashList6FppnGlist_s__v_   /acct/tibs_bill/component/libcomponent.a(C_DB_DUE_MGR_PROCESS.o)
__1cDstdObasic_ofstream4Ccn0ALchar_traits4Cc___2T6M_v_ /acct/bea/tuxedo/tuxedo8.1/lib/libtxml.so
__1cDstdNbasic_ostream4Ccn0ALchar_traits4Cc___Fwrite6Mpkcl_r1_ /acct/bea/tuxedo/tuxedo8.1/lib/libtxml.so
__1cMinitHashList6FpppnGlist_s__v_  /acct/tibs_bill/component/libcomponent.a(C_DB_DUE_MGR_PROCESS.o)
__1cG__CrunKvector_des6FpvLLpF1_v_v_ /acct/bea/tuxedo/tuxedo8.1/lib/libticuuc.so
__1cG__CrunKvector_del6FpvLpF1_v_1_ /opt/SUNWspro/WS6U2/lib/v9/libCstd.a(locale.o)
__1cGC_Date2t6M_v_                  /acct/tibs_bill/component/libcomponent.a(C_DEPOSIT_CONFER_PROCESS.o)
__1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___2t6Mrk1LLrkn0C__v_ /oracle9i/OraHome1/lib//libocci9.a(occiEnvImpl.o)
__1cGC_Date2T6M_v_                  /acct/tibs_bill/component/libcomponent.a(C_DEPOSIT_CONFER_PROCESS.o)
__1cG__CrunKvector_new6FpvLLpF1_vp2_1_ /opt/SUNWspro/WS6U2/lib/v9/libCstd.a(locale.o)
__1cGC_Date2d6Mrk0_i_               /acct/tibs_bill/component/libcomponent.a(C_DB_DUE_MGR_PROCESS.o)
__1cGC_Date2h6Mrk0_b_               /acct/tibs_bill/component/libcomponent.a(C_STAFF_AUTH_PROCESS.o)
__1cDstdObasic_ofstream4Ccn0ALchar_traits4Cc___Fclose6M_v_ /acct/bea/tuxedo/tuxedo8.1/lib/libtxml.so
__1cOsearchHashList6FppnGlist_s_pcpvpFpkv6_i_4_ /acct/tibs_bill/component/libcomponent.a(C_DB_DUE_MGR_PROCESS.o)
__1cGC_Date2t6Mpc1_v_               /acct/tibs_bill/component/libcomponent.a(C_STAFF_AUTH_PROCESS.o)
__1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___M__sun_concat6kMrk1_1_ /oracle9i/OraHome1/lib//libocci9.a(occiEnvImpl.o)
__1cOinsertHashList6FppnGlist_s_pkcpvi_i_ /acct/tibs_bill/component/libcomponent.a(C_DB_DUE_MGR_PROCESS.o)
__1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___M__sun_concat6kMpkc_1_ /oracle9i/OraHome1/lib//libocci9.a(occiEnvImpl.o)
__1cGC_DateKgetCurDate6M_v_         /acct/tibs_bill/component/libcomponent.a(C_DEPOSIT_CONFER_PROCESS.o)
__1cGC_DateHdiffMon6Mr0_i_          /acct/tibs_bill/component/libcomponent.a(C_CONDITION_MGR.o)
__1cGC_DateGaddDay6Mi_v_            /acct/tibs_bill/component/libcomponent.a(C_STAFF_AUTH_PROCESS.o)
__1cDstdObasic_ofstream4Ccn0ALchar_traits4Cc___Eopen6Mpkcil_v_ /acct/bea/tuxedo/tuxedo8.1/lib/libtxml.so
__1c2N6FL_pv_                       /opt/SUNWspro/WS6U2/lib/v9/libCstd.a(ios.o)
__1cDstdObasic_ofstream4Ccn0ALchar_traits4Cc___2t6M_v_ /acct/bea/tuxedo/tuxedo8.1/lib/libtxml.so
ld: fatal: Symbol referencing errors. No output written to CASH_ASSISTANT
CMDTUX_CAT:1832: ERROR: can't execute cc -xarch=v9 -w  -I$TUXDIR/include -o CASH_ASSISTANT BS-398c.c  -L${TUXDIR}/lib -AA CASH_ASSISTANT.o -L/acct/tibs_bill/public  -llocalpublic -L/acct/tibs_bill/component  -lcomponent -L/acct/tibs_bill/bointerface/lib  -lbobase -L/acct/tibs_bill/bointerface/lib  -lbohandler -L/acct/tibs_bill/bointerface/lib  -lbohelper -L/oracle9i/OraHome1/lib/ -L/usr/lib/sparcv9/ -lCrun -lCstd -L/oracle9i/OraHome1/rdbms/lib/ -locci9 -lclntsh -lnsl -lsocket -lgen -ldl -lm -lmcci -lnon_ws_mcci -ltxml  -ltux -lbuft   -lfml -lfml32 -lengine -R/usr/lib/lwp -lpthread -lposix4 -lsocket -lnsl
*** Error code 1
make: Fatal error: Command failed for target `build_server'
Current working directory /latn/acct/tibs_bill/server
*** Error code 1
make: Fatal error: Command failed for target `CASH_ASSISTANT'

使用命令:

nm (object or library) | grep Symbol | c++filt

可以看出一些基本的C++标准库没找到,所以又在makefile里面的CFLAGS里面加入了:

-library=iostream -library=Cstd -library=Crun

这样重新编译,就只剩下两个错误:

 

make -f ./Makefile SVC="CASH_BILL,REVERSE_BILL,BAL_TRANSFER,AUTO_BILLING,ROLL_BAL_TRANS,DISP_DEPOSIT" OBJS="CASH_BILL.o" EXE=CASH_BILL build_server

=======[ CASH_BILL ]=======
CFLAGS="-g -mt -xarch=v9a -library=iostream -library=Cstd -library=Crun" buildserver -o CASH_BILL -v -s CASH_BILL,REVERSE_BILL,BAL_TRANSFER,AUTO_BILLING,ROLL_BAL_TRANS,DISP_DEPOSIT -f "CASH_BILL.o" -f "/latn/acct/tibs_bill/public/*.o"  -f "-L/latn/acct/tibs_bill/public  -llocalpublic -L/latn/acct/tibs_bill/component  -lcomponent -L/latn/acct/tibs_bill/bointerface/lib  -lbobase -L/latn/acct/tibs_bill/bointerface/lib  -lbohandler -L/latn/acct/tibs_bill/bointerface/lib  -lbohelper"  -f "-L/oracle9i/OraHome1/lib/ -L/oracle9i/OraHome1/lib/ -locci9 -lclntsh `cat /oracle9i/OraHome1/lib/sysliblist` -lm"  -f "-lmcci -lnon_ws_mcci -ltxml"
CC -xarch=v9 -w -g -mt -xarch=v9a -library=iostream -library=Cstd -library=Crun -I$TUXDIR/include -o CASH_BILL BS-362a.c  -L${TUXDIR}/lib CASH_BILL.o /latn/acct/tibs_bill/public/*.o -L/latn/acct/tibs_bill/public  -llocalpublic -L/latn/acct/tibs_bill/component  -lcomponent -L/latn/acct/tibs_bill/bointerface/lib  -lbobase -L/latn/acct/tibs_bill/bointerface/lib  -lbohandler -L/latn/acct/tibs_bill/bointerface/lib  -lbohelper -L/oracle9i/OraHome1/lib/ -L/oracle9i/OraHome1/lib/ -locci9 -lclntsh -lnsl -lsocket -lgen -ldl -lm -lmcci -lnon_ws_mcci -ltxml  -ltux -lbuft   -lfml -lfml32 -lengine -R/usr/lib/lwp -lpthread -lposix4 -lsocket -lnsl
Undefined                       first referenced
 symbol                             in file
std::basic_string<char,std::char_traits<char>,std::allocator<char> >std::basic_string<char,std::char_traits<char>,std::allocator<char> >::__sun_concat(const std::basic_string<char,std::char_traits<char>,std::allocator<char> >&)const /oracle9i/OraHome1/lib//libocci9.a(occiEnvImpl.o)
std::basic_string<char,std::char_traits<char>,std::allocator<char> >std::basic_string<char,std::char_traits<char>,std::allocator<char> >::__sun_concat(const char*)const /oracle9i/OraHome1/lib//libocci9.a(occiEnvImpl.o)
ld: fatal: Symbol referencing errors. No output written to CASH_BILL
CMDTUX_CAT:1832: ERROR: can't execute CC -xarch=v9a -w -g -mt -library=iostream -library=Cstd -library=Crun -I$TUXDIR/include -o CASH_BILL BS-362a.c  -L${TUXDIR}/lib CASH_BILL.o /latn/acct/tibs_bill/public/*.o -L/latn/acct/tibs_bill/public  -llocalpublic -L/latn/acct/tibs_bill/component  -lcomponent -L/latn/acct/tibs_bill/bointerface/lib  -lbobase -L/latn/acct/tibs_bill/bointerface/lib  -lbohandler -L/latn/acct/tibs_bill/bointerface/lib  -lbohelper -L/oracle9i/OraHome1/lib/ -L/oracle9i/OraHome1/lib/ -locci9 -lclntsh -lnsl -lsocket -lgen -ldl -lm -lmcci -lnon_ws_mcci -ltxml  -ltux -lbuft   -lfml -lfml32 -lengine -R/usr/lib/lwp -lpthread -lposix4 -lsocket -lnsl
*** Error code 1
make: Fatal error: Command failed for target `build_server'
Current working directory /latn/acct/tibs_bill/server
*** Error code 1
make: Fatal error: Command failed for target `CASH_BILL'

但这两个错误看起来也是C++标准库里面的函数,我们已经把这个库Link到程序中去了,所以感觉应该象是个BUG,就查了下sunsolve.sun.com, 发觉还真有Patch可以解决这个bug.

111685-24
另外还有Oracle所推荐的一堆Patch都没打:
 
111679-14 Patch for Forte Developer 6 update 2 C compiler 
111681-01 Patch for Forte Developer 6 update 2 Performance Analyzer 
111685-24 Forte Developer 6 update 2 C++ compiler 
115117-04(包含 ) Forte Developer 6 update 2: Patch for Debugger 
111690-03 Forte Developer 6 udpate 2: Fortran 
111691-07 Forte Developer 6 update 2 FORTRAN 77 5.3 compiler 
111678-04 Forte Developer 6 update
 
Sun总是会定时地颁布最新的patch来修证系统或工具的bug,所以大家一定要及时更新啊.
 
另外,Forte已经是非常旧的开发工具,相信如果使用Solaris 10和Sun studio 11,一定可以减少很多麻烦.
经协调后,客户也非常赞同用一台新的机器装上Solaris 10和Sun studio 11重新编译,目前系统正在
安装中.
过程写的比较简单,只是做个纪录为了自己在以后的移植过程中更加方便,同时也让大家做个参考,如果
碰到同样的问题,可以知道如何解决.

Comments:

说的很对!

Posted by 数据恢复 on 八月 28, 2007 at 11:51 上午 GMT+08:00 #

去海南了?

Posted by qyjohn on 八月 29, 2007 at 04:14 下午 GMT+08:00 #

没有, Remote support, 呵呵

Posted by Benny Luo on 八月 29, 2007 at 11:45 下午 GMT+08:00 #

事实证明在最后的Solaris 10和Sun studio 11的选择下,我们的移植很顺利,省去了之前的许多烦恼,呵呵,强烈建议大家以后使用Solaris 10, Sun studio 11, netbeans 5.5

Posted by Benny Luo on 九月 02, 2007 at 12:43 上午 GMT+08:00 #

Post a Comment:
  • HTML Syntax: NOT allowed