上星期在做海南方面的一个项目,客户用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。
--转自