我正在尝试为 FreeBSD 8.1 构建 snappy-java,以便将其与 cassandra 一起使用(如果没有它就无法启用列压缩)。
尝试从源代码构建它并出现错误:
$ hg 克隆 https://snappy-java.googlecode.com/hg/ snappy-java $ cd snappy-java $ 导出 JAVA_HOME=/usr/local/openjdk6 && gmake
该过程开始了,但过了一段时间后我收到以下错误:
g++-I/usr/local/openjdk6/include-Ilib/inc_mac-O2-fPIC- fvisibility=hidden-Ilib/include-I“/usr/local/openjdk6/include/ freebsd”-Itarget/snappy-1.0.4 -o target/snappy-1.0.4-Default/ libsnappyjava.so 目标/snappy-1.0.4-默认/snappy-sinksource.o 目标/snappy-1.0.4-默认/snappy-stubs-internal.o 目标/ snappy-1.0.4-默认/snappy.o 目标/snappy-1.0.4-默认/ SnappyNative.o-共享-静态 /usr/bin/ld: /usr/lib/crtbeginT.o: 无法重定位 R_X86_64_32 在创建共享对象时使用;使用 -fPIC 重新编译 /usr/lib/crtbeginT.o:无法读取符号:错误值 gmake:*** [target/snappy-1.0.4-Default/libsnappyjava.so] 错误 1
因此 -fPIC 已开启... 任何帮助都值得感激。谢谢
答案1
如果没有它就无法启用列压缩
这不完全正确。DeflateCompressor 在没有 Snappy 库的情况下仍然可用。您是否需要或更喜欢 Snappy?如果是,我会添加可下载的 .jar从 Snappy 项目添加到您的类路径。无需执行您自己的构建。
答案2
尝试从编译器标志中删除 -static。您正在构建一个共享库。