以前都是用java写写代码,对C/C++有很多东西不熟悉,请多多指教.本人操作数据库的方法是用OTLV4 操作数据库的,在windows和inux下均没有问题,但是移植到solaris就链接文件出现问题,弄了好久没整好.
我的solaris是32位的,用到的开发包是: 
instantclient-sdk-solaris-x86-6432-10.2.0.2-20060526.zip 
instantclient-basic-solaris-x86-6432-10.2.0.2-20060526.zip 
看上去这个包好像是32和64位机器都可以用, 
instantclient-basic-solaris-x86-6432-10.2.0.2-20060526.zip 解压后只有一个版本(没有分32或64位)的.so文件 我是用这些包的方法是:
     直接解压到一个目录,然后包含库文件和头文件 进行编译连接 现象:
        WIN/LINUX没有问题
        solaris下:编译没有问题 ,链接时候出现问题    
g++ -I/export/home/youray/Downloads/oracle/include -g -L/usr/local/lib -L/export/home/youray/Downloads/oracle/lib  -lstdc++ -lm -lc -lnsl -lsocket -lpthread  -lociei  -lclntsh -lnnz10 -locci  -o MPM DataSource.o DBAccess.o SessionData.o SYS_COM_IPT.o TimerUtil.o WelcomeSM.o WelcomeSMDao.o 
Undefined first referenced 
symbol      in file 
__1cG__CrunKpure_error6F_v_        /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdbC__RTTI__1nDstdMlength_error__ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdMout_of_range2T6M_v_        /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___2G6Mpkc_r1_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdLlogic_error2t6Mrkn0AMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc_____v_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cG__CrunIex_alloc6FI_pv_        /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cG__CrunIex_throw6Fpvpkn0AQstatic_type_info_pF1_v_v_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___2G6Mrk1_r1_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___2t6MpkcIrkn0C__v_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cH__rwstdV__null_string_ref_rep4CcnDstdLchar_traits4Cc__n0BJallocator4Cc__n0AQ__string_ref_rep4n0D____2t6M_v_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cH__rwstdRexcept_msg_string2t6MIE_v_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___2t6Mpkcrkn0C__v_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___2T6M_v_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cH__rwstdbC__rwse_StringIndexOutOfRange_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdZ__RTTI__1nDstdJbad_alloc__ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___Gassign6Mrk1II_r1_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cG__CrunRex_chk_unexpected6F_v_  /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cH__rwstdX__rwse_InvalidSizeParam_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdJbad_alloc2t6M_v_          /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cH__rwstdbB__rwse_PosBeyondEndOfString_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cH__rwstdUInterlockedDecrement6Fpl_l_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cH__rwstdUInterlockedIncrement6Fpl_l_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdbC__RTTI__1nDstdMout_of_range__ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdLlogic_error2T6M_v_        /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___I__getRep6MII_pnH__rwstdM__string_ref4Ccn0B_n0C____ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cH__rwstdTInterlockedExchange6Fpll_l_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdJallocator4Cc_2t6M_v_      /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdMlength_error2t6Mrkn0AMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc_____v_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cH__rwstdY__rwse_UnexpectedNullPtr_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___2t6Mrk1IIrkn0C__v_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdMlength_error2T6M_v_        /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdMout_of_range2t6Mrkn0AMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc_____v_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cG__CrunGex_get6F_pv_            /export/home/youray/Downloads/oracle/lib/libocci.so 
__1c2n6FIpv_0_                      /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdJexceptionG__vtbl_          /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdJbad_allocG__vtbl_          /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cG__CrunMex_rethrow_q6F_v_      /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___Hcompare6kMIIpkcI_i_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cH__rwstdX__rwse_ResultLenInvalid_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cG__CrunSregister_exit_code6FpG_v_v_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cG__CrunHex_skip6F_b_            /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___Hreplace6MIIpkcIII_pc_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___I__unLink6M_v_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cG__CrunIex_clean6F_v_          /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cG__CrunKex_rethrow6F_v_        /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cDstdbB__RTTI__1nDstdLlogic_error__ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1cH__rwstdRexcept_msg_stringGmsgstr6kM_pkc_ /export/home/youray/Downloads/oracle/lib/libocci.so 
__1c2k6Fpv0_v_                      /export/home/youray/Downloads/oracle/lib/libocci.so 
c::c(N6,  (int0_t))                /export/home/youray/Downloads/oracle/lib/libocci.so 
c::c(n6,  (int0_t))                /export/home/youray/Downloads/oracle/lib/libocci.so 
__1c2K6Fpv_v_                      /export/home/youray/Downloads/oracle/lib/libocci.so 
__1c2k6Fpv_v_                      /export/home/youray/Downloads/oracle/lib/libocci.so 
ld: fatal: symbol referencing errors. No output written to MPM 
collect2: ld returned 1 exit status疑问:
        1:请问使用这个包时候需要定义宏来标识是32位还是64的吗? 
        2:下面这些错误说的是什么意思(回答越具体越好)
            3:希望能提供UNIX下使用OTL操作oracle的环境注意事项
经过不懈努力 找了点眉目: 
我回到linux下,查了下oracle instantclient中提供包的依赖如下: 
[root@localhost instantclient_10_2]# ldd -r  libocci.so 
        libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x40115000) 
        libm.so.6 => /lib/tls/libm.so.6 (0x401c8000) 
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x401ea000) 
        libc.so.6 => /lib/tls/libc.so.6 (0x42000000) 
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) [root@localhost instantclient_10_2]# ldd -r libclntsh.so 
        libnnz10.so => not found 
        libdl.so.2 => /lib/libdl.so.2 (0x40e03000) 
        libm.so.6 => /lib/tls/libm.so.6 (0x40e06000) 
        libpthread.so.0 => /lib/tls/libpthread.so.0 (0x40e28000) 
        libnsl.so.1 => /lib/libnsl.so.1 (0x40e35000) 
        libc.so.6 => /lib/tls/libc.so.6 (0x42000000) [root@localhost instantclient_10_2]# ldd -r libociei.so 
        libclntsh.so.10.1 => not found 
        libdl.so.2 => /lib/libdl.so.2 (0x44539000) 
        libm.so.6 => /lib/tls/libm.so.6 (0x4453c000) 
        libpthread.so.0 => /lib/tls/libpthread.so.0 (0x4455e000) 
        libnsl.so.1 => /lib/libnsl.so.1 (0x4456c000) 
        libc.so.6 => /lib/tls/libc.so.6 (0x44581000) 
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) [root@localhost instantclient_10_2]# ldd -r libnnz10.so 
        libc.so.6 => /lib/tls/libc.so.6 (0x42000000) 
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) 
而我在solaris中用这样的方式没找到和上面类似的这些依赖。 
所以我个人认为应该是solair环境没整好。 
问题:
1:不知道是不是缺少补丁?缺少什么补丁?知道的可以告诉我下。 
2:安装solaris 的instantclient 这些东西我应该注意什么?需要那些包?
(
linux下面有:
oracle-instantclient-basic-10.2.0.3-1.i386.rpm 
oracle-instantclient-devel-10.2.0.3-1.i386.rpm
instantclient-sdk-linux32-10.2.0.3-20061115.zip
instantclient-basic-linux32-10.2.0.3-20061115.zip我的solaris是32位的,用到的开发包是: 
instantclient-sdk-solaris-x86-6432-10.2.0.2-20060526.zip 
instantclient-basic-solaris-x86-6432-10.2.0.2-20060526.zip 
我在官网上没找到*.rpm包。对这俩包的使用方法是我只是简单的解压,然后把库和头文件添加到makefile中,这样做有问题?
)实在不行我自己把环境重新安装下.

解决方案 »

  1.   

    http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/solx86soft.html试试这里的
      

  2.   

    经过反复校验 问题被搞定了
    这是因为OTLV4用的是oci的库,在makefile中我把occi和oci的库都加进去了,删掉多余的就没有问题了
    solaris下的链接很严格 ,在linux喝Windows下面没有这样的问题