我想在项目中使用 oqs 库,我必须验证该库是否可访问。 该项目使用autoconf,我必须使用AC_CHECK_LIB。
我的第一次尝试是:
AC_CHECK_LIB(oqs, OQS_randombytes, [LIBOQS_LIBS="-loqs"; ac_enable_pqc=yes], [ac_enable_pqc=no])
,但这失败了。
我吓坏了,所以我尝试“模拟”AC_CHECK_LIB 的作用。创建了一个简单的 C 程序,其中包含 oqs 库并调用
OQS_randombytes
函数。编译了一下,发现有很多错误。我发现 oqs 库有一些依赖项,我需要这样编译它:
gcc test.c -loqs -lssl -lcrypto
.
所以有2个依赖关系。这样我创建了以下“东西”,我不知道它是否正确:
AC_CHECK_LIB([oqs -lssl -lcrypto], [OQS_randombytes], [LIBOQS_LIBS="-loqs -lssl -lcrypto"; ac_enable_pqc=yes], [ac_enable_pqc=no])
看起来确实不太好,但是它可以工作。那么,有没有更好的方法呢?
看起来
AC_CHECK_LIB
的最后一个参数是针对依赖关系的:
AC_CHECK_LIB(库、函数、[如果找到则执行操作]、[如果未找到则执行操作]、[其他库])
就我而言:
AC_CHECK_LIB(oqs, OQS_randombytes, [LIBOQS_LIBS="-loqs"; ac_enable_pqc=yes], [ac_enable_pqc=no], [-lssl -lcrypto])