【问题标题】:How to link Libraries in non-standard locations for compilation如何链接非标准位置的库进行编译
【发布时间】:2020-07-24 18:37:58
【问题描述】:

我是 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 文件的文件夹。

我可以检查是否有人知道我没有正确链接吗?

谢谢!

【问题讨论】:

  • CFLAGS 中的冒号替换为空格和-I — 您必须将每个目录指定为单独的-I 选项。我希望 3/4 指定库的 lib 目录而不是 lib/.libs 子目录。
  • 感谢您的帮助!我将其更改为: export CFLAGS='-I../missing_libs/curl-7.68.0/include/lib -I../missing_libs/json-c/ -I../missing_libs/openssl-1.0.2/'它仍然会引发相同的错误,所以我想还有其他问题。至于 lib/.libs,我应该将我的 LDFLAGS 链接到带有 .a 和 .so 文件的文件夹,对吗?
  • 通常,如果您有一个.libs 子目录,那么您一直在使用libtool(无论您是否知道),并且在lib 目录中有一个.la 文件包含.libs 子目录将正确完成工作。但是,我不是这方面的专家。你可能没问题。我不确定您还需要修复什么。你没有显示编译失败时执行的命令,AFAICS,所以很难知道出了什么问题。

标签: c linux compilation pkg-config ldflags


【解决方案1】:

我发现了问题。显然我链接到了错误的地方。

由于库在搜索,我不应该链接到json.h所在的目录,而是json-c/json.h所在的目录。

所以对于我的 CFLAGS 应该是“-I../missing_libs”而不是“-I../missing_libs/json-c”

感谢乔纳森的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    相关资源
    最近更新 更多