2012-03-07 9 views
1

私は2つのファイルがあります。osm.hとosm.cppMakefileは - 静的ライブラリを作成するには

を私はMakefileので、「libosm.a」と呼ばれ、彼らから静的libが作成しようとしました。

私のcppとhファイルは動作しますが(私はMakefileなしでそれらをコンパイルしました)、Makefileは動作しません。これはMakefileのです:

CC = g++ 
RANLIB = ranlib 

LIBSRC = osm.cpp 
LIBOBJ=$(LIBSRC:.cpp=.o) 

CFLAGS = -Wall -g -O0 
LOADLIBES = -L./ 

OSMLIB = libosm.a 
TARGETS = $(OSMLIB) 

all: $(TARGETS) 

osm.o: osm.cpp osm.h 
    $(CC) -c osm.cpp -o osm.o 

$(TARGETS): $(LIBOBJ) 
    ar rcs $(OSMLIB) osm.o 
    ranlib $(OSMLIB) 

clean: 
    rm osm.o $(TARGETS) $(OSMLIB) $(LIBOBJ) 

depend: 
    makedepend -- $(CFLAGS) -- $(SRC) $(LIBSRC) 

、これは私が取得していますエラーの一部です:

osm.o: In function `_start': 
(.text+0x0): multiple definition of `_start' 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0 has invalid symbol index 11 
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 1 has invalid symbol index 12 

誰でも助けることができますか?

+0

も、このエラーメッセージを発行し、コマンドを入力してください。 –

+0

'osm.o:In funct ... 'の直前にあなたの質問を追加してください。エラーを生成するmakeによって開始されるコマンドでなければなりません。 –

答えて

3

私はこの1つのような単純なようにメイクファイルがちょうどGNUの組み込みルール作りと仕事

LIBSRC = osm.cpp 
OSMLIB = libosm.a 

CFLAGS = -Wall -g -O0 
LOADLIBES = -L./ 

$(OSMLIB): $(LIBSRC) 

を行うと確信しています。 実際にははCCにg++を設定したくありません。 の場合はgccになり、適切なバックエンドが選択されます。

注:お使いのmakeのビルトインルールを確認するために、これを使用する:

make -pn -f /dev/null 
関連する問題