我目前正在尝试创建 ac 程序,它将 ssh 到几个远程服务器。我正在尝试将 libssh 库链接到我的程序,但我遇到了困难。这是我的主要源文件:
#include <stdio.h>
#include <stdlib.h>
#define LIBSSH_STATIC 1
#include "libssh/libssh.h"
int main(){\n
printf("Attempting Library Call!\n");
ssh_session my_ssh_session=ssh_new();
printf("Exiting Program!\n");
ssh_free(my_ssh_session);
return (EXIT_SUCCESS);
}
生成文件:
all:
gcc -Wall -g -I/home/user/SSH_CON/libssh/include -L/home/user/SSH_CON/libssh/lib main.c -o ssh -lssh
这是我第一次尝试将库与 ac 程序链接,但遇到了困难。从https://www.libssh.org/安装程序库中下载的文件如下:
/libssh
/bin
libssh.dll
libssh_threads.dll
/CMake
libssh-config.cmake
libssh-config-version.cmake
/include/libssh
callbacks.h
legacy.h
libssh.h
server.h
sftp.h
ssh2.h
/lib
/pkgconfig
libssh.pc
libssh_threads.pc
libssh.dll.a
libssh_threads.dll.a
Uninstall.exe
我在网上做了很多搜索,并尝试添加 libssh.dll 和 libssh.dll.a 库。gcc 成功地使 ssh.exe 可执行,但是当我尝试运行它时,我一直收到此错误:
/home/user/SSH_CON/ssh.exe: error while loading shared libraries: libssh.dll: cannot open shared object file: no such file or directory
我不知道从这里去哪里。有没有人有什么建议?
更新:
将 libssh.dll.a 和 libssh.dll 放入我的 main.c 文件的工作目录中,现在我收到此错误:
/home/user/SSH_CON/ssh.exe: error while loading shared libraries: ?: cannot open shared object file: no such file or directory
在我的可执行文件上运行 ldd 会产生以下结果:
ntdll.dll => /cygdrive/c/Windows/SYSTEM32/ntdll.dll
KERNEL32.DLL => /cygdrive/c/Windows/SYSTEM32/KERNEL32.DLL
KERNELBASE.dll => /cygdrive/c/Windows/SYSTEM32/KERNELBASE.dll
cygwin1.dll => /usr/bin/cygwin1.dll
libssh.dll => /home/user/SSH_CON/libssh.dll
ADVAPI32.DLL => /cygdrive/c/Windows/SYSTEM32/ADVAPI32.DLL
msvcrt.dll => /cygdrive/c/Windows/SYSTEM32/msvcrt.dll
SHELL32.DLL => /cygdrive/c/Windows/SYSTEM32/SHELL32.DLL
WS2_32.DLL => /cygdrive/c/Windows/SYSTEM32/WS2_32.DLL
有什么方法可以识别丢失的名为 的库?
吗?有什么方法可以将这个库编译为静态的,以便在运行时它不依赖于任何共享库?