使用'shared'选项编译OpenSSL?

时间:2010-03-29 10:44:20

标签: apache openssl

在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?

由于

5 个答案:

答案 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

  

下载您的openssl tarball,解压缩,然后确保安装目录名为openssl

     

我将我的放置在/ usr / local / openssl中,因此在示例中将使用它。

  1. sudo mv openssl-1.0.2u /usr/local/openssl && cd /usr/local/openssl

  2. sudo make distclean

  3. sudo ./config -fPIC -shared

  4. sudo make && sudo install

      

    现在,将openssl共享库添加到您的PATH。

  5. vim ~/.profile Go export PATH="/usr/local/openssl/lib:$PATH" :wq