Я пытаюсь создать snappy-java для FreeBSD 8.1, чтобы использовать его с cassandra (без него невозможно включить сжатие столбцов).
Пытаюсь собрать его из исходного кода и получаю сообщение об ошибке:
$ hg clone https://snappy-java.googlecode.com/hg/ snappy-java $ cd snappy-java $ export 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 target/snappy-1.0.4-Default/snappy-sinksource.o target/snappy-1.0.4-Default/snappy-stubs-internal.o target/ snappy-1.0.4-Default/snappy.o target/snappy-1.0.4-Default/ SnappyNative.o -shared -static /usr/bin/ld: /usr/lib/crtbeginT.o: relocation R_X86_64_32 can not be used when making a shared object; recompile with -fPIC /usr/lib/crtbeginT.o: could not read symbols: Bad value gmake: *** [target/snappy-1.0.4-Default/libsnappyjava.so] Error 1
Итак, -fPIC уже включен ... Любая помощь приветствуется. Спасибо
Попробуйте убрать -static из флагов компилятора. Вы создаете общую библиотеку.
без него невозможно включить сжатие столбцов
Это не совсем так. DeflateCompressor по-прежнему доступен без библиотек Snappy. Вы хотите или предпочитаете Snappy? Если так, я бы добавить загружаемый .jar из проекта Snappy в путь к классам. Нет необходимости выполнять собственную сборку.