2012-09-18 4 views
0

내 프로그램에서 하나의 클래스를 사용할 수있는 라이브러리를 만들고 싶습니다.이 클래스를 A라는 식으로 호출 할 수 있습니다.이 클래스는 몇 가지 다른 메서드 (B와 C)를 사용합니다. .cpp 파일에 .hpp 개의 파일이 포함되어 있습니다.모든 .o 파일을 라이브러리에 저장해야합니까?

빌드 프로세스는 다음과 같이 진행됩니다

g++ -c B.cpp 
g++ -c C.cpp 
g++ -c A.cpp 

ar rvs A.a *.o 

을 이렇게하면 내 다른 프로젝트는 이제 내 클래스, A.hppA.a를 포함하는 파일이 필요합니다. 정적 라이브러리를 제대로 만들고 있습니까? 아카이브 (라이브러리)에 A.o 만 넣어야합니까 (오류가 발생합니까?)

그냥 참조를 위해, 이것은 클래스를 사용하여 프로그램을 컴파일하는 방법입니다

g++ test1.cpp A.a -o test1 

편집 : 암시 A.a 내 프로그램을 연결하는 링커를 알 수있는 방법은 무엇입니까? 그냥 수동으로 iostream과 연결할 필요가없는 것처럼 ...

+0

지금하는 방식대로 작동합니까? –

+0

라이브러리를 사용하는 객체 파일 다음에 라이브러리를 배치하는 한 괜찮습니다. 라이브러리를 먼저 넣으면 링커는 라이브러리에서 정의 된 심볼을 찾지 못합니다 (라이브러리를 스캔 할 때 해당 심볼을 찾을 필요가 없음을 알았 기 때문에). –

+0

@KerrekSB 예, 맞습니다. 그리고 제발, 편집을 참조하십시오. – corazza

답변

2

이제 어떻게 할 수 있을까요? 모든 오브젝트 파일을 정적 라이브러리에 저장하십시오.

관련 문제