Проблема с компиляцией LZ4HC: LZ4_compressBound не определено

Я попытался создать исполняемый файл для LZ4HC (я использовал исходный код с домашней страницы lz4), но когда я пытался выполнить файл, он отображал «Ошибка символа LZ4_compressBound undefined». Ни статическая линковка, ни динамическая линковка не работали.

gcc -shared -ggdb3 -fPIC -o lz4hc.h lz4hc.c

or

gcc -c lz4hc.c -o lz4hc.o
ar rcs lz4hc.a lz4hc.o

Почему символ LZ4_compressBound не определен после линковки?


person Tsubaki    schedule 25.10.2018    source источник
comment
Почему... после ссылки? -- Пожалуйста, отредактируйте свой вопрос и покажите реальную команду link.   -  person Employed Russian    schedule 27.10.2018


Ответы (2)


Ни статическая линковка, ни динамическая линковка не работали.

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, и в этом случае ваш вопрос является дубликатом этого (среди сотни других дубликатов).

person Employed Russian    schedule 27.10.2018

LZ4_compressBound() определяется в пределах lz4.c.

В документации указано, что для использования/ссылки lz4hc также требуется lz4 : https://github.com/lz4/lz4/tree/dev/lib#high-compression-variant

person Cyan    schedule 09.12.2018