Forum Coders' city Strona Gwna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UytkownicyUytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj si, by sprawdzi wiadomociZaloguj si, by sprawdzi wiadomoci   ZalogujZaloguj 

Potrzebuj szybkiej odpowiedzi na moje pytanie... Zasady

[GSL] Instalacja samodzielnie skompilowanej biblioteki.



 
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Biblioteki
Zobacz poprzedni temat :: Zobacz nastpny temat  
Autor Wiadomo
lynxpl



Doczy: 07 Kwi 2015
Posty: 15
Skd: Warszawa

PostWysany: Pi Cze 05, 2015 12:43 pm  OP    Temat postu: [GSL] Instalacja samodzielnie skompilowanej biblioteki. Odpowiedz z cytatem Pisownia

Witajcie ponownie.

Potrzebujc uy jednej z funkcji z GSL (GNU Science Library 1.16), skompilowaem j sam przy pomocy MSYSa (1.0 wraz z minGW 4.8.1 na Win7 x64) z plikw rdowych do plikw bibliotek statycznych (*.a). Jest to moja pierwsza skompilowana samodzielnie biblioteka ever wic poruszam si w tym temacie jak we mgle nie do koca moe rozumiejc jak to dziaa. Posikowaem si instruktaem std: link.
Czyli komendy dla MSYSa odpalonego w c/cpplibs/gsl:
Kod:
./configure --prefix=/cpplibs/gsl
make
make -k check > log_check 2>&1

Po dokonaniu pre-kompilacji, zgodnie z powysz instrukcj, przekopiowaem do /minGW/include folder /gsl z headerami, za do minGW/lib/gsl przekopiowaem biblioteki:
Cytat:
libgsl.a
libgsl.dll.a
libgsl-0.dll
libgslcblas.dll.a
libgslcblas-0.dll

No i tu jest klops. Bo kompilator widzi nagwki (bo jak ich nie widzia to pisa wprost o ktry chodzi), ale nie widzi bibliotek zgaszajc
Cytat:
undefined reference to (dowolny obiekt z GSL, np. "gsl_odeiv2_driver_alloc_y_new")

Prbowaem rnych sztuczek ze wskazywaniem w opcjach projektu/kompilatora cieek do folderw gsl/lib i gsl/gsl (headery) ale to na nic.
Czy powinienem, mimo e generalnie biblioteka jest linkowana statycznie, zdefiniowa zmienne systemowe dla GSL tak jak tu? Chyba nie-prawda?
Czy powinienem prbowa pre-kompilacji z parametrem --disable-shared mimo e bez niego zakoczya si powodzeniem? Oglnie pytanie brzmi, co zrobiem nie tak?

PS. Jak wida, wykonaem te test 'make check'. Bdw nie zgosi. Jedynie jedno niepowodzenie (FAIL) na samym kocu (Peny log jest tu).
Cytat:
============================================================================
Testsuite summary for gsl 1.16
============================================================================
# TOTAL: 2
# PASS: 1
# SKIP: 0
# XFAIL: 0
# FAIL: 1
# XPASS: 0
# ERROR: 0
============================================================================
See ./test-suite.log
============================================================================
make[3]: *** [test-suite.log] Error 1
make[3]: Leaving directory `/c/cpplibs/gsl'
make[2]: *** [check-TESTS] Error 2
make[2]: Leaving directory `/c/cpplibs/gsl'
make[1]: *** [check-am] Error 2
make[1]: Leaving directory `/c/cpplibs/gsl'
make: *** [check-recursive] Error 1
make: Target `check' not remade because of errors.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
Taeril



Doczy: 20 Cze 2005
Posty: 1249

PostWysany: Nie Cze 07, 2015 10:33 am      Temat postu: Odpowiedz z cytatem Pisownia

W spisie bibliotek nie widz libgslcblas.a - nie masz wersji statycznej?
Generalnie projekty korzystajce z autotools (te ze skryptem configure) sugeruj konfigurowa z --enable-static --disable-shared aby mie tylko wersj statyczn. Albo na odwrt i tylko dynamiczn.

Teraz masz trzy rodzaje plikw.
1. Nagwki lduj w include i jak masz w podkatalogu, to odpowiednio bdzie wyglda linijka z #include albo bdziesz musia poda dany katalog w -I
Czyli na przykad masz .../mingw/include/gsl/gsl_sf_bessel.h oraz #include <gsl/gsl_sf_bessel.h>
Ale moe te by #include <gsl_sf_bessel.h> oraz podany katalog w opcjach kompilatora -I .../mingw/include/gsl/gsl_sf_bessel.h
Oczywicie te trzy kropki powinny by zastpione waciwym pocztkiem cieki.

2. Pliki dll lduj w bin i albo doczasz je z programem albo mwisz systemowi gdzie ich szuka. Ale to ju mamy w tamtym temacie przedyskutowane.

3. Pliki bibliotek (.a lub .dll.a) lduj bezporednio w lib i podajesz w opcjach kompilatora -lfoo dla .../mingw/lib/libfoo.a
Analogicznie do nagwkw jak masz w niestandardowym miejscu potrzebujesz poda dodatkowy katalog w opcjach kompilatora aby wiedzia gdzie ma szuka bibliotek. A wic dla .../mingw/lib/gsl/libgsl.a w opcjach kompilatora podasz -L.../mingw/lib/gsl -lgsl
Jeszcze zamiast pary -L -l moesz poda pen ciek do pliku .a



Skoro wywala si na etapie linkowania, to kod si skompilowa wic nagwki masz OK.
Linker nie znajduje symboli biblioteki a wic powiedz jak poinformowae kompilator gdzie ich szuka. (punkt 3)


Odnonie zmiennych systemowych to ich nie potrzebujesz. Moe jak masz pliki .pc w niestandardowych miejscach, to bya jaka dla pkg-config ale jak wrzucasz wszystko w odpowiednie miejsca (include/lib/bin), to powinno wszystko po prostu dziaa.


Pisane troch na kolanie i z generalnego punktu widzenia (nie prbowaem instalowa tej biblioteki) ale moe co pomoe

_________________
T.

"Some people, when confronted with a problem, think 'I know, I'll use regular expressions.' Now they have two problems." - Jamie Zawinski
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
lynxpl



Doczy: 07 Kwi 2015
Posty: 15
Skd: Warszawa

PostWysany: Pon Cze 08, 2015 10:39 am  OP    Temat postu: Odpowiedz z cytatem Pisownia

libgslcblas.a mam w wersji statycznej. Omskna si przy przepisywaniu.
Includuje "na ostro":
Kod:
#include <gsl/gsl_errno.h>
#include <gsl/gsl_odeiv2.h>

---edit---
OK. Udao mi si w kocu rozwiza ten problem.
Majc rozmieszczenie plikw jak niej:
../cpplibs/mingw/include/gsl ->wszystkie headery;
../cpplibs/mingw/lib
Cytat:
libgsl.a
libgslcblas.a
libgslcblas.dll.a
libgsl.dll.a

../cpplibs/mingw/bin
Cytat:
libgsl-0.dll
libgslcblas-0.dll

../cpplibs/gsl ->pozostae pliki *.a konkretnych funkcji jakie powstay podczas pre-kompilacji w swoich oryginalnych podfolderach.

Dodaem nastpujce pragmy w "komendach linkera" projektu, wedle instrukcji GSL:
Cytat:
-L ../cpplibs/mingw/lib
-lgsl
-lcblas
-lm


Program zatrybi- skompilowa si i co pokaza. Dziki jeszcze raz Taeril za naprowadzenie na rdo problemu.
Powrt do gry
Zobacz profil autora Wylij prywatn wiadomo
Wywietl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Gwna -> Biblioteki Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Moesz pisa nowe tematy
Moesz odpowiada w tematach
Nie moesz zmienia swoich postw
Nie moesz usuwa swoich postw
Nie moesz gosowa w ankietach
Moesz dodawa zaczniki na tym forum
Moesz pobiera pliki z tego forum




Debug: strone wygenerowano w 0.20946 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |