2011-02-27 4 views
2

a1.cpp a2.cpp와 같은 여러 소스 파일에서 라이브러리를 만들고 싶습니다. 나는 'g ++ -o libcode -c a1.cpp a2.cpp'명령을 사용했다. 그러나 오류 팝업 "여러 파일과 함께 -c 또는 -S와 함께 -o를 지정할 수 없습니다".여러 소스에서 라이브러리를 컴파일하려면

일반적으로 여러 소스에서 어떻게 이러한 라이브러리를 빌드해야합니까? 감사합니다 ...

+0

http://www.network-theory.co.uk/docs/gccintro/gccintro_79.html

은 무엇 leonbloy -c'이 이해가되지 않습니다'와 -o''결합 대답에 추가합니다. '-c'는 "출력을 생성하지 말고, 단지 바이너리 객체를 만듭니다"라고 말하고, "-o"는 "이것은 출력의 이름입니다"라고 말합니다. –

+0

'-o'와'-c'를 함께 사용하면 완벽한 의미를 갖습니다. , 나는 항상 그렇게한다. '-c' 플래그는 "컴파일하지만 링크하지 않습니다"를 의미합니다. g ++의 어떤 버전을 사용하고 있습니까? – Beta

+0

'-o'와'-c'는 (아마도) 객체 파일의 이름을 의미합니다. 그러나 여러 소스 파일 (및 여러 오브젝트 파일)이있는 경우 이는 의미가 없습니다. – leonbloy

답변

6

먼저 소스 파일을 오브젝트 파일 (*.o)로 컴파일 한 다음 ar 명령을 호출하여 라이브러리를 빌드하십시오. 귀하의 예 :

g++ -c a1.cpp a2.cpp 
    ar rcs libcode.a a1.o a2.o 

이것은 정적 라이브러리를 만들 것이며, 동적 라이브러리도 만들 수 있습니다.

http://tldp.org/HOWTO/Program-Library-HOWTO/static-libraries.html

관련 문제