0
我想编译几个使用msgpack-c函数到一个共享库的.c文件。我有下面的Makefile:如何正确链接msgpack到共享库
MSGPACK_CS = msgpack.c
CFLAGS = -std=c99
MSGPACK_OBJECTS = $(subst .c,.o,$(MSGPACK_CS))
MSGPACK_LIBS = msgpack.so
all: $(MSGPACK_OBJECTS) $(MSGPACK_LIBS)
%.o: %.c
$(CC) -c -shared -fPIC $(CFLAGS) $<
$(MSGPACK_LIBS): $(MSGPACK_OBJECTS)
ld -Lmsgpack/.libs -share -o [email protected] $(MSGPACK_OBJECTS) -lmsgpack
我可以编译使用msgpack没有问题的程序,但是这给了我以下错误:
msgpack.o: In function `msgpack_pack_int64':
/usr/local/include/msgpack/pack_template.h:373: undefined reference to `__stack_chk_fail_local'
ld: msgpack.so: hidden symbol `__stack_chk_fail_local' isn't defined
ld: final link failed: Bad value
显然联动过程并不顺利,但我不知道什么是错的。我能做什么?
谢谢,这工作得很好!只有一件事,“共享”标志实际上是“共享”的,但它符合预期的要求,即创建共享库。再次感谢 – petermlm 2015-04-02 13:20:22
谢谢。我修正了“共享”-typo。我的错。 – mfro 2015-04-02 15:47:53