-1

在 C 上为 ssh 调用安装 libssh。Ubuntu
13.04
apt-get install gcc --fine
apt-get install cmake -fine
wget openssl-1.0.1e.tar.gz --fine
tar -xzvf openssl-1.0.1e.tar.gz --fine
./config --prefix=/usr/local --openssldir=/usr/local/openssl --fine
make --fine
make test --fine
make install --fine
wget zlib-1.2.8.tar。 gz --fine
./configure; make test --fine
make install --fine
apt-get install dev-essential
now to install libssh.org
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug .. --fine
-- C 编译器标识为 GNU 4.7.3
- - 检查工作的 C 编译器:/usr/bin/cc
-- 检查工作的 C 编译器:/usr/bin/cc -- 工作
-- 检测 C 编译器 ABI 信息
-- 检测 C 编译器 ABI 信息 - 完成
-- 执行测试 WITH_FPIC
-- 执行测试 WITH_FPIC - 成功
-- 执行测试 WITH_STACK_PROTECTOR
-- 执行测试 WITH_STACK_PROTECTOR - 成功
-- 找到 ZLIB: /usr/local/include
-- 找到 PkgConfig: /usr/bin/pkg-config (找到版本“0.26”)
-- 检查模块 'openssl'
-- 找到 openssl , 版本 1.0.1e
-- 找到 OpenSSL: /usr/local/lib/libssl.a;/usr/local/lib/libcrypto.a
-- 寻找包含文件 pthread.h
-- 寻找包含文件 pthread.h -找到
——寻找 pthread_create
-- 寻找 pthread_create - 未找到
-- 寻找 pthreads 中的 pthread_create
-- 寻找 pthreads 中的 pthread_create - 未找到
-- 寻找 pthread 中的 pthread_create
-- 寻找 pthread 中的 pthread_create - 找到
-- 找到线程:TRUE
-- 检查对于模块“heimdal-gssapi”
——未找到包“heimdal-gssapi”
——找不到 GSSAPI(缺少:GSSAPI_LIBRARIES GSSAPI_INCLUDE_DIR)
——执行测试 WITH_VISIBILITY_HIDDEN——
执行测试 WITH_VISIBILITY_HIDDEN——成功 ——
寻找 argp.h——
寻找 argp.h - 找到
-- 寻找 pty.h
-- 寻找 pty.h - 找到
-- 寻找 termios.h
-- 寻找 termios.h - 找到
-- 寻找 unistd.h
-- 寻找 unistd.h - 找到
-- 寻找 openssl/aes.h
-- 寻找 openssl/aes.h - 找到
-- 寻找 openssl /blowfish.h
-- 寻找 openssl/blowfish.h - 找到
-- 寻找 openssl/des.h
-- 寻找 openssl/des.h - 找到
-- 寻找 openssl/ecdh.h
-- 寻找 openssl/ ecdh.h - 找到
- 寻找 openssl/ec.h
- 寻找 openssl/ec.h - 找到
- 寻找 openssl/ecdsa.h
- 寻找 openssl/ecdsa.h - 找到
- 寻找 strncpy
-- 寻找 strncpy - 找到
-- 寻找 vsnprintf
-- 寻找 vsnprintf - 找到
-- 寻找 snprintf
-- 寻找 snprintf -- 找到
-- 寻找 poll
-- 寻找 poll -- 找到
-- 寻找 select
-- 寻找 select -- 找到
-- 寻找 getaddrinfo
-- 寻找 getaddrinfo -- 找到
--正在寻找 ntohll
-- 正在寻找 ntohll - 未找到
-- 正在寻找 htonll
-- 正在寻找 htonll - 未找到
-- 在 rt 中
寻找 clock_gettime -- 在 rt 中寻找 clock_gettime - 已找到
-- 在 util 中寻找 forkpty
-- 正在寻找for forkpty in util - 找到
- 寻找 cfmakeraw
- 寻找 cfmakeraw - 找到
- 寻找 strtoull
- 寻找 strtoull - 找到
-- 正在寻找 __strtoull
-- 正在寻找 __strtoull - 未找到
-- 正在执行测试 HAVE_GCC_THREAD_LOCAL_STORAGE
-- 正在执行测试 HAVE_GCC_THREAD_LOCAL_STORAGE - 成功
-- 正在执行测试 HAVE_MSC_THREAD_LOCAL_STORAGE
-- 正在执行测试 HAVE_MSC_THREAD_LOCAL_STORAGE - 失败
-- 正在
执行测试 HAVE_GCC_MEMORY_PROTECTION_成功
--正在执行测试 HAVE_PRO - 检查系统是否为大端
- 搜索 16 位整数
- 寻找 sys/types.h
- 寻找 sys/types.h - 找到
- 寻找 stdint.h
- 寻找 stdint.h - 找到
-- 寻找 stddef.h
-- 寻找 stddef.h - 找到
-- 检查 unsigned short 的
大小 -- 检查 unsigned short 的大小 - 完成
-- 使用 unsigned short
-- 检查系统是否为大端 - 小端
-- 找不到 Doxygen (缺少:DOXYGEN_EXECUTABLE)
-- CXX 编译器标识是 GNU 4.7.3
-- 检查工作的 CXX 编译器:/usr/bin/c++
-- 检查工作的 CXX 编译器:/usr/bin/c++ -- 工作
-- 检测 CXX 编译器 ABI 信息
-- 检测 CXX 编译器 ABI 信息- 完成
-- **************************************************
-- ********** libssh 构建选项: **********
-- zlib 支持:ON
-- libgcrypt 支持:OFF
-- SSH-1 支持:OFF
-- SFTP 支持:ON
-- 服务器支持:开
-- GSSAPI 支持:0
-- Pcap 调试支持:开
-- 使用静态库:关
-- 单元测试:关
-- 客户端代码单元测试:关
-- 公共 API 文档生成
-- 基准测试:关闭
-- ************************************************
-- 正在配置done
-- 生成完成
-- 构建文件已写入:/root/libssh/libssh-0.6.0rc1/build
****现在当我尝试运行
make 或 make install****
扫描目标 ssh_shared 的依赖项
[ 1%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/agent.co
[2%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/auth.co
[ 4%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/base64.co
[ 5%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/buffer.co
[ 6%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir /callbacks.co
[ 8%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/channels.co
[ 9%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/client.co
[ 10%] 构建 C 对象 src/CMakeFiles /ssh_shared.dir/config.co
[ 12%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/connect.co
[ 13%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/dh.co
[ 14%] 构建 C对象 src/CMakeFiles/ssh_shared.dir/ecdh.co
[ 16%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/error.co
[ 17%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/getpass.co
[ 18%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/init.co
[ 20%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir /kex.co
[ 21%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/known_hosts.co
[ 22%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/legacy.co
[ 24%] 构建 C 对象 src/CMakeFiles /ssh_shared.dir/libcrypto.co
[ 25%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/log.co
[ 26%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/match.co
[ 28%] 构建 C对象 src/CMakeFiles/ssh_shared.dir/messages.co
[ 29%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/misc.co
[ 30%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/options.co
[ 32%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/packet.co
[ 33%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir /packet_cb.co
[ 34%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/packet_crypt.co
[ 36%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/pcap.co
[ 37%] 构建 C 对象 src/CMakeFiles /ssh_shared.dir/pki.co
[ 38%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/poll.co
[ 40%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/session.co
[ 41%] 构建 C对象 src/CMakeFiles/ssh_shared.dir/scp.co
[ 42%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/socket.co
[ 44%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/string.co
[ 45%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/threads.co
[ 46%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir /wrapper.co
[ 48%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/pki_crypto.co
[ 49%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/sftp.co
[ 50%] 构建 C 对象 src/CMakeFiles /ssh_shared.dir/sftpserver.co
[ 52%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/server.co
[ 53%] 构建 C 对象 src/CMakeFiles/ssh_shared.dir/bind.co
[ 54%] 构建 C对象 src/CMakeFiles/ssh_shared.dir/gzip.co
链接 C 共享库 libssh.so
[ 54%] 构建目标 ssh_shared
扫描目标 ssh_threads_shared 的依赖关系
[ 56%] 构建 C 对象 src/threads/CMakeFiles/ssh_threads_shared.dir/pthread.co
链接 C 共享库 libssh_threads.so
[ 56%] 构建目标 ssh_threads_shared
扫描目标 exec 的依赖关系
[ 57%] 构建 C对象示例/CMakeFiles/exec.dir/exec.co
[58%] 构建 C 对象示例/CMakeFiles/exec.dir/authentication.co
[60%] 构建 C 对象示例/CMakeFiles/exec.dir/knownhosts.co
[61 %] 构建 C 对象示例/CMakeFiles/exec.dir/connect_ssh.co
链接 C 可执行文件 exec
**../src/libssh.so.4.3.0:未定义对 `dlopen'
../src/libssh.so 的引用。 4.3.0:未定义对“dlclose”的引用
../src/libssh.so.4.3.0:未定义对“dlerror”的
引用 ../src/libssh.so.4.3.0:未定义对“dlsym”的引用
../src/libssh.so.4.3.0 : 未定义对 `dladdr' 的引用**

4

1 回答 1

0

libssh 根本不使用 dlopen。它是 openssl 或另一个需要 dlopen 且未正确链接的库。

您正在链接 openssl 的静态库,它可能是需要 libdl 的 openssl。

于 2013-09-26T06:16:42.543 回答