2010-06-10 4 views
2

리눅스에서 libssh2 라이브러리를 컴파일하려고하는데, 예제를 컴파일하려고하면 많은 오류가 발생하며 헤더 파일을 포함하더라도 , 그것은 여전히 ​​그것을 요구합니다. 여기 리눅스에서 외부 라이브러리를 컴파일 할 때의 문제

~/ 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 
+6

는 메시지를 읽습니다. 첫 번째 것은 포함 된 libssh2_config.h 파일을 찾을 수 없다는 것입니다. 문제를 해결하면 다른 모든 문제가 해결 될 가능성이 있습니다. 단지 손을 내밀고 다른 사람에게 묻는 대신 오류 메시지를 읽음으로써 많은 것을 배울 수 있습니다. –

답변

0

현재 git 빌드를 복제하고 1.2.5 relase로 갔지만 문제를 재현 할 수 없습니다.

./buildconf 
./configure 
make 

잘 작동합니다. 정확히 무엇을하려는 거니?

+0

typofix : 두 번째 줄은'./configure'이어야합니다. 물론 – ShinTakezou

2

: libssh2_config.h

는에 포함 지시어가있다 소스 코드이므로 -I 옵션을 사용하여 헤더 경로를 지정해야합니다. gcc -I/home/Roosevelt/libssh2-1.2.5/src

옵션은 #include 지시문을 사용하여 소스 코드에 명시 적으로 포함되지 않은 헤더 파일을 포함하는 데 사용됩니다.

+0

@Kris, 예. 명령 행에 여러 개의 -I 옵션을 사용할 수 있습니다. 그것들은 모두 검색된 디렉토리 목록에 추가됩니다. – philant

+0

@Kris : 이제 링크 에디션 문제입니다. 이 새로운 오류 메시지로 연결되는 명령은 무엇입니까? 아마도 '-L -lssh2'행을 따라 뭔가를 추가해야 할 것입니다. – philant

+0

이 명령을 사용했습니다 : ~ $ gcc -include /home/Rosevelt/libssh2-1.2.5/include/libssh2.h -o lolbaise /home/Rosevalt/libssh2-1.2.5/example/scp.c –