2016-11-03 3 views
0

원래 두 개의 다른 어셈블러가 작성한 오브젝트 파일을 링크하려고합니다. 우리는 68332 프로세서 용의 오래된 MRI 어셈블러를 사용하여 객체 파일로 컴파일 된 일부 기존 어셈블리 코드를 가지고 있습니다. 우리는 GNU Binutils m68k v2.24로 새로운 응용 프로그램을 개발 중입니다. 변경하지 않고 이전 어셈블러에서 작성한 원래 오브젝트 파일을 사용하고 싶습니다. 이를 위해 빌드 환경을 구성했습니다. 역사적인 이유로 빌드 환경은 Srecord, ieee 및 ELF의 세 가지 출력 형식으로 연결됩니다. 이걸 실행할 때 Srecord 및 ieee 형식에 대한 오류없이 성공합니다.다른 유형의 오브젝트 파일 링크하기

하는 m68k-ELF-LD : 그러나, ELF 출력 형식, 나는 다음과 같은 오류가 발생하면 엘프 파일이 생성되지 않은 결과

파일

의 대상 특정 데이터를 병합하지 못했습니다.

나는이 오류 메시지의 의미를 먼저 이해하려고했지만 할 수 없었다. 누구든지 GNU Binutils가 오류 정의가 정의 된 곳을 가리킬만큼 충분한 문서를 알고 있다면이 점을 이해할 수있을 것이다.

실제로 대상을로드하고 Srecord 출력을 실행했습니다. 이전과 같은 많은 테스트를 통과 한 것으로 보이므로 어느 정도 실행되고있는 것처럼 보입니다.

Google의 기존 오브젝트 파일이 coff 형식 형식 일 수 있습니다. 나는 이것이 문제라고 생각할 것이다. coff 파일을 ELF 형식으로 변환 할 수있는 방법이 있습니까?

미리 도움을 주셔서 감사합니다.

답변

1

Google의 기존 오브젝트 파일이 coff 형식 형식 일 수 있습니다. 나는 이것이 문제라고 생각할 것이다. coff 파일을 ELF 형식으로 변환 할 수있는 방법이 있습니까?

objcopy은 형식을 변환하는 데 사용할 수 있습니다. 그러나 이렇게하려면 두 형식을 모두 이해하도록 구성해야합니다. objcopy --info (허용되는 형식은 objcopy --help 끝 부분에 나타남)을 사용하여 허용되는 형식을 확인할 수 있습니다.

objcopy이 필수 형식을 지원하지 않으면 binutils를 직접 빌드해야합니다.

+0

답변 해 주셔서 감사합니다. objcopy를 사용하여 형식을 변환하려고했지만 명백하게 이름이 올바르지 않았습니다. 올바른 형식이 elf32-m68k 일 때 ELF를 시도했습니다. 다른 사람들은 objdump를 -f 옵션과 함께 사용하여 레거시 파일의 전체 형식을 인쇄했습니다. 도와 주셔서 감사합니다. –

관련 문제