2011-07-31 7 views
1

정적 라이브러리 용 빌드를 한 위치에 배치했습니다. 이제 내 소스를 빌드 할 때 inter 라이브러리 호출에 대해 UNDEFINED REFERENCES이 표시됩니다.순환 링크 된 정적 라이브러리 (linux) 정의되지 않은 라이브러리

/home/xyz/lib/libA.a(ClassA.a) : 예를 들어 정의되지 않은 참조 classB.a 여기

classB::funB()에도 정적 라이브러리이다. 내 소스의 프로젝트 파일에서

정적 연결 순서는 다음과 같습니다

LIBS+= -lclassB -lclassA 

내가 라이브러리를 반대 할 때 이제 기능이 들어 라이브러리 A.

답변

2

내부 호출을 위해 내가 라이브러리 B의 클래스에 오류가 시작 주문 이런 종류의 상황이 일반적으로 필요합니다.

LIBS += -lclassA -lclassB -lclassA 

클래스 A 라이브러리를 두 번 연결하면 순환 종속성을 해결하는 데 도움이됩니다.

0

친구 나는 해결책을 찾았습니다.

gcc에서 qmake 빌드 도구를 사용하고 있었는데, qmake에 정적 라이브러리 중 일부가 순환 적으로 의존한다는 것을 알 필요가 있습니다.

그래서 내가 GCC의 문서는 --start-그룹 --end 그룹 사이에 아카이브 이름을 둘 필요가 있다고

QMAKE_LFLAGS += -Wl , --start-group --end-group 

qmake를 링커 플래그 내 .PRO 파일을 수정하지만, 스마트 qmake를하다 종속 라이브러리를 찾을 수있을만큼 충분하며 자동으로 그렇게 할 것입니다.

재미 있습니다.

관련 문제