Назад | Перейти на главную страницу

Как собрать snappy-java под FreeBSD 8.1? (ошибка сборки)

Я пытаюсь создать 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 в путь к классам. Нет необходимости выполнять собственную сборку.