首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Solaris上的链接器和体系结构类型错误

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

Stack Overflow用户
提问于 2013-12-08 20:40:48
回答 1查看 267关注 0票数 0

在我的Solaris64位机器上,我通过链接3个目标文件drivermain.o (2),testcol.o (3)和teststmt.o (3)创建了一个可执行文件"drivertest“(1)。我在命令中使用了-m64选项来创建64位可执行文件。当我尝试运行可执行文件时,我得到错误“非法指令(核心转储)”。当我尝试使用dbx命令查看内核时,它显示"dbx: File‘`drivertest’is not ELF executable“。我的可执行文件是64位的,那么为什么dbx不能与64位应用程序一起工作?

另外,当我在可执行文件上运行ldd命令时,对于几个依赖项(4),它给出了一个"file not file“错误,所有这些依赖项都在/export/home/builds/pc9x_root/960/build/powrmart/pmbuild/bin/SunOS.64.r (5)中,并且这个目录包含在使用setenv命令导出的LD_LIBRARY_PATH中。为什么还会发生这种情况呢?

代码语言:javascript
复制
(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
EN

回答 1

Stack Overflow用户

发布于 2013-12-08 20:57:47

您可能可以使用file(1)来检查对象/可执行文件是什么类型的ELF二进制文件。如果您试图混合32b和64bELF对象的,它将不会工作(例如,如果libpmcuti.so是32b对象,而您的可执行文件是64b)。还要确保实际导出的是LD_LIBRARY_PATH。因为你使用-m64,所以你的工具链看起来默认是32b : dbx也可能是32b,并且不能与64b可执行文件一起工作?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20453510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档