2015-01-04 3 views
1
Following is my directory structure 

calculator 
| 
|---src 
     (multiply.cpp sum.cpp) 
|---lib 

I am building a static library calc.a using following  
ar -rcs calc.a multiply.o sum.o 

calc.a는 현재 디렉토리에 빌드됩니다.정적 라이브러리를 현재 디렉토리가 아닌 다른 디렉토리에 저장하는 방법은 무엇입니까?

I trying calc.a to be put into lib folder not in current directory (i.e. src) 

인터넷 및 매뉴얼 페이지에서 검색했지만 찾을 수 없습니다. 아이디어가 있으십니까?

+0

lib 폴더가없는 경우 라이브러리를 만드는 동안 컴파일러 명령 줄 –

답변

2

당신은 lib 디렉토리에 라이브러리를 작성하는 명령 행 가장 쉬운 방법을 사용하고 있기 때문에 명시 적으로 그것을 할 수 있습니다 :

AR -rcs lib 디렉토리/libcalc.a multiply.o sum.o

Makefile을 사용하면보다 정교한 작업을 할 수 있지만 그때조차도 같은 일을합니다. 라이브러리 이름 앞에 경로를 추가하십시오. 중요

CC=g++ 
CFLAGS=-c -Wall 
LDFLAGS= 

SOURCES=src/main.cpp src/sum.cpp src/multiply.cpp 
OBJECTS=$(SOURCES:.cpp=.o) 
LIBRARY=lib/libcalc.a 
EXECUTABLE=main 

all: $(SOURCES) $(LIBRARY) $(EXECUTABLE) 

$(LIBRARY): $(OBJECTS) 
<tab>mkdir -p lib 
<tab>ar -rcs [email protected] $< 

$(EXECUTABLE): $(OBJECTS) 
<tab>$(CC) $(LDFLAGS) $(OBJECTS) -o [email protected] 

.cpp.o: 
<tab>$(CC) $(CFLAGS) $< -o [email protected] 

clean: 
<tab>rm -rf main lib/ src/*.o 

을 : 당신이 당신의 의견에 대한 추가 정보를 요구하기 때문에

, 내가 여기 당신이 시작하는 데 도움이 될 수있는 간단한 Makefile을 추가 모든 <tab>의 실제 탭으로 교체해야합니다 , Makefile 구문에 따라 필요합니다!

Makefile은 매우 유연하므로 문제가 매우 간단하고 특정하거나 수백만 개 또는 수백만 개의 소스 코드를 기반으로 많은 라이브러리 및 바이너리를 빌드하는 일반 및/또는 복잡한 파일 일 수 있습니다. 더 자세한 정보는 Makefile 문서를 검색하는 것이 좋습니다.

마지막으로, 라이브러리의 이름을 'libcalc.a'로 바꾸는 것이 좋습니다. 'lib'접두사는 Unix에서 표준이므로. 다른 유사한 표준이 다른 환경에도 적용됩니다.

+0

을 더 잘 추가하십시오. 저는 그것을 창조하고 나서 그것을 복사하고 싶었습니다. 어떤 명령을 사용해야합니까? – Suri

+0

위의 대답을 편집하여 시작하는 데 도움이되는 Makefile의 예를 포함 시켰습니다. 너무 커서 여기에 삽입 할 수 없습니다. –

+0

'ar' 명령 바로 앞에'lib' 디렉토리가 있는지 확인해도됩니다 : "mkdir -p lib; ar -rcs lib/libcalc.a multiply.o sum.o" –

관련 문제