Как связать библиотеки в нестандартных местах для компиляции - PullRequest
0 голосов
/ 12 апреля 2020

Я новичок в linux и пытаюсь скомпилировать и установить некоторые библиотеки.

К сожалению, все довольно сложно, так как я не могу получить доступ sudo к своей машине, и мне пришлось установить библиотеки в нестандартных местах.

У меня проблемы с компилятором для поиска установленных библиотек.

Одна из библиотек (https://github.com/tpm2-software/tpm2-tss/blob/master/INSTALL.md) Я пытаюсь установить, имеет зависимости от других библиотек, и я получаю следующий код ошибки при попытке компиляции, и не могу это исправить.

src/tss2-esys/esys_crypto_ossl.c:11:10: fatal error: openssl/evp.h: No such file or directory
 #include <openssl/evp.h>
compilation terminated.

make[1]: *** [Makefile:14063: src/tss2-fapi/api/libtss2_fapi_la-Fapi_AuthorizePolicy.lo] Error 1
In file included from ./src/tss2-fapi/fapi_int.h:11, from src/tss2-fapi/api/Fapi_ChangeAuth.c:18:
./src/tss2-fapi/ifapi_policy_instantiate.h:13:10: fatal error: json-c/json.h: No such file or directory
 #include <json-c/json.h>
compilation terminated.

До сих пор я пытался чтобы скомпилировать его в bash с помощью следующих команд:

./bootstrap

export PKG_CONFIG_PATH=/home/me/test/lib/pkgconfig:$PKG_CONFIG_PATH
export LDFLAGS='-L../missing_libs -lssl  -L../missing_libs -lz  -L../missing_libs/json-c/.libs -ljson-c  -L../missing_libs/curl-7.68.0/lib/.libs -lcurl  -L../openssl-1.0.2 -lcrypto'
export CFLAGS='-I../missing_libs/curl-7.68.0/include/lib:../missing_libs/json-c:../missing_libs/openssl-1.0.2'

./configure --prefix=/home/me/test --with-udevrulesdir=/lib/udev --disable-doxygen-doc

make -j$(nproc)

LDFLAGS - это папки, содержащие мои файлы .so и .a, а CFLAGS - это папки, содержащие мои h-файлы.

Могу ли я проверить, знает ли кто-нибудь, что я не правильно связываю?

Спасибо!

1 Ответ

0 голосов
/ 15 апреля 2020

Я нашел проблему. Очевидно, я ссылался не на то место.

Поскольку библиотека искала, мне не следует ссылаться на каталог, где находится json .h, а на каталог, где json -c / json. h is.

Так что для моих CFLAGS должно быть "-I ../ missing_libs" вместо "-I ../ missing_libs / json - c"

Спасибо за помоги Джонатану!

...