求助linux下编译libssh2问题
linux编译libssh2时问题如下,/usr/bin/ld: /opt/openssl/lib/libcrypto.a(hmac.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC/opt/openssl/lib/libcrypto.a Bad valuecollect2: ld returned 1 exit status有哪位大侠知道怎么解决吗? openssl编译时已经使用了./config -fPIC参数,谢谢了。
更新时间:2019-03-16 09:55
最满意答案
一直这样使用,无问题(注:$THIRD_PARTY_HOME不是环境变量,而是脚本中定义的变量,以下是脚本中自动化调用):./config --prefix=$THIRD_PARTY_HOME/openssl shared threadstar xzf $thrift.tar.gzcd $thrift./configure --prefix=$THIRD_PARTY_HOME/thrift \ --with-boost=$THIRD_PARTY_HOME/boost \ --with-libevent=$THIRD_PARTY_HOME/libevent \ CPPFLAGS="-I$THIRD_PARTY_HOME/openssl/include" \ LDFLAGS="-ldl -L$THIRD_PARTY_HOME/openssl/lib" \ --with-qt4=no --with-c_glib=no --with-csharp=no \ --with-java=no --with-erlang=no --with-python=no \ --with-perl=no --with-ruby=no --with-haskell=no \ --with-go=no --with-d=no
fykkkaibe 2014-05-02 回答
其他回答
回复 maxer025 可是,你使用 -fPIC 用对了么?
fykkkaibe 2014-05-02 回答
网上找的, CFLAGS="-O3 -fPIC" 也用过,都一样的错误啊
fykkkaibe 2014-05-02 回答
回复 maxer025 openssl 的编译还是比较麻烦的,用包管理器安装吧,不要自己编译了。而且你这个问题,未必加了 -fPIC 就能解决。
fykkkaibe 2014-05-02 回答
编译openssl ./config -fPIC --prefix=/opt/openssl编译libssh2 CFLAGS="-O3 -fPIC" ./configure --prefix=/opt/libssh2 --with-libssl-prefix=/opt/openssl
fykkkaibe 2014-05-02 回答
谁告诉你 -fPIC 是这么用的?
fykkkaibe 2014-05-02 回答
相关问答
一直这样使用,无问题(注:$THIRD_PARTY_HOME不是环境变量,而是脚本中定义的变量,以下是脚本中自动化调用):./config --prefix=$THIRD_PARTY_HOME/openssl shared threadstar xzf $thrift.tar.gzcd $thrift./configure --prefix=$THIRD_PARTY_HOME/thrift \ --with-boost=$THIRD_PARTY_HOME/boost \ --with-libeve
...
弄清楚了。 您必须使用CMake创建构建环境。 将您的CMake bin目录添加到环境PATH变量。 使用root libssh2中的命令提示符: mkdir build
cd build
cmake -G "Visual Studio 14 2015 Win64" ..
cmake --build .
这将创建一个MDd静态调试库。 对于常规的MD静态发布库,运行: cmake --build . --config Release
Figured it out. You have to cr
...
我不认为你已经走了这么远,钥匙码就成了问题。 从您给出的消息中,我怀疑您调用了异步函数,但将其视为同步,错误输出而不是等待。 假设我们有以下代码段: n = recv(socket, buffer, sizeof buffer, 0);
if (n == -1) {
err(1, "Error receiving data from socket");
}
在大多数情况下,这对于同步套接字来说非常好,但
...
对于第一个错误,我同意harmic,您可以手动添加.lib文件到您的项目来解决库链接失败:添加.lib文件:Properties> Linker-> Input-> Additional Dependencies,添加.lib文件路径:Properties> Linker-> General-> Additional Dependencies。 对于第二个错误,问题是您没有链接到Ws2_32.lib库。 要解决此问题,您可以将以下代码添加到项目的源文件中。 #pragma comment(lib,
...
你应该使用libssh2_channel_read函数来读取远程标准输出: http://www.libssh2.org/libssh2_channel_read.html you should use the libssh2_channel_read function to read the remote stdout: http://www.libssh2.org/libssh2_channel_read.html
我找到了一种增加块大小的方法。 块大小在libssh2库中是硬编码的,您必须从libssh2站点下载源代码,然后编辑sftp.h文件中给出的常量,即#SFTP_READ_SIZE 8000或您想要的大小,但要确保它不应该更多比你的缓冲区大小。 然后重建库。 I have found a way to increase the chunk size. The chunk size is hard coded in the libssh2 library you have to download th
...
至少在我的情况下,这是由于尝试使用gcc编译新版本的libssh2,并链接到以前使用Solaris cc编译的openssl库。 通过添加一个CC环境变量强制configure来使用Solaris cc命令,就像这样,我可以让它编译: CC="/opt/solstudio12.2/bin/cc" ./configure --prefix=/export/home/ixbuild/local --disable-static
看看我之前执行的安装中的笔记,之前我不需要这样做,所以配置脚本在某种程度
...
在RTFM并进行一些测试之后,我发现libssh2_userauth_publickey_fromfile将返回不同的错误代码,具体取决于服务器是否接受密钥,或密码短语是否错误。 所以,这是一个非常低效的解决方案(因为它调用libssh2_userauth_publickey_fromfile ,因此协议的所有密钥交换部分至少两次)。 int nAttempts = 3; // number of attempts the user gets at entering the passphrase
...
看起来pygit2还不支持libgit2的凭证网络操作。 有一些API讨论正在进行 ,但没有最终确定。 编辑:看起来这个已经实施,因为这个答案被接受了。 该文档对此有一些注释。 It looks like pygit2 doesn't support libgit2's credentialed network operations just yet. There's some API discussion happening, but nothing is finalized. EDIT: Lo
...
我强烈建议使用本机Windows应用程序升级您的Perl版本。 如果您安装最新版本的Strawberry Perl (撰写本文时为5.24.1.1),则包含libssh2-1.7.0 。 然后,它允许您成功构建,安装和使用Net :: SSH2 。 这是代码的输出: c:\>perl ssh.pl
1.7.067328SSH-2.0-libssh2_1.7.0
好像它已经在构建中存在了一段时间,但如果你正在升级,我会去最新和最好的。 I would highly recommend upgrad
...