如何用gcc 4.8.5工具链构建libcrypto.so [复制]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用gcc 4.8.5工具链构建libcrypto.so [复制]相关的知识,希望对你有一定的参考价值。

我正在尝试使用gcc 4.8.5工具链在CentOS 7上构建libcrypto.so.1.0.0。我收到下面的错误,我不清楚该怎么办。

/ usr / bin / ld:libcrypto.a(e_gost_err.o):在创建共享对象时,不能使用针对`.data'的重定位R_X86_64_32;用-fPIC重新编译

有什么建议?

[user@rsn-xp openssl-1.0.0s]$ cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core) 

[user@rsn-xp openssl-1.0.0s]$ gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[user@rsn-xp openssl-1.0.0s]$ make libcrypto.so.1.0.0
make[1]: Entering directory `/home/user/src/openssl/openssl-1.0.0s'
make[2]: Entering directory `/home/user/src/openssl/openssl-1.0.0s'
/usr/bin/ld: libcrypto.a(e_gost_err.o): relocation R_X86_64_32 against `.data' can not be used when making a shared object; recompile with -fPIC
libcrypto.a(e_gost_err.o): error adding symbols: Bad value
collect2: error: ld returned 1 exit status
make[2]: *** [link_a.gnu] Error 1
make[2]: Leaving directory `/home/user/src/openssl/openssl-1.0.0s'
make[1]: *** [do_linux-shared] Error 2
make[1]: Leaving directory `/home/user/src/openssl/openssl-1.0.0s'
make: *** [libcrypto.so.1.0.0] Error 2
[user@rsn-xp openssl-1.0.0s]$ 
答案

现在该做什么的错误或多或少都很清楚:用-fPIC重新编译。因此,请确保-fPIC包含在您的CFLAGS中(例如CFLAGS=-fPIC make ...)。潜在的问题是,您(很可能是无意中)尝试混合可重定位和不可重定位的代码。

以上是关于如何用gcc 4.8.5工具链构建libcrypto.so [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何用Qt Creator输出helloworld

gcc 4.8.5安装

Buildroot构建指南——工具链

gcc 9.2 交叉工具链构建过程

在 CentOS 上构建整个工具链的教程

如何构建MIPS交叉编译工具链