LZ4HC编译问题:LZ4_compressBound未定义

时间:2018-10-25 23:58:19

标签: compiler-errors linker static-linking dynamic-linking lz4

我试图为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?

2 个答案:

答案 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,还需要lz4https://github.com/lz4/lz4/tree/dev/lib#high-compression-variant