我需要生成libssl*
和libcrypto*
二进制文件以在不同的系统上使用。我写了一个简单的脚本来做它
#!/bin/bash
set -evx
OPENSSL_VERSION="1.0.2l"
TARGET=openssl-linux64
/bin/rm -fr $TARGET
curl -O -L http://www.openssl.org/source/openssl-$OPENSSL_VERSION.tar.gz
tar -xvzf openssl-$OPENSSL_VERSION.tar.gz
mv openssl-$OPENSSL_VERSION $TARGET
cd $TARGET
./Configure linux-x86_64 -shared
make
一切似乎都正常,最后我得到了两个库。不幸的是,它们被称为libssl.so.1.0.0
and libcrypto.so.1.0.0
。我比较迷茫...
这只是一个混乱的版本控制还是发生了什么?
我怎样才能知道究竟是什么生产的?我应该相信它吗?
以防万一:我的系统是“Linux 4.4.0-116-generic #140-Ubuntu SMP Mon x86_64 GNU/Linux”。
是的,这是正确的,即使软件包的版本为 1.0.2l,库的版本也是 1.0.0。这是因为该软件的所有 1.0.x 版本都实现了相同的 API(具有相同函数签名/原型的相同函数),因此这些库的版本应该相同,因为这些库的用户可以互换使用这些版本。
库的版本在源代码树中定义。在该定义上方有一条评论,可以进一步解释它。
我希望这能回答你的问题。