2013-03-21 3 views
0

Я пытаюсь сделать простой архив с помощью следующего Makefile:Невозможно создать простой архив

INC :=-Ilibs/rapidxml-1.13 

all: 
    $(CXX) -c $(INC) -o dove.o dove.hpp 
    ar rvs libdove.a dove.o 
    ranlib libdove.a   

clean: 
    rm -f dove.o libdove.a 

файл dove.hpp имеет #include "rapidxml.hpp", который вы можете увидеть, я указываю на конкретную rapidxml во время компиляции , Цель make all выполняется до завершения, но 1) выходной файл dove.o является массивным (19MB!), Когда rapidxml + dove.hpp составляет только около 150K, а 2) ни конечный файл libdove.a, ни dove.o не могут использоваться объектов:

[[email protected] dove]$ nm dove.o 
nm: dove.o: File format not recognized 
[[email protected] dove]$ nm libdove.a 
nm: dove.o: File format not recognized 

[... in other project...] 
[[email protected] dove]$ g++ -o bin/AntHybrid build/*.o -L/home/hamiltont/foobar/dove -ldove 
/home/hamiltont/foobar/dove/libdove.a: could not read symbols: Archive has no index; run ranlib to add one 
collect2: ld returned 1 exit status 

ответ

0

Ах, очевидная ошибка. Я пытаюсь скомпилировать файл заголовка, а затем упаковать его в виде библиотеки. В то время как предварительно скомпилированные заголовки is possible, действительно нет никакой необходимости в make-файле в этом каталоге