(makefile) ld에서 라이브러리에 들어있는 entry 참조하기
글쓴이: 송지석 / 작성시간: 목, 2006/11/09 - 3:32오전
ld가 참 어렵네요
makefile을 손보고 있습니다.
그런데 ld가 속을 썩이네요
ld로 링크할 때 *.a 라이브러리들로만 링크하고 싶은데 잘 안됩니다.
예를 들어 하위 디렉토리가 3개인 프로젝트를 관리합니다.
각각 dev work util 인데요 그 아래에 각각 Makefile이 있고
각 하위 디렉토리에서 make하면 .a 라이브러리가 만들어집니다.
상위에서는 하위디렉토리들을 빌드하고 최종적으로 만들어진 .a 파일들만 모아서 링크하려고 합니다.
그런데 실행파일의 시작포인트인 entry는 dev 아래의 소스중 하나에 있고 이것을 .o를 가지고 링크하면 잘 되는데, 라이브러리로 묶어서 .a로 만들고 그것을 링크하면 entry를 못찾겠다면서 에러납니다.
gcc dev/*.o libwork.a libutil.a -nostartfiles -nostdlib -lgcc -Tmy.ld -o a
이렇게 실행하면 되고
gcc libdev.a libwork.a libutil.a -nostartfiles -nostdlib -lgcc -Tmy.ld -o a
이렇게 하면 안됩니다.
ld: warning: cannot find entry symbol _my_entry_point; not setting start address
이런 에러가 나네요...
어떻게 하면 될까요?
Forums:
댓글 달기