作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将一些使用 msgpack-c 函数的 .c 文件编译到共享库中。我有以下 Makefile:
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 $@ $(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
显然链接过程进展不顺利,但我不知道出了什么问题。我能做什么?
最佳答案
尝试链接 gcc 驱动程序,而不是直接调用 ld
。 ld
不知道 C 运行时所需的 gcc 支持库:
gcc -Lmsgpack/.libs -shared -o $@ $(MSGPACK_OBJECTS) -lmsgpack
如果这仍然不起作用,您可能需要将 -fno-stack-protector
添加到 CFLAGS 以禁止运行时堆栈检查。
关于c - 如何正确地将 msgpack 链接到共享库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29402345/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!