以下是我运行项目的环境,该项目包含C和CPP代码。
uname-a:
SunOS nzdrb12z 5.11 11.4.40.107.3 sun4v sparc sun4v非全球区域
cc-V:
抄送:Studio 12.6 SunC 5.15 SunOS_sparc 2017/05/30
目前面临以下错误,
CURRENT ERROR:
ld: fatal: file /opt/developerstudio12.6/OracleDeveloperStudio12.6-solaris-sparc-bin/developerstudio12.6/lib/compilers/sparcv9/libCCexcept.so.1: wrong ELF class: ELFCLASS64
ld: fatal: file bcPLogon.o: wrong ELF class: ELFCLASS64
ld: fatal: file bcSecurity.o: wrong ELF class: ELFCLASS64
ld: fatal: file bcPAccessCheck.o: wrong ELF class: ELFCLASS64
ld: fatal: file bcPEncryption.o: wrong ELF class: ELFCLASS64
ld: fatal: file bcPAuthentication.o: wrong ELF class: ELFCLASS64
ld: fatal: file bcPSecurityObjects.o: wrong ELF class: ELFCLASS64
ld: fatal: file bcPCEnc.o: wrong ELF class: ELFCLASS6
在此之前,我遇到了一个类似于下面提到的错误,
ld: fatal: file bcPACplacebo.o: wrong ELF class: ELFCLASS32
所以我在makefile中做了如下更改,
MakeDefaults.Solaris64(主makefile(下
CC_MEMORY_MODEL_64=-m64
CC_MEMORY_MODEL_32=-m32
COMPILEFLAGS=-c-DSOLARIS$(CC_MEMORY_MODEL_64($(COMMONFLAGS($(ROGUEFLAGS(-D_REENTRANT$(CC_OPTIONAL_FLAGS(-xO3-xuiltin=%all-xibmil-errtags-erroff nondvarargw-mt-std=c++14
C_FLAGS=-C-DSOLARIS$(CC_MEMORY_MODEL_32($(COMMONFLAGS($(ROGUEFLAGS(-D_REENTRANT$(CC_OPTIONAL_FLAGS(-xO3-xbuiltin=%all-xibmil-errtags-erroff nondvarargw-mt
在只有几个c文件的安全模块下(即bcPACplent.c(,我在makefile 中做了以下更改
bcPAC安慰剂.o:bcPAC安慰剂.c
cc $(C_FLAGS) -D_HPUX -DCHECK_PASSWORD bcPACplacebo.c -c -o bcPACplacebo.o
编译后,我开始面临CURRENT ERROR:,我没想到可能有很多对象需要在64和32之间进行区分。
问题:我知道这可能是重复的,但我没有从所有线程中找到有效的答案。但以下是我的问题,
- 如何一劳永逸地解决这个错误的ELF类错误
- 由于我是makefile脚本的新手,所以我不太清楚如何将对象标记为32和64。或者有没有更好的方法来解决这个问题。非常感谢您的帮助
您不能将32位&编译时的64位对象-程序必须是一个或另一个的全部-在所有命令中使用-m32或在所有命令中将使用-m64。