添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I am getting an error every time I try to compile my code with gcc on Ubuntu.

I installed libssh-dev by typing:

sudo apt-get install libssh-dev

and it installed just fine (No error messages)

The code I am trying to compile is:

#include <stdlib.h>
#include <stdio.h>
#define LIBSSH_STATIC 1
#include <libssh/libssh.h>
int main(void){
    int rc;
    int port = 21;
    char *pass = "password";
    ssh_session my_ssh_session = ssh_new();
    if(my_ssh_session == NULL){
        exit(-1);
    ssh_options_set(my_ssh_session, SSH_OPTIONS_HOST, "localhost");
    ssh_options_set(my_ssh_session, SSH_OPTIONS_PORT, &port);
    ssh_options_set(my_ssh_session, SSH_OPTIONS_USER, "username");
    rc = ssh_connect(my_ssh_session);
    if(rc != SSH_OK){
        fprintf(stderr, "Error connecting to localhost: %s\n", ssh_get_error(my_ssh_session) );
        exit(-1);
    ssh_userauth_password(my_ssh_session, NULL, pass);
    ssh_disconnect(my_ssh_session);
    ssh_free(my_ssh_session);

When I try to compile the code the error message says:

user@neodym:~/Desktop/projects/ssh$ gcc -lssh ssh_client.c 
/tmp/ccGihId0.o: In function `main':
ssh_client.c:(.text+0x2a): undefined reference to `ssh_new'
ssh_client.c:(.text+0x57): undefined reference to `ssh_options_set'
ssh_client.c:(.text+0x6c): undefined reference to `ssh_options_set'
ssh_client.c:(.text+0x84): undefined reference to `ssh_options_set'
ssh_client.c:(.text+0x90): undefined reference to `ssh_connect'
ssh_client.c:(.text+0xa5): undefined reference to `ssh_get_error'
ssh_client.c:(.text+0xe2): undefined reference to `ssh_userauth_password'
ssh_client.c:(.text+0xee): undefined reference to `ssh_disconnect'
ssh_client.c:(.text+0xfa): undefined reference to `ssh_free'
collect2: error: ld returned 1 exit status

I all ready googled but nothing has worked so far.

The libssh header files are getting installed at /usr/include/libssh/ so gcc should be able to find those.

Can you help me to fix this?

Are you trying to compile statically or compile at all? What if you remove the #define LIBSSH_STATIC 1 ? What if you add the -static compiler option? – KamilCuk Jan 19, 2019 at 10:01 @Kamil Cuk It seems like nothing really changes when I remove the #define LIBSSH_STATIC 1. I only including it becouse the libssh API was advising to do so. – anon Jan 19, 2019 at 10:14

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.