【发布时间】:2016-07-31 10:34:48
【问题描述】:
我想尝试使用 openssl 并因此想要更改源。
我找到了包含#include <openssl/ec.h> 的代码,并且显然使用了该标头中的函数。但是,我找不到文件 ec.c,据我所知,该文件通常位于标题中(/usr/include/openssl/ec.h)。同样在openssl的github源码(https://github.com/openssl/openssl),ec.h位于openssl-master/include/openssl但是没有ec.c
所以:gcc 在哪里寻找 ec.h 中定义的方法?
感谢您的回答!
【问题讨论】:
-
.h和.c通常不存储在一起。此外,这些函数很可能不是“定义”的,而是在ec.h中声明的,所以请清楚这一点。 GCC 可能根本不会自行查找实现文件,而是假设您像使用 pthread (-lpthread) 一样手动指定库。 -
在 C 中没有要求每个
X.h文件都有一个对应的X.c文件(尽管经常有)。编译器(实际上是链接器)将在传递给它的库(共享或静态)中查找未解析的符号。 -
@kaylum:不仅是共享库:还有静态库。
-
@MartinBonner 是的,同意,很好的说明。