C ld:fatal:在solaris上编译libssh2时,针对可分配但不可写的节保留重定位
我正在Solaris 10机器上编译1.4.2版 它通过编译获得了大部分信息,然后我得到:C ld:fatal:在solaris上编译libssh2时,针对可分配但不可写的节保留重定位,c,solaris,libssh2,C,Solaris,Libssh2,我正在Solaris 10机器上编译1.4.2版 它通过编译获得了大部分信息,然后我得到: libtool: link: gcc -shared -fPIC -DPIC -Wl,-z -Wl,text -Wl,-M -Wl,.libs/libssh2.so.1.0.1.exp -Wl,-h -Wl,libssh2.so.1 -o .libs/libssh2.so.1.0.1 .libs/channel.o .libs/comp.o .libs/crypt.o .libs/hostkey.o
libtool: link: gcc -shared -fPIC -DPIC -Wl,-z -Wl,text -Wl,-M -Wl,.libs/libssh2.so.1.0.1.exp -Wl,-h -Wl,libssh2.so.1 -o .libs/libssh2.so.1.0.1 .libs/channel.o .libs/comp.o .libs/crypt.o .libs/hostkey.o .libs/kex.o .libs/mac.o .libs/misc.o .libs/packet.o .libs/publickey.o .libs/scp.o .libs/session.o .libs/sftp.o .libs/userauth.o .libs/transport.o .libs/version.o .libs/knownhost.o .libs/agent.o .libs/openssl.o .libs/libgcrypt.o .libs/pem.o .libs/keepalive.o .libs/global.o -L/export/home/ixbuild/local//lib -lssl -lcrypto -lz -lnsl -lsocket -lc -O2
Text relocation remains referenced
against symbol offset in file
<unknown> 0x10 /export/home/ixbuild/local//lib/libcrypto.a(dsa_asn1.o)
<unknown> 0x24 /export/home/ixbuild/local//lib/libcrypto.a(dsa_asn1.o)
CBIGNUM_it 0x28 /export/home/ixbuild/local//lib/libcrypto.a(dsa_asn1.o)
<unknown> 0x38 /export/home/ixbuild/local//lib/libcrypto.a(dsa_asn1.o)
CBIGNUM_it 0x3c /export/home/ixbuild/local//lib/libcrypto.a(dsa_asn1.o)
... many similar lines ...
ld: fatal: relocations remain against allocatable but non-writable sections
libtool:link:gcc-shared-fPIC-DPIC-Wl,-z-Wl,text-Wl,-M-Wl,.libs/libssh2.so.1.0.1.exp-Wl,-h-Wl,libssh2.so.1-o.libs/libssh2.so.1.libs/channel.o.libs/comp.o.libs/crypt.o.libs/hostkey.o.libs/mac.o.libs/misc.o.libs/packet.o.libs/publickey.o.libs/scp.o.libs/session.o.libs/sftp.o.libs/userauth.o.libs/transport.o.libs/version.o.libs/knowost.o.libs/nohost.o.libs/packet.ssl/opengco.libs/libs/libs/lib.s/lib.s/libs/libs/libs/lib.s/libs/lib.s/s/s/lib.s/s/s/s/s/.libs/keepalive.o.libs/global.o-L/export/home/ixbuild/local//lib-lssl-lcrypto-lz-lnsl-lsocket-lc-O2
文本重新定位仍被引用
针对文件中的符号偏移量
0x10/export/home/ixbuild/local//lib/libcrypto.a(dsa_asn1.o)
0x24/export/home/ixbuild/local//lib/libcrypto.a(dsa_asn1.o)
CBIGNUM_it 0x28/export/home/ixbuild/local//lib/libcrypto.a(dsa_asn1.o)
0x38/export/home/ixbuild/local//lib/libcrypto.a(dsa_asn1.o)
CBIGNUM_it 0x3c/export/home/ixbuild/local//lib/libcrypto.a(dsa_asn1.o)
... 许多相似的线路。。。
ld:fatal:针对可分配但不可写的节保留重新定位
在谷歌上搜索,我发现很多关于不使用-fPIC
编译的错误的引用,但是这个标志已经被使用了
奇怪的是,当我第一次安装这台机器时,它工作得很好。当时我正在使用libssh2-1.3.0
更新:@jww建议这是的副本,表示问题缺少
-fPIC
标志。正如问题中已经指出的,我已经检查了这个,并且正在使用-fPIC
。请查看下面的答案,了解我的实际解决方案。至少在我的案例中,这是因为尝试使用gcc编译新版本的libssh2,并链接到以前使用Solaris cc编译的openssl库
通过添加CC环境变量强制configure
使用Solaris CC命令(如下所示),我可以使其编译:
CC="/opt/solstudio12.2/bin/cc" ./configure --prefix=/export/home/ixbuild/local --disable-static
查看我以前执行的安装中的注释,我以前不需要这样做,因此配置脚本可能已更改为更喜欢gcc(如果有),或者环境已更改(我不完全确定gcc是否在我以前构建时的路径中)。可能重复