在CentOS 5.4上,OpenSSL在没有'shared'选项的情况下编译得很好。但是当我通过该选项时,编译失败了:
/ usr / bin / ld:libcrypto.a(x86_64-gcc.o):在创建共享对象时,不能使用针对“本地符号”的重定位R_X86_64_32;用-fPIC重新编译
当我尝试:./config shared CFLAGS=-fPIC
无效时。
如何使用'shared'选项编译OpenSSL?
由于
答案 0 :(得分:27)
这里的问题相同,但通常Makefile会考虑编译器或链接器选项的环境变量。
因此,如果在调用configure脚本之前放置-fPIC
选项,它应该处理它。你可以用:
CFLAGS=-fPIC ./config shared --prefix=/your/path
或
export CFLAGS=-fPIC
./config shared --prefix=/your/path
它对我有用。
答案 1 :(得分:17)
您可以将选项-fXXX
传递给配置,以便您可以执行以下操作:
./config -fPIC shared
答案 2 :(得分:1)
OpenSSL版本1.0(今天发布)与共享选项
一起正常工作答案 3 :(得分:1)
以下是我如何使用共享库构建OpenSSL。请注意,我使用的是交叉编译器,所以我指定的东西最不会。
# hop into the downloads folder
cd ~/Downloads
# get the branch of openssl you want
git clone -b OpenSSL_1_0_2-stable --single-branch https://github.com/openssl/openssl.git
# make an installation directory
mkdir openssl-install
# go into the cloned openssl directory
cd openssl
# absolute paths needed for the configure
# the "-fPIC -mhard-float" are CFLAGS specific to my project
# the "-shared" is what creates the .so files
# find your desired configuration with `./Configure LIST`
./Configure linux-mips32 --prefix=/home/myusername/Downloads/openssl-install --openssldir=/system/ssl -fPIC -mhard-float -shared
# run the make file (with my specific compiler)
make CC=mips-linux-gnu-gcc RANLIB=mips-linux-gnu-ranlib LD=mips-linux-gnu-ld MAKEDEPPROG=mips-linux-gnu-gcc PROCESSOR=MIPS
答案 4 :(得分:1)
下载您的openssl tarball,解压缩,然后确保安装目录名为
openssl
。我将我的放置在/ usr / local / openssl中,因此在示例中将使用它。
sudo mv openssl-1.0.2u /usr/local/openssl && cd /usr/local/openssl
sudo make distclean
sudo ./config -fPIC -shared
sudo make && sudo install
现在,将openssl共享库添加到您的PATH。
vim ~/.profile
Go
export PATH="/usr/local/openssl/lib:$PATH"
:wq