Проблемы с компиляцией внешней библиотеки на Linux
Поэтому я пытаюсь скомпилировать библиотеку libssh2 в linux, но когда я пытаюсь скомпилировать пример, возникает много ошибок, и хотя я включаю запрашиваемый заголовочный файл, он все равно запрашивает его. Вот сообщения об ошибках и полученные сообщения:
~/ gcc -include /home/Roosevelt/libssh2-1.2.5/src/libssh2_config.h -o lolbaise /home/Roosevelt/libssh2-1.2.5/example/scp.c
/home/Roosevelt/libssh2-1.2.5/example/scp.c:7:28: error: libssh2_config.h: No such file or directory
/home/Roosevelt/libssh2-1.2.5/example/scp.c: In function 'main':
/home/Roosevelt/libssh2-1.2.5/example/scp.c:39: error: storage size of 'sin' isn't known
/home/Roosevelt/libssh2-1.2.5/example/scp.c:81: error: 'AF_INET' undeclared (first use in this function)
/home/Roosevelt/libssh2-1.2.5/example/scp.c:81: error: (Each undeclared identifier is reported only once
/home/Roosevelt/libssh2-1.2.5/example/scp.c:81: error: for each function it appears in.)
/home/Roosevelt/libssh2-1.2.5/example/scp.c:81: error: 'SOCK_STREAM' undeclared (first use in this function)
/home/Roosevelt/libssh2-1.2.5/example/scp.c:87: error: invalid application of 'sizeof' to incomplete type 'struct sockaddr_in'
Вот новые ошибки:
scp.c:(.text+0x106): undefined reference to `libssh2_init'
scp.c:(.text+0x1fe): undefined reference to `libssh2_session_init_ex'
scp.c:(.text+0x234): undefined reference to `libssh2_session_startup'
scp.c:(.text+0x288): undefined reference to `libssh2_hostkey_hash'
scp.c:(.text+0x36f): undefined reference to `libssh2_userauth_password_ex'
scp.c:(.text+0x3e7): undefined reference to `libssh2_userauth_publickey_fromfile_ex'
scp.c:(.text+0x437): undefined reference to `libssh2_scp_recv'
scp.c:(.text+0x531): undefined reference to `libssh2_channel_read_ex'
scp.c:(.text+0x5f8): undefined reference to `libssh2_channel_free'
scp.c:(.text+0x628): undefined reference to `libssh2_session_disconnect_ex'
scp.c:(.text+0x636): undefined reference to `libssh2_session_free'
scp.c:(.text+0x66e): undefined reference to `libssh2_exit'
collect2: ld returned 1 exit status
3 ответа
Я просто клонировал текущую сборку git и перешел на версию 1.2.5, но не могу воспроизвести вашу проблему.
./buildconf
./configure
make
работает отлично. Что вы пытаетесь сделать именно?
Заголовочный файл не включен: libssh2_config.h
В исходном коде есть директива включения, поэтому вы должны указать путь к заголовку с помощью -I
опция: gcc -I/home/Roosevelt/libssh2-1.2.5/src
-include
опция должна использоваться для включения файла заголовка, который явно не включен в исходный код с #include
директивы.
Я бы порекомендовал вам прочитать эту статью. У меня возникла та же проблема, но после прочтения я решил ее, надеюсь, она вам поможет, http://www.cprogramming.com/tutorial/shared-libraries-linux-gcc.html