'Darwin'에 해당되는 글 1건

  1. 2009.02.28 OS X에서의 Static linking시 crt0.o 문제
디스크 이미징 프로그램을 받아서 빌드하던 중 아래와 같은 에러가 났다.

ld_classic: can't locate file for: -lcrt0.o

즉 crt0.o를 찾지 못한다는 이야기인데 구글링해 보니 Apple Developer문서에 있는 내용이었다.

결론은 애플에서는 static링킹을 지원하지 않고 있으므로 가급적 dynamic linking을 사용하여 crt1.o를 링크하라는 내용이었다. 결국 그래서 Makefile에 있는 -static 옵션을 제거하고 동적으로 링킹해서 빌드를 했다.

그리고 반드시 static linking이 필요한 경우라면 Open Darwin에서 Csu 라는 모듈을 다운받아서 빌드후 crt0.o 를 사용하라고 한다. 단 이 모듈은 업데이트가 되지 않으므로 릴리즈 업데이트시 수동으로 빌드를 해 주어야 하는 단점이 있다.


다운받은 Csu module을 빌드할 때
export RC_ARCHS="ppc i386 ppc64 x86_64"
식으로 지정 후 make하면 원래 /usr/lib에 있던 기존 crt1.o와 같은 4가지 아키텍쳐를 지원하게 빌드 가능하다.

10.5.6에서 빌드한 Csu-75 결과물을 첨부파일로 올린다. tarball을 풀어서 crt0.o를 /usr/lib 에 집어넣고 빌드해 주거나 static 빌드하는 패키지에서 적당히 파일 링크를 추가하면 된다.
Posted by trip2me
,