使用gcc二进制问题构建:错误的ELF类:Solaris上的ELFCLASS32

时间:2016-11-22 13:42:18

标签: gcc cross-compiling solaris ld ldd

我需要构建一个在Solaris 8 64位系统上运行的简单应用程序。 Solaris系统正在生产中,并且没有安装开发人员包。

为此目的,我维护(经过以下手册和实验的努力)在Fedora 24 64位机器上构建一个gcc交叉编译器,并成功构建了一个在目标Solaris机器上运行良好的hello world程序。

实际需要的应用程序在包含和库之后经过长时间的研究后也成功构建。

不幸的是,由于ld链接了错误的库,应用程序无法在目标系统上运行,它试图加载32位和64位libdga.so.1:

ldd getIdleTime_sparc
        libX11.so.4 =>   /usr/lib/64/libX11.so.4
        libXext.so.0 =>  /usr/lib/64/libXext.so.0
        libdga.so.1 =>   /usr/openwin/lib/libdga.so.1  - wrong ELF class: ELFCLASS32
        libc.so.1 =>     /usr/lib/64/libc.so.1
        libsocket.so.1 =>        /usr/lib/64/libsocket.so.1
        libnsl.so.1 =>   /usr/lib/64/libnsl.so.1
        libdl.so.1 =>    /usr/lib/64/libdl.so.1
        libdga.so.1 =>   /usr/openwin/lib/sparcv9/libdga.so.1
        libmp.so.2 =>    /usr/lib/64/libmp.so.2
        /usr/platform/SUNW,UltraSPARC-IIi-Engine/lib/sparcv9/libc_psr.so.1

我没有成功找到如何排除这个错误的ELF。

任何建议和帮助表示赞赏。 最好的问候。

0 个答案:

没有答案