문제

외부 컴파일 된 객체 Coreset.o를 사용하여 프로그램을 컴파일하려고했습니다. 나는 public01.c 테스트 파일을 작성했으며 내 함수는 computation.c에 있습니다. 그러나 함께 연결하는 데 실패했습니다. 문제가 무엇 일 수 있습니까?

gcc -o public01.x public01.o computation.o coreset.o
ld: fatal: file coreset.o: wrong ELF class: ELFCLASS64
ld: fatal: File processing errors. No output written to public01.x
collect2: ld returned 1 exit status
도움이 되었습니까?

해결책

Coreset.o는 64 비트로 컴파일되었으며 32 비트 계산과 연결하고 있다고 생각합니다.

'-m64'플래그로 computation.c를 다시 컴파일하려고 시도 할 수 있습니다. GCC (1)

다른 팁

컴파일 모드를 선택하려면 '-m32'또는 '-m64'를 지정할 수 있습니다.

AutoConf (configure) 스크립트를 처리 할 때, 나는 일반적으로 모든 것이 올바른 비트로 컴파일되도록 환경에서 cc = "gcc -m64"(또는 cc = "gcc -m32")를 설정합니다. 적어도, 일반적으로 ... 사람들은 그 일이 잘되지 않는 끝없는 방법을 찾지 만 타율은 매우 높습니다 (95%이상).

내가 사용하고 있던 컴파일러 버전은 Coreset.o로 수행 된 컴파일 버전과 일치하지 않았다.

하나는 32 비트이고 다른 하나는 64 비트였습니다. 다른 사람이 비슷한 문제가 발생할 경우이 문제를 해결하겠습니다.

객체 파일이 64 비트 도구 체인에서 컴파일 된 것처럼 보이며 32 비트 도구 체인을 사용하고 있습니다. 객체 파일을 32 비트 모드로 다시 컴파일하려고 했습니까?

sudo apt-get install ia32-libs 
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top