Architecture Solaris上的链接器和体系结构类型错误

Architecture Solaris上的链接器和体系结构类型错误,architecture,linker,solaris,Architecture,Linker,Solaris,在我的solaris 64位计算机上,我通过链接3个对象文件drivermain.o(2)、testcol.o(3)和teststmt.o(3),创建了一个可执行文件“drivertest”(1)。我在命令中使用了-m64选项来创建64位可执行文件。当我试图运行可执行文件时,我得到错误“非法指令(内核转储)”。当我尝试使用dbx命令查看内核时,它会说“dbx:File`drivertest'不是ELF可执行文件”。我的可执行文件是64位的,那么为什么dbx不能与64位应用程序一起工作呢 另外,当

在我的solaris 64位计算机上,我通过链接3个对象文件drivermain.o(2)、testcol.o(3)和teststmt.o(3),创建了一个可执行文件“drivertest”(1)。我在命令中使用了-m64选项来创建64位可执行文件。当我试图运行可执行文件时,我得到错误“非法指令(内核转储)”。当我尝试使用dbx命令查看内核时,它会说“dbx:File`drivertest'不是ELF可执行文件”。我的可执行文件是64位的,那么为什么dbx不能与64位应用程序一起工作呢

另外,当我在可执行文件上运行ldd命令时,它会对几个依赖项(4)发出“未找到文件”错误,所有这些依赖项都位于/export/home/builds/pc9x_root/960/build/powrmart/pmbuild/bin/SunOS.64.r(5)中,并且该目录包含在使用setenv命令导出的LD_LIBRARY_路径中。 为什么这种情况也会发生

(1)
CC -G -m64 -o drivertest SunOS.64.r/drivermain.o SunOS.64.r/testcol.o SunOS.64.r/teststmt.o  \
 -L/export/home/builds/pc9x_root/960/build/powrmart/pmbuild/bin/SunOS.64.r -L/databases/oracle10.2.0_64BIT/lib -L/export/home/builds/pc9x_root/960/repo/third-party-libs/ACE/ace -L/export/home/builds/pc9x_root/960/build/powrmart/pmbuild/bin/SunOS.64.r  \
 -lpmcuti -lpmasrt -lpmser -lpmi18n -lpmdec -lpmodl -lclntsh -lpmicudata -lpmicui18n -lpmicuio -lpmicuuc -lpmsdkcmn



(2)
CC +w +w2 -mt -features=extensions -erroff=doubunder -m64 -O  -KPIC -m64 -D_REENTRANT -DRW_MULTI_THREAD -DRW_NO_STL -DRW_BCB_NEW_IOSTREAMS -DPM_64BIT -DFD_SETSIZE=65536 -DUNIX -DSunOS -DINFA_PREFIX -I. -I/export/home/builds/pc9x_root/960/build/powrmart/server/dwriter -I/export/home/builds/pc9x_root/960/build/powrmart/server/dwriter/wrtfile -I/export/home/builds/pc9x_root/960/build/powrmart/server/include -I/export/home/builds/pc9x_root/960/build/powrmart/server/include/cef -I/export/home/builds/pc9x_root/960/build/powrmart/server/dmapper/trans -I/export/home/builds/pc9x_root/960/build/powrmart/server/dmapper/scrub -I/export/home/builds/pc9x_root/960/build/powrmart/server/dreader -I/export/home/builds/pc9x_root/960/build/powrmart/server/cmnutils -I/export/home/builds/pc9x_root/960/build/powrmart/common/cmnmisc -I/export/home/builds/pc9x_root/960/repo/third-party-libs/mitkerberos/include -I/export/home/builds/pc9x_root/960/repo/third-party-libs/CURL/include -I/export/home/builds/pc9x_root/960/repo/third-party-libs/OPENSSL/include -I/export/home/builds/pc9x_root/960/repo/third-party-libs/PMTL_PC -I/export/home/builds/pc9x_root/960/repo/third-party-libs/STLPORT_INCLUDE/stlport -I/export/home/builds/pc9x_root/960/repo/third-party-libs/ICU/include -I/export/home/builds/pc9x_root/960/repo/third-party-libs/ICU/source/common \
        -c /home/devops/drivertest/drivermain.cpp -o SunOS.64.r/drivermain.o

(3)            
CC +w +w2 -mt -features=extensions -erroff=doubunder -m64 -O  -KPIC -m64 -D_REENTRANT -DRW_MULTI_THREAD -DRW_NO_STL -DRW_BCB_NEW_IOSTREAMS -DPM_64BIT -DFD_SETSIZE=65536 -DUNIX -DSunOS -DINFA_PREFIX -I. -I/export/home/builds/pc9x_root/960/build/powrmart/server/dwriter -I/export/home/builds/pc9x_root/960/build/powrmart/server/dwriter/wrtfile -I/export/home/builds/pc9x_root/960/build/powrmart/server/include -I/export/home/builds/pc9x_root/960/build/powrmart/server/include/cef -I/export/home/builds/pc9x_root/960/build/powrmart/server/dmapper/trans -I/export/home/builds/pc9x_root/960/build/powrmart/server/dmapper/scrub -I/export/home/builds/pc9x_root/960/build/powrmart/server/dreader -I/export/home/builds/pc9x_root/960/build/powrmart/server/cmnutils -I/export/home/builds/pc9x_root/960/build/powrmart/common/cmnmisc -I/export/home/builds/pc9x_root/960/repo/third-party-libs/mitkerberos/include -I/export/home/builds/pc9x_root/960/repo/third-party-libs/CURL/include -I/export/home/builds/pc9x_root/960/repo/third-party-libs/OPENSSL/include -I/export/home/builds/pc9x_root/960/repo/third-party-libs/PMTL_PC -I/export/home/builds/pc9x_root/960/repo/third-party-libs/STLPORT_INCLUDE/stlport -I/export/home/builds/pc9x_root/960/repo/third-party-libs/ICU/include -I/export/home/builds/pc9x_root/960/repo/third-party-libs/ICU/source/common \
        -c /home/devops/drivertest/testcol.cpp -o SunOS.64.r/testcol.o

(4)
CC +w +w2 -mt -features=extensions -erroff=doubunder -m64 -O  -KPIC -m64 -D_REENTRANT -DRW_MULTI_THREAD -DRW_NO_STL -DRW_BCB_NEW_IOSTREAMS -DPM_64BIT -DFD_SETSIZE=65536 -DUNIX -DSunOS -DINFA_PREFIX -I. -I/export/home/builds/pc9x_root/960/build/powrmart/server/dwriter -I/export/home/builds/pc9x_root/960/build/powrmart/server/dwriter/wrtfile -I/export/home/builds/pc9x_root/960/build/powrmart/server/include -I/export/home/builds/pc9x_root/960/build/powrmart/server/include/cef -I/export/home/builds/pc9x_root/960/build/powrmart/server/dmapper/trans -I/export/home/builds/pc9x_root/960/build/powrmart/server/dmapper/scrub -I/export/home/builds/pc9x_root/960/build/powrmart/server/dreader -I/export/home/builds/pc9x_root/960/build/powrmart/server/cmnutils -I/export/home/builds/pc9x_root/960/build/powrmart/common/cmnmisc -I/export/home/builds/pc9x_root/960/repo/third-party-libs/mitkerberos/include -I/export/home/builds/pc9x_root/960/repo/third-party-libs/CURL/include -I/export/home/builds/pc9x_root/960/repo/third-party-libs/OPENSSL/include -I/export/home/builds/pc9x_root/960/repo/third-party-libs/PMTL_PC -I/export/home/builds/pc9x_root/960/repo/third-party-libs/STLPORT_INCLUDE/stlport -I/export/home/builds/pc9x_root/960/repo/third-party-libs/ICU/include -I/export/home/builds/pc9x_root/960/repo/third-party-libs/ICU/source/common \
        -c /home/devops/drivertest/teststmt.cpp -o SunOS.64.r/teststmt.o

(5)
psrux902b1% ldd drivertest
    libpmcuti.so =>  (file not found)
    libpmasrt.so =>  (file not found)
    libpmser.so =>   (file not found)
    libpmi18n.so =>  (file not found)
    libpmdec.so =>   (file not found)
    libpmodl.so =>   (file not found)
    libclntsh.so.10.1 =>     /databases/oracle10.2.0_64BIT/lib/libclntsh.so.10.1
    libpmicudata.so.32 =>    /export/home/builds/pc9x_root/960/repo/third-party-libs/ICU/lib/libpmicudata.so.32
    libpmicui18n.so.32 =>    /export/home/builds/pc9x_root/960/repo/third-party-libs/ICU/lib/libpmicui18n.so.32
    libpmicuio.so.32 =>      /export/home/builds/pc9x_root/960/repo/third-party-libs/ICU/lib/libpmicuio.so.32
    libpmicuuc.so.32 =>      /export/home/builds/pc9x_root/960/repo/third-party-libs/ICU/lib/libpmicuuc.so.32
    libpmsdkcmn.so =>        (file not found)
    libnnz10.so =>   /databases/oracle10.2.0_64BIT/lib/libnnz10.so
    libkstat.so.1 =>         /lib/64/libkstat.so.1
    libnsl.so.1 =>   /lib/64/libnsl.so.1
    libsocket.so.1 =>        /lib/64/libsocket.so.1
    libgen.so.1 =>   /lib/64/libgen.so.1
    libdl.so.1 =>    /lib/64/libdl.so.1
    libsched.so.1 =>         /usr/lib/64/libsched.so.1
    libaio.so.1 =>   /lib/64/libaio.so.1
    librt.so.1 =>    /lib/64/librt.so.1
    libm.so.2 =>     /lib/64/libm.so.2
    libc.so.1 =>     /lib/64/libc.so.1
    libpthread.so.1 =>       /lib/sparcv9/libpthread.so.1
    libmp.so.2 =>    /lib/64/libmp.so.2
    libmd.so.1 =>    /lib/64/libmd.so.1
    libscf.so.1 =>   /lib/64/libscf.so.1
    libdoor.so.1 =>  /lib/64/libdoor.so.1
    libuutil.so.1 =>         /lib/64/libuutil.so.1
    /platform/SUNW,T5240/lib/sparcv9/libc_psr.so.1
    /platform/SUNW,T5240/lib/sparcv9/libmd_psr.so.1


(6)
psrux902b1% ls /export/home/builds/pc9x_root/960/build/powrmart/pmbuild/bin/SunOS.64.r/libpmasrt.so
/export/home/builds/pc9x_root/960/build/powrmart/pmbuild/bin/SunOS.64.r/libpmasrt.so
psrux902b1% ls /export/home/builds/pc9x_root/960/build/powrmart/pmbuild/bin/SunOS.64.r/libpmser.so
/export/home/builds/pc9x_root/960/build/powrmart/pmbuild/bin/SunOS.64.r/libpmser.so
psrux902b1%  ls /export/home/builds/pc9x_root/960/build/powrmart/pmbuild/bin/SunOS.64.r/libpmi18n.so
/export/home/builds/pc9x_root/960/build/powrmart/pmbuild/bin/SunOS.64.r/libpmi18n.so
psrux902b1%  ls /export/home/builds/pc9x_root/960/build/powrmart/pmbuild/bin/SunOS.64.r/libpmdec.so
/export/home/builds/pc9x_root/960/build/powrmart/pmbuild/bin/SunOS.64.r/libpmdec.so
psrux902b1% ls /export/home/builds/pc9x_root/960/build/powrmart/pmbuild/bin/SunOS.64.r/libpmodl.so
/export/home/builds/pc9x_root/960/build/powrmart/pmbuild/bin/SunOS.64.r/libpmodl.so

您可能可以使用
文件(1)
来检查对象/可执行文件是什么类型的ELF二进制文件。如果您尝试混合32b和64b ELF对象,它将不起作用(即,如果libpmcuti.so是32b对象,而您的可执行文件是64b)。还要确保LD_LIBRARY_路径已实际导出。由于您使用-m64,您的工具链似乎默认为32b:dbx也可能是32b,并且无法处理64b可执行文件?

file命令说/usr/bin/dbx为32位,但是我在哪里可以找到64位dbx?Studio的dbx命令足够智能,如果它检测到您希望它在64位文件上运行,就可以从$STUDIOHOME/prod/bin/$MACH64重新执行它自己。在Solaris上,dbx附带Studio编译器-您使用的是哪个编译器版本的dbx?