当我构建我的可执行文件时,我遇到了一个问题,我有一个目标文件,其名称/签名与libcrypto(SHA_Update)中的一个OpenSSL函数相同。我想我在这里有两个问题:
1。)我很惊讶链接器没有抱怨该符号有多个定义。
2.。)我构建的可执行文件调用HMAC_Update(将调用SHA_Update)。但是,它调用在我的一个目标文件中定义的SHA_Update,而不是OpenSSL的SHA_Update。
有人可以对此有所了解吗? libcrypto与我的可执行文件动态链接。
我认为这可能是弱链接的问题,其中openssl函数是弱链接的,而我的目标文件中的那个是强连接的,这可以解释所有这些(因为链接器不会抱怨多个定义和强链接的一个会破坏弱链接的一个,但我没有看到任何类型的文件中带有objdump或readelf的弱链接符号的引用。)