当您使用传统命令构建和安装 openssl 时,主题中定义“struct ecdsa_method”和“struct ecdh_method”的两个标头不会复制到目标目录:
config
make install
但是,使用这些结构的类型,例如 ECDSA_METHOD 和 ECDH_METHOD 是在 ecdsa.h 中定义的,该文件被复制到目标目录中。当您尝试编译使用上述任何类型的代码时,它会导致令人困惑的“不完整的变量定义”错误。如果尝试构建一个实施了 ECDSA 和 ECDH 方法的 openssl 引擎,您将不可避免地遇到此错误。
我检查了 config 生成的 Makefile,发现在安装过程中使用了一个名为 EXHEADERS 的变量,但我没有找到通过“config”选项填充它的常规方法。
解决方法是手动将缺少的标头从源树复制到目标目录,但我不喜欢这种“解决方案”。