남의 라이브러리를 이용하여 컴파일을 할 경우, 막힐때가 있다.
이번에 막힌건 남의 라이브러리를 사용하여 개발을 할때에
/라이브러리경로/라이브러리이름.a: could not read symbols: File format not recognized
라는 에러가 나온 경우이다.
에러의 원인을 몰라서 검색을 계속 하던중, 64비트로 컴파일 된것이 아닌가 라는 생각이
들었고, 아는분에게 물어봤는데
>file 아카이브.a
나
>objdump -a 아카이브.a
를 해보라는 것이었다.
file이라는 명령어는 Determine file type of FILEs 이라하고
objdump라는 명령어는 Display information from object <file(s)>라고한다.
정확히는 모르겠고, 화일의 정보를 보여주는 명령어들로 이해했는데 ㅎ
여기서 이런 명령들을 실행한 결과
File format not recognized
라는 에러가 계속 나왔고,
>ar -x 아카이브.a
라는 명령어를 실행하여 아카이브 파일을 벗긴후, file, objdump를 실행한 결과
file 명령을 실행했을 때에
ELF 64-bit LSB relocatable, AMD x86-64, version 1 (SYSV), not stripped
라는 메세지가 출력되었다.
>file 파일이름.o
문제점이 발견된것이다.
발생한 문제점은 해당 라이브러리가 64비트로 컴파일이 되었다는것이었고,
32비트로 개발중이었던 나는 당연히 에러를 볼수 밖에없던것이었다.
다음에 이런일이 생겨도 멋지게 해결했으면...
ps. 아카이브 파일 벗기기
>ar -x 아카이브.a
아카이브 파일 만들기
>ld -G -o 아카이브.so *.o
[출처] 남의 라이브러리 컴파일시 막힐 경우|작성자 갑힐드
출처 : http://blog.naver.com/jchaney/40039471216
'System > Linux' 카테고리의 다른 글
라이브러리 만들기 (0) | 2016.04.22 |
---|---|
Make 기반 빌드 시스템: Makefile 기초 (0) | 2016.04.22 |
repo 명령어 (command) 설명 (0) | 2016.03.25 |
Vim Vi 헥사 뷰어, 헥사 에디터 모드 명령어; Hex Viewer Hex Editor, xxd (0) | 2016.03.24 |
우분투 프린터(Ubuntu Printer) 설치 (0) | 2016.03.21 |