首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确链接libssh?

如何正确链接libssh?
EN

Stack Overflow用户
提问于 2016-05-20 09:16:14
回答 1查看 1.7K关注 0票数 2

我试图在我的代码(libssh)中包含一个lib,但什么都不起作用……在这一点上,我不确定该怎么做,因为我收到的错误在搜索引擎中没有弹出结果。

我在这里下载了libssh:https://github.com/substack/libssh

我安装了这些:

代码语言:javascript
复制
yum install cmake zlib-devel libpng-devel openssl-devel -y;

创建了一个"build“目录作为libssh的父目录,移动到那里,键入以下内容:

代码语言:javascript
复制
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug ..
make


[root@ build]# cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug LD_DEBUG=all ..
-- Could NOT find NaCl (missing:  NACL_LIBRARIES NACL_INCLUDE_DIRS)
-- ********************************************
-- ********** libssh build options : **********
-- zlib support: ON
-- libgcrypt support: OFF
-- libnacl support: OFF
-- SSH-1 support: OFF
-- SFTP support: ON
-- Server support : ON
-- GSSAPI support : ON
-- Pcap debugging support : ON
-- With static library: OFF
-- Unit testing: OFF
-- Client code Unit testing: OFF
-- Public API documentation generation
-- Benchmarks: OFF
-- ********************************************
-- Configuring done
-- Generating done
-- Build files have been written to: /root/libssh/build

然后它失败了..。

代码语言:javascript
复制
Scanning dependencies of target exec
[  2%] Building C object examples/CMakeFiles/exec.dir/exec.c.o
[  5%] Building C object examples/CMakeFiles/exec.dir/authentication.c.o
[  8%] Building C object examples/CMakeFiles/exec.dir/knownhosts.c.o
[ 11%] Building C object examples/CMakeFiles/exec.dir/connect_ssh.c.o
Linking C executable exec
/usr/bin/ld: cannot find -lssh_shared
collect2: ld a retourné 1 code d'état d'exécution
make[2]: *** [examples/exec] Erreur 1
make[1]: *** [examples/CMakeFiles/exec.dir/all] Erreur 2
make: *** [all] Erreur 2

有人知道问题出在哪里吗?“找不到-lssh_shared”在谷歌上没有显示任何相关信息。

EN

回答 1

Stack Overflow用户

发布于 2016-05-20 09:42:39

错误消息是由于链接器/usr/bin/ld在编译时无法链接到库ssh_shared.so而导致的。

我检查了libssh/build/src/CMakeFiles/ssh_shared.dir/build.make文件,里面有一些链接消息:

代码语言:javascript
复制
ssh_shared_EXTERNAL_OBJECTS =
src/libssh.so.4.2.0: /usr/lib/x86_64-linux-gnu/libz.so
src/libssh.so.4.2.0: /usr/lib/x86_64-linux-gnu/libssl.so
src/libssh.so.4.2.0: /usr/lib/x86_64-linux-gnu/libcrypto.so

... (snippet here) ...
src/libssh.so.4.2.0: src/CMakeFiles/ssh_shared.dir/bind.c.o
src/libssh.so.4.2.0: /usr/lib/x86_64-linux-gnu/libz.so
src/libssh.so.4.2.0: /usr/lib/x86_64-linux-gnu/libssl.so
src/libssh.so.4.2.0: /usr/lib/x86_64-linux-gnu/libcrypto.so
src/libssh.so.4.2.0: src/CMakeFiles/ssh_shared.dir/build.make
src/libssh.so.4.2.0: src/CMakeFiles/ssh_shared.dir/link.txt

@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --red --bold "Linking C shared library libssh.so"

您可以注意到,在构建过程中,cmake会尝试链接我的系统路径/usr/lib/x86_64-linux-gnu/下的一些库。去看看你的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37336455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档