티스토리 뷰
mariadb-10.0.19 를 mips로 cross-compile 하면서 발생 된 문제를 몇가지 기록해봅니다.
일단 개발서버 환경은 32bit, 타겟은 mips(64bit) 입니다.
기본적으로 mariadb 소스를 받으면 BUILD 폴더 밑에 mips관련 configure가 있지만..
위 환경에서는 정상적인 동작을 못하는듯.. 그래서 하나하나 error를 잡아가며 compile을 시도 했습니다.
1) 컴파일은 일반 버전(?)과 동일하게 컴파일 폴더를 만들고 그 폴더 내에서 cmake를 진행합니다.
- 단, CC, CXX 등은 환경에 맞는 컴파일러를 사용합니다.
- 제 경우 개발서버 환경이 32bit 머신이기 때문에 n32 옵션 사용. 이 옵션은 gcc, gcc+ 양쪽에 다 들어가야 합니다.
2) cmake 시에 불필요한 코드로 인한 에러는 잡을 필요가 없다고 판단되어 생략하도록 옵션을 줬습니다.
- -DWITH_UNIT_TESTS=OFF
3) 정상적인 cross-compile을 위해 아래 옵션이 필요 했습니다. (타겟과 환경이 맞지 않는다는 에러가 나옴)
- -DXTRADB_OK=1
3) cmake 이후 make를 수행할때 아래와 같이 수행하면 자세한 내용을 볼 수 있습니다.
- make VERBOSE=1
4) 기본적으로 cross-compile을 위해서는 정상 컴파일 된 x86 버전(혹은 그와 유사한)이 필요합니다.
"/bin/sh: ./comp_err: cannot execute binary file" 와 같은 에러가 발생하게 됩니다.
이때는 x86에서 컴파일해서 나온 바이너리로 덮어쓰고 다시 make를 진행합니다.
-. /bin/sh: ./comp_err: cannot execute binary file
make도중 나온 binary를 갖고 뭔가를 또 수행하려는 듯 한데, 제 경우 서버는 x86이기 때문에 필요했습니다.
중간중간 같은 문제가 여러번 나오는데 동일하게 해결하도록 합니다.
5) 그리고.. 최종적으로 99%에서 mysqld 생성 도중 에러가 나오는 경우....... gcc 버전업이 필요 했습니다.
지금까지는 4.1, 4.3버전을 사용했었는데 이때는 built-in(__sync_lock_test_and_set와 같은..) 된게 cross-compile에는 지원이 안되서.. 결국 4.7로 업그레이드.. 다른 더 좋은 방법이 있는지는 모르겠네요.
'개발 > Compile error' 카테고리의 다른 글
- Total
- Today
- Yesterday