[gnuTLS] Jak pawidłowo zainstalować i używać biblioteki?

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
jorul
Piegowaty Guziec
Piegowaty Guziec
Posty: 24
Rejestracja: 04 lip 2009, 14:56
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

[gnuTLS] Jak pawidłowo zainstalować i używać biblioteki?

Post autor: jorul »

Witam,
Muszę napisać program używający biblioteki gnuTLS, jednak mam problem z jej instalacją.
Postępuję zgodnie z tym co jest napisane na tej stronie:
http://www.linuxfromscratch.org/blfs/vi ... nutls.html

Jednak po wykonaniu make check coś tam wyrzuca na ekran, aż się w końcu zapętla w takim miejscu:

Kod: Zaznacz cały

client -28: Resource temporarily unavailable, try again.
loop invoking client:
client_pull len 5 has 0
client -28: Resource temporarily unavailable, try again.
loop invoking client:
client_pull len 5 has 0
client -28: Resource temporarily unavailable, try again.
loop invoking client:
client_pull len 5 has 0
Próbowałem to zignorować, ale podczas kompilacji przykładowego programu, który można znaleźć tu:
http://www.gnu.org/software/gnutls/manu ... _002b_002b

widzę masę błędów typu:

Kod: Zaznacz cały

g++ -Wall -o "tls" "tls.cpp" (w katalogu /home/kuba/Programy C++)
Kompilacja nie powiodła się
/tmp/ccJiE4uC.o: In function `main':
tls.cpp:(.text+0x88): undefined reference to `gnutls_global_init'
tls.cpp:(.text+0x96): undefined reference to `gnutls::client_session::client_session()'
tls.cpp:(.text+0xa4): undefined reference to `gnutls::certificate_credentials::certificate_credentials()'
tls.cpp:(.text+0xc2): undefined reference to `gnutls::certificate_credentials::set_x509_trust_file(char const*, gnutls_x509_crt_fmt_t)'
tls.cpp:(.text+0xda): undefined reference to `gnutls::session::set_credentials(gnutls::credentials&)'
tls.cpp:(.text+0xf8): undefined reference to `gnutls::session::set_priority(char const*, char const**)'
tls.cpp:(.text+0xfd): undefined reference to `tcp_connect'
tls.cpp:(.text+0x11b): undefined reference to `gnutls::session::set_transport_ptr(void*)'
tls.cpp:(.text+0x129): undefined reference to `gnutls::session::handshake()'
tls.cpp:(.text+0x30a): undefined reference to `gnutls::session::send(void const*, unsigned int)'
tls.cpp:(.text+0x32a): undefined reference to `gnutls::session::recv(void*, unsigned int)'
tls.cpp:(.text+0x4f2): undefined reference to `gnutls_strerror'
tls.cpp:(.text+0x6fe): undefined reference to `gnutls::session::bye(gnutls_close_request_t)'
tls.cpp:(.text+0x70c): undefined reference to `gnutls::certificate_credentials::~certificate_credentials()'
tls.cpp:(.text+0x734): undefined reference to `gnutls::certificate_credentials::~certificate_credentials()'
tls.cpp:(.text+0x750): undefined reference to `gnutls::client_session::~client_session()'
tls.cpp:(.text+0x77b): undefined reference to `gnutls::client_session::~client_session()'
tls.cpp:(.text+0x869): undefined reference to `tcp_close'
tls.cpp:(.text+0x86e): undefined reference to `gnutls_global_deinit'
collect2: ld returned 1 exit status
Może mi ktoś pomóc i napisać co robię źle?
verdorben
Wytworny Kaczor
Wytworny Kaczor
Posty: 470
Rejestracja: 30 mar 2009, 18:00
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: MATE
Architektura: ARM

Odp: [gnuTLS] Problemy przy instalacji

Post autor: verdorben »

To może zainstaluj gnuTLS z gotowego pakietu Ubuntu!
perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);'
Inny OS: PLD Linux
jorul
Piegowaty Guziec
Piegowaty Guziec
Posty: 24
Rejestracja: 04 lip 2009, 14:56
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [gnuTLS] Problemy przy instalacji

Post autor: jorul »

W jaki sposób to zrobić?
verdorben
Wytworny Kaczor
Wytworny Kaczor
Posty: 470
Rejestracja: 30 mar 2009, 18:00
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: MATE
Architektura: ARM

Odp: [gnuTLS] Problemy przy instalacji

Post autor: verdorben »

jorul pisze:W jaki sposób to zrobić?
Poczytać dokumentację apt-get , użyć wyszukiwarki na forum.
perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);'
Inny OS: PLD Linux
jorul
Piegowaty Guziec
Piegowaty Guziec
Posty: 24
Rejestracja: 04 lip 2009, 14:56
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [gnuTLS] Problemy przy instalacji

Post autor: jorul »

verdorben pisze:Poczytać dokumentację apt-get , użyć wyszukiwarki na forum.
Tyle jak użyć apt-get to już zdążyłem ogarnąć. Bardziej chodziło mi o nazwę tego pakietu. Na forum raczej nie ma, bo o gnuTLS jest tylko ten wątek i jeszcze jeden:(
naszy
Piegowaty Guziec
Piegowaty Guziec
Posty: 8
Rejestracja: 02 lip 2009, 15:11
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME

Odp: [gnuTLS] Jak pawidłowo zainstalować i używać biblioteki?

Post autor: naszy »

Jak na mój gust biblioteka nie została dołączona do programu, stąd błędy "undefined reference to...". Spróbuj skompilować z opcją -l<nazwa_biblioteki>. Nie potrafię powiedzieć, jakiej nazwy trzeba użyć w przypadku gnuTLS. Przykładowo, dla OpenSSL jest "-lssl".
jorul
Piegowaty Guziec
Piegowaty Guziec
Posty: 24
Rejestracja: 04 lip 2009, 14:56
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [gnuTLS] Jak pawidłowo zainstalować i używać biblioteki?

Post autor: jorul »

Dzięki naszy, chyba naprowadziłeś mnie na dobry trop.

W dokumentacji jest nawet kawałek na temat kompilacji programów używających tej biblioteki:
http://www.gnu.org/software/gnutls/manu ... the-source

Niestety, w moim przypadku zastosowanie takiej linijki jak tam powoduje pojawienie się innych błędów:

Kod: Zaznacz cały

g++ ?pkg-config libgnutls --cflags --libs? -Wall -o "test" "test.cpp"  (w katalogu /home/kuba)
Kompilacja nie powiodła się
g++: ?pkg-config: No such file or directory
g++: libgnutls: No such file or directory
cc1plus: error: unrecognized command line option "-fcflags"
cc1plus: error: unrecognized command line option "-flibs?"
Kiedy wpisałem w wyszukiwarce "gnutls.h" to nie znalazło mi żadnego pliku. Czy to znaczy, że jednak coś z instalacją poszło nie tak?
naszy
Piegowaty Guziec
Piegowaty Guziec
Posty: 8
Rejestracja: 02 lip 2009, 15:11
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME

Odp: [gnuTLS] Jak pawidłowo zainstalować i używać biblioteki?

Post autor: naszy »

Prawdopodobnie zabrakło apostrofów. Spróbuj tak:

Kod: Zaznacz cały

g++ -o test test.cpp `pkg-config libgnutls --cflags --libs`
.
jorul
Piegowaty Guziec
Piegowaty Guziec
Posty: 24
Rejestracja: 04 lip 2009, 14:56
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [gnuTLS] Jak pawidłowo zainstalować i używać biblioteki?

Post autor: jorul »

Niestety, ale były tam apostrofy. Geany je jakoś usunęło przy wyświetlaniu komunikatów.

Spróbowałem bezpośrednio z terminala i po wpisaniu linijki, tak jak radziłeś, zobaczyłem takie coś:

Kod: Zaznacz cały

kuba@kuba-laptop:~/Programy C++$ g++ -o test test.cpp `pkg-config libgnutls --cflags --libs`
Package libgnutls was not found in the pkg-config search path.
Perhaps you should add the directory containing `libgnutls.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libgnutls' found
/tmp/ccG4S3mL.o: In function `main':
test.cpp:(.text+0x88): undefined reference to `gnutls_global_init'
test.cpp:(.text+0x96): undefined reference to `gnutls::client_session::client_session()'
test.cpp:(.text+0xa4): undefined reference to `gnutls::certificate_credentials::certificate_credentials()'
test.cpp:(.text+0xc2): undefined reference to `gnutls::certificate_credentials::set_x509_trust_file(char const*, gnutls_x509_crt_fmt_t)'
test.cpp:(.text+0xda): undefined reference to `gnutls::session::set_credentials(gnutls::credentials&)'
test.cpp:(.text+0xf8): undefined reference to `gnutls::session::set_priority(char const*, char const**)'
test.cpp:(.text+0xfd): undefined reference to `tcp_connect'
test.cpp:(.text+0x11b): undefined reference to `gnutls::session::set_transport_ptr(void*)'
test.cpp:(.text+0x129): undefined reference to `gnutls::session::handshake()'
test.cpp:(.text+0x30a): undefined reference to `gnutls::session::send(void const*, unsigned int)'
test.cpp:(.text+0x32a): undefined reference to `gnutls::session::recv(void*, unsigned int)'
test.cpp:(.text+0x4f2): undefined reference to `gnutls_strerror'
test.cpp:(.text+0x6fe): undefined reference to `gnutls::session::bye(gnutls_close_request_t)'
test.cpp:(.text+0x70c): undefined reference to `gnutls::certificate_credentials::~certificate_credentials()'
test.cpp:(.text+0x734): undefined reference to `gnutls::certificate_credentials::~certificate_credentials()'
test.cpp:(.text+0x750): undefined reference to `gnutls::client_session::~client_session()'
test.cpp:(.text+0x77b): undefined reference to `gnutls::client_session::~client_session()'
test.cpp:(.text+0x869): undefined reference to `tcp_close'
test.cpp:(.text+0x86e): undefined reference to `gnutls_global_deinit'
collect2: ld returned 1 exit status
Ale czy nie jest dziwne to, że nie jestem w stanie wyszukać pliku gnutls.h?
naszy
Piegowaty Guziec
Piegowaty Guziec
Posty: 8
Rejestracja: 02 lip 2009, 15:11
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME

Odp: [gnuTLS] Jak pawidłowo zainstalować i używać biblioteki?

Post autor: naszy »

Ja mam gnutls.h w "/usr/include/gnutls". Na Twoim miejscu zainstalowałbym bibliotekę jeszcze raz (możesz skorzystać z menedżera pakietów: System -> Administracja -> Menedżer pakietów Synaptic). Przy okazji zauważyłem, że w repozytoriach ubuntu od roku tkwi wersja 2.4.*, podczas gdy aktualna to 2.8.1. Myślę, że celowym było by zainstalowanie najnowszej wersji ze źródeł (ale tu także trzeba liczyć się z tym, że nie wszystko może zadziałać od razu..).
jorul
Piegowaty Guziec
Piegowaty Guziec
Posty: 24
Rejestracja: 04 lip 2009, 14:56
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [gnuTLS] Jak pawidłowo zainstalować i używać biblioteki?

Post autor: jorul »

No właśnie z tego co widzę, to w tych paczkach jest tylko stara wersja :( A ja potrzebuję TLS v1.1
naszy
Piegowaty Guziec
Piegowaty Guziec
Posty: 8
Rejestracja: 02 lip 2009, 15:11
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME

Odp: [gnuTLS] Jak pawidłowo zainstalować i używać biblioteki?

Post autor: naszy »

Właśnie zainstalowałem najnowszą wersję ze źródeł, więc napiszę Ci, jak to zrobić:

Kod: Zaznacz cały

1) pobierz najnowsze źródła z ftp://ftp.gnu.org/pub/gnu/gnutls/
2) rozpakuj archiwum do jakiegoś katalogu na dysku
3) wejdź do tego katalogu
4) z prawami root-a wykonaj kolejno:
(a) ./configure
(b) make
(c) make install
Jeśli gdziekolwiek w punkcie 4 dostaniesz błędy, to wtedy będziemy kombinować dalej. U mnie przeszło bez problemów.
jorul
Piegowaty Guziec
Piegowaty Guziec
Posty: 24
Rejestracja: 04 lip 2009, 14:56
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [gnuTLS] Jak pawidłowo zainstalować i używać biblioteki?

Post autor: jorul »

Jeżeli po make nie robie make check, to też przechodzi bez problemów.

A udaje się Tobie zkompilować ten program z przykładu?

EDIT:
Ewentualnie jeżeli serwer używa TLS v1.1, to klient może użyć v1.0? Wtedy popróbowałbym z openssl
naszy
Piegowaty Guziec
Piegowaty Guziec
Posty: 8
Rejestracja: 02 lip 2009, 15:11
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME

Odp: [gnuTLS] Jak pawidłowo zainstalować i używać biblioteki?

Post autor: naszy »

Udało mi się, ale musiałem dołączyć biblioteki libgnutls.so oraz libgnutlsxx.so.

Spróbuj zatem skompilować w taki sposób:

Kod: Zaznacz cały

g++ -Wall -g test.cpp -o test -lgnutls -lgnutlsxx
Powinno zadziałać :-).

Zarówno klient jak i serwer powinni używać tej samej wersji protokołu, więc nie powinieneś na jednym ustawiać TLS 1.0, a na drugim TLS 1.1. Z resztą już chyba nie ma takiej potrzeby.. ;-)
jorul
Piegowaty Guziec
Piegowaty Guziec
Posty: 24
Rejestracja: 04 lip 2009, 14:56
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: [gnuTLS] Jak pawidłowo zainstalować i używać biblioteki?

Post autor: jorul »

naszy, wielkie dzięki za pomoc i cierpliwość:) Wygląda na to, że problem rozwiązany:)
naszy
Piegowaty Guziec
Piegowaty Guziec
Posty: 8
Rejestracja: 02 lip 2009, 15:11
Płeć: Mężczyzna
Wersja Ubuntu: 9.04
Środowisko graficzne: GNOME

Odp: [gnuTLS] Jak pawidłowo zainstalować i używać biblioteki?

Post autor: naszy »

Nie ma za co ;-)
Powodzenia w dalszej części projektu!
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 21 gości