Проблемы компиляции внешней библиотеки на Linux - PullRequest
2 голосов
/ 10 июня 2010

Итак, я пытаюсь скомпилировать библиотеку 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 ]

2 голосов
/ 10 июня 2010

Заголовочный файл не включен: libssh2_config.h

В исходном коде есть директива включения, поэтому вы должны указать путь к заголовку с помощью опции -I: gcc -I/home/Roosevelt/libssh2-1.2.5/src

Опция -include должна использоваться для включения файла заголовка, который явно не включен в исходный код с директивой #include.

0 голосов
/ 15 марта 2014

Я бы порекомендовал вам прочитать эту статью. У меня возникла та же проблема, но после прочтения я исправил ее, надеюсь, вам это поможет, http://www.cprogramming.com/tutorial/shared-libraries-linux-gcc.html

0 голосов
/ 10 июня 2010

Я только что клонировал текущую сборку git и перешел на версию 1.2.5, но я не могу воспроизвести вашу проблему.

./buildconf
./configure
make

отлично работает. Что именно ты пытаешься сделать?

...