我试图为LZ4HC创建一个可执行文件(我使用了来自lz4主页的源代码),但是当我尝试执行该文件时,它显示了“符号错误LZ4_compressBound未定义”。 静态链接和动态链接均无效。
gcc -shared -ggdb3 -fPIC -o lz4hc.h lz4hc.c
或
gcc -c lz4hc.c -o lz4hc.o
ar rcs lz4hc.a lz4hc.o
为什么链接后未定义符号LZ4_compressBound?
答案 0 :(得分:0)
静态链接和动态链接均无效。
gcc -shared -ggdb3 -fPIC -o lz4hc.h lz4hc.c
以上命令将lz4hc.c
整合到名为lz4hc.h
的共享库中。这几乎肯定不是您想要的。
gcc -c lz4hc.c -o lz4hc.o
ar rcs lz4hc.a lz4hc.o
这些命令产生lz4hc.a
(正确),但不执行任何实际链接。
我猜您的实际链接命令看起来像gcc lz4hc.a main.o
,在这种情况下,您的问题是this one的重复项(在其他100重复项中)。
答案 1 :(得分:0)
LZ4_compressBound()
在lz4.c
中定义。
文档指出,要使用/链接lz4hc
,还需要lz4
:
https://github.com/lz4/lz4/tree/dev/lib#high-compression-variant