본문 바로가기

크로스컴파일러2

동적 라이브러리 SO의 체크섬이 달라지는 이유 개발 환경을 테스트하는 도중, 오브젝트 파일은 똑같은데 왜 그걸 합친 SO 파일이 체크섬이 다른 케이스가 나타났다. 왜 다를까? ​ 이해가 되지 않는다. 그래서 각 다른 개발 환경에서 빌드 한 so를 헥사 에디터로 비교해 봤다. 헥사 에디터로는 내용 분석이 어려워서 readelf로 분석을 다시 하기로 했다. 첫 헤더는 정상이고, 아래로 내려보니 메모리맵에 로드되는 함수 순서가 서로 다른 것이 나타났다. 위치만 바뀌어서 메모리 주소도 변경되었지만 그 외 차이점은 보이지 않았다. 그럼 왜 메모리 로드되는 순서가 바뀌었을까? 설마 하고 빌드 되는 내역을 다시 조사했다. 빌드 하기 전에 이전 오브젝트 파일을 삭제를 하는데 여기서부터 차이점이 나타났다. 파일 순서가 바뀌었다. makefile 을 살펴보니 rm 을.. 2021. 12. 18.
크로스컴파일러 개발환경 구축에 대한 팁 개발서버가 다른 PC로 이전하는 바람에 크로스 컴파일러는 전부 옮기는 일이 발생했다. ​우분투 OS 버전도 20 버전대로 올라갔고, i7 CPU에서 제온으로 향상되었다. ​ 컴파일러도 전부 옮기고 파일도 옮기고, 개발 환경에 필요한 SVN , SAMBA, NFS, TFTP 등을 설치하고 계정을 만들고 정신이 없었다. ​ 그리고 마지막으로 개발 환경을 구축하고 잘 빌드 되는지, 같은 소스로 같은 파일이 나오는지 테스트를 하는데.... 체크섬이 다른 문제가 나타났다. 같은 컴파일러, 같은 소스인데 결과가 다르다? 우선 문제를 찾기 위해 다음과 같이 비교했다. 1. 소스코드와 Makefile 이 같은지 비교 1차로 소스가 같은지 비교를 했다. 완전히 똑같았다. 2. 각 소스별 .o (Object) 파일 비교 .. 2021. 12. 18.