我需要生成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
和libcrypto.so.1.0.0
。我比较困惑...
这只是一个混乱的版本控制还是发生了什么?
我怎样才能知道到底生产了什么?我应该相信它吗?
如果重要的话:我的系统是“Linux 4.4.0-116-generic #140-Ubuntu SMP Mon x86_64 GNU/Linux”。
答案1
是的,这是正确的,即使软件包的版本为 1.0.2l,库也将具有版本 1.0.0。这是因为该软件的所有版本 1.0.x 都实现相同的 API(具有相同函数签名/原型的相同函数),因此这些库的版本应该相同,因为这些库的用户可以互换使用这些版本。
库的版本已定义这里在源树中。该定义上方有一条评论进一步解释了它。
我希望这能回答你的问题。