Ads_700x200

tme

sobota, 15 września 2012

Eclipse AVR GCC - dołączanie bibliotek *.a

Witam,

Ostatnio zaciąłem się w poszukiwaniu rozwiązania jak można dołączyć do projektu ale w ECLIPSE bibliotek dostarczonych od kogoś i skompilowanych do plików z rozszerzeniem *.a Okazało się bowiem, że dołączenie ich np. do AVR Studio nie stanowi większego kłopotu, to jednak do Eclipse hmmmm .... tu zaczęły się "schody". Jako przykładowy projekt wziąłem sobie bibliotekę do obsługi wyświetlacza monochromatycznego LCD opartego o sterownik KS108. Przygotowano dość fajne biblioteki na stronie: LINK. Można pobrać z niej dokładny opis w PDF jak należy skonfigurować te biblioteki w AVR Studio 4.xx. Niestety ta metoda nie działa wprost w Eclipse. Na szczęście jest rozwiązanie ...



Zgodnie z instrukcją, mamy biblioteki w folderach np.:

C:\ProGFX
     |
     +- include
     |
     +- lib

W folderze "include" znajdują się pliki nagłówkowe *.h natomiast w folderze "lib" jest biblioteka skompilowana wstępnie do pliku *.a o nazwie "libgfx.a". Nie będę teraz tutaj przytaczał opisu z tej strony jeśli chodzi o AVR Studio, bo to każdy sam może sprawdzić, ja natomiast pokażę na tym przykładzie jak należy inkludować i instalować tego typu biblioteki w ECLIPSE. Jeśli bowiem zrobimy to źle, wprowadzając domyślnie całą nazwę biblioteki "libgfx.a" tak jak w instrukcji do AVR Studio, to otrzymamy zawsze w konsoli taki komunikat:




Pierwszy krok to dodanie ścieżek do folderu z plikami nagłówkowymi w tym miejscu:


Gdy już to zrobimy to przechodzimy do ustawień LINKERA i najpierw ustawiamy ścieżkę do naszej biblioteki:


A teraz NAJWAŻNIEJSZE ;) .... dodajemy nazwę biblioteki. Ale nieco inaczej niż w AVR Studio. Otóż nazwa biblioteki jak wspomniałem wyżej to (przypominam) "libgfx.a". Natomiast my musimy wprowadzić TYLKO i WYŁĄCZNIE nazwę ale bez przedrostka "lib" oraz bez rozszerzenia ".a", czyli "gfx", tak jak niżej na obrazku:


Od tej pory cieszymy się prawidłową kompilacją plików z udziałem tej biblioteki ;) .... naturalnie ta sama zasada dotyczy dołączania w Eclipse wszystkich bibliotek *.a Po prostu dodajemy samą nazwę bez przedrostka lib oraz bez rozszerzenia .a

8 komentarzy:

  1. A co z bibliotekami, których nazwy nie zaczynają się na 'lib...' ?

    OdpowiedzUsuń
    Odpowiedzi
    1. Najpierw warto się zapoznać z zasadami tworzenia bibliotek tego typu, jest tam wyraźnie mowa o tym przedrostku lib - więc nikt kto je pisze nie będzie tworzył nazw np

      liblibgfx.a

      tylko

      libgfx.a

      tak samo jak nikt nie stworzy biblioteki

      lib.a

      ale jeszcze raz powtarzam, to jest artykuł o inkludowaniu a nie o tworzeniu bibliotek - bo tak trochę jakby może nie od tej strony pytanie zadajesz chyba (tak mi się wydaje choć może się mylę)

      Usuń
  2. Teraz jasne, zapamiętam, dziękuję.

    OdpowiedzUsuń
  3. Czy autor projektu ma zamiar napisać totorial na temat tworzenia takich bibliotek? Jestem w temacie zielony a nie mogę znaleźć potrzebnych informacji..

    OdpowiedzUsuń
    Odpowiedzi
    1. Raczej na pewno nie będę tworzył tutoriala na temat tworzenia takich bibliotek, dlatego że wydaje mi się takie coś troszkę mało celowe - jeśli biblioteki tworzone miałyby być przez jedną osobę dla samego siebie czy tam np dla kolegi. Bo nakład pracy spory - szczególnie przy dobrym zdefiniowaniu warunków dla przeróżnych procesorów a efekt jaki ? komu się będzie chciało to robić ? ;) to jest bardziej opłacalne dla większych zespołów, firm czy organizacji w ramach przygotowywania np własnych narzędzi. A prywatnie wystarczają zwykłe pseudo biblioteki - czyli foldery z otwartymi funkcjami, które czasem trzeba sobie lekko przerobić do danego procesora.

      Usuń
  4. Witam,

    na wstępie wieki Szacunek dla Pana za bloga i bluebook w czasie którego czytaniu jestem, i za poradniki Video.
    Czy możliwe jest do Eclipse dodawanie bibliotek z Arduino ? w necie jest duży ich zasub i ciągle przybywają, czy można prosić o opis jak użyć takich bibliotek z Arduino w Eclipse ??

    OdpowiedzUsuń
    Odpowiedzi
    1. Arduino to taki ala język C++ a nie C. Tymczasem my (tzn ja) programujemy nie w C++ a w czystym C .... (a nie w Eclipse) bo Eclipse panie kolego to TYLKO zwykły edytor tekstu dla programisty. Niech kolega sobie obejrzy TEN cykl poradników:

      https://www.youtube.com/playlist?list=PLtXXWLsA5QNg1SLhEnlM8Emlg-Mc5ydhf

      to zobaczysz jak się adaptuje biblioteki z arduino do C ;) ... właśnie m.in za to ludzie doceniają ten cykl poradników

      Usuń
  5. Wielkie dzięki za odpowiedz, siadam i oglądam poradniki.

    Dziękuję bardzo.

    OdpowiedzUsuń