(makefile) ld에서 라이브러리에 들어있는 entry 참조하기

송지석의 이미지

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
이런 에러가 나네요...

어떻게 하면 될까요?