【问题标题】:problems with linking protobuf library [closed]链接protobuf库的问题[关闭]
【发布时间】:2013-02-03 16:13:57
【问题描述】:

我不熟悉makefile,这是我的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 $@

clean:
    rm -f *.o 
    rm -f $(TARGET)

当我运行 make -f Make 时,我得到了这些错误。

**@**:./$ make -f Makefile
gcc -g -I/usr/include  -g -lprotobuf-c -L/usr/lib  sample_client.c lsp.o lspmessage.pb-c.o   -o sample_client
lspmessage.pb-c.o: In function `lspmessage__get_packed_size':
./lspmessage.pb-c.c:19: undefined reference to `protobuf_c_message_get_packed_size'
lspmessage.pb-c.o: In function `lspmessage__pack':
./lspmessage.pb-c.c:26: undefined reference to `protobuf_c_message_pack'
lspmessage.pb-c.o: In function `lspmessage__pack_to_buffer':
./lspmessage.pb-c.c:33: undefined reference to `protobuf_c_message_pack_to_buffer'
lspmessage.pb-c.o: In function `lspmessage__unpack':
/home/**/Downloads/CSCE662/HW/skeleton-code/lspmessage.pb-c.c:41: undefined reference to `protobuf_c_message_unpack'
lspmessage.pb-c.o: In function `lspmessage__free_unpacked':
./lspmessage.pb-c.c:50: undefined reference to `protobuf_c_message_free_unpacked'
collect2: error: ld returned 1 exit status
make: *** [sample_client] Error 1

我不知道原因。谢谢!

【问题讨论】:

  • 天哪!我不相信!!我使用-lprotobuf 并省略了-c! :(

标签: protocol-buffers


【解决方案1】:

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,请参阅此问题 How to use LDFLAGS in makefile

【讨论】:

  • 谢谢!在命令行中运行此命令后,没有与未定义的“protobuf_c_message_get_packed_size”引用相关的错误。所以 Makefile 不正确?如何更正 Makefile?
  • 在我运行这个命令后 "gcc -g -I/usr/include -g sample_client.c lsp.o lspmessage.pb-c.o -o sample_client -L/usr/lib -lprotobuf-c" ,我想调试这个程序,(gdb)sample_client,但是我得到了这个,(gdb)sample_client 未定义的命令:“sample_client”。试试“帮助”。好像没有生成可执行文件。
猜你喜欢
  • 1970-01-01
  • 2016-11-27
  • 2016-05-19
  • 2021-01-01
  • 2014-07-17
  • 1970-01-01
  • 2011-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多