Вы говорите:
Я также пытался с помощью команды:
gcc test.c `-L/try/libcomplearn/lib/ -llzma` `pkg-config --cflags --libs glib-2.0`
, которая означает, что вы не понимаете обратные тики , поскольку:
`-L/try/libcomplearn/lib/ -llzma`
не имеет смысла их использовать.Не торопитесь, чтобы изучить их использование.
Причиной сбоя связывания является настройка:
LDFLAGS = -static `export PKG_CONFIG_PATH=$(LIBPATH) && pkg-config --libs --static $(LIBNAME) -llzma`
в файле makefile.
Здесь у вас есть -llzma
в расширении обратного тика:
`export PKG_CONFIG_PATH=$(LIBPATH) && \
pkg-config --libs --static $(LIBNAME) -llzma`
Чтобы развернуть это, оболочка выполняет:
export PKG_CONFIG_PATH=$(LIBPATH)
pkg-config --libs --static $(LIBNAME) -llzma
-llzma
- бессмысленная опция для команды pkg-config
, поэтому она терпит неудачу, как вы видите, жалуется в make
output:
Unknown option -llzma
Точно так же, как:
$ pkg-config --cflags --libs zlib -llzma
Unknown option -llzma
В результате требуемые параметры связывания, которые должны выводиться с помощью:
pkg-config --libs --static $(LIBNAME)
, не являютсявыход и не интерполируются в значение LDFLAGS
.Таким образом, связь не выполняется:
test.c:(.text+0x1c): undefined reference to `complearn_ncd_top'
, поскольку libcomplearn
не было связано.Исправьте настройку вашего LDFLAGS
в:
LDFLAGS = -static `export PKG_CONFIG_PATH=$(LIBPATH) && pkg-config --libs --static $(LIBNAME)` -llzma
с помощью -llzma
после расширения обратной галочкой.