我有幾個需要編譯的文件。 這裏是命令。 sample_client.c依賴於lsp.o.現在我改變了lsp.c和lsp.h.我該如何編譯才能將此更改有效地轉換爲lsp.o?如何使用gcc編譯多個文件
主要功能是在sample_client.c中,lsp.c沒有主函數。
gcc -g -I/usr/include -g sample_client.c lsp.o lspmessage.pb-c.o -o sample_client -L/usr/lib -lprotobuf-c
這裏是我的makefile,
CC = gcc
TARGET = sample_client sample_server
CFLAGS += -g -I/usr/include
LDFLAGS += -g -lprotobuf-c -L/usr/lib
all: $(TARGET)
$(TARGET): lsp.o lspmessage.pb-c.o
%.o: %.c
$(CC) -c $(CFLAGS) $< -o [email protected]
clean:
rm -f *.o
rm -f $(TARGET)
然而,lprotobuf-C無法正確鏈接。
運行make -f Makefile文件 我可以得到以下,
lspmessage.pb-c.o: In function `lspmessage__get_packed_size':
...: undefined reference to `protobuf_c_message_get_packed_size'
lspmessage.pb-c.o: In function `lspmessage__pack':
...: undefined reference to `protobuf_c_message_pack'
我知道我可以運行此命令,
的gcc -g -I/usr/include目錄-g sample_client.c lsp.o lspmessage.pb-co -o sample_client -L/usr/lib -lprotobuf -c
但是如果我更改lsp.c和lsp.h?
使用makefile。 – flup
對不起,我不知道如何使用makefile。我用makefile更新了我的問題。對不起,我對此並不熟悉。 – user2036452
努力嘗試,因爲那是做它的方式 –