ďťż

Blog literacki, portal erotyczny - seks i humor nie z tej ziemi


 











































Strefa Linuksa



















Strona główna  | 
Spis treści  | 
O autorze  | 
Księga gości  | 
Sonda  | 
Forum  | 
Reklama  | 
Kontakt  | 
Linki   | 





















Jeśli zacząłeś pisać jakiś program dla Linuxa, na pewno trafiłeś na problem
zarządzania kodem źródłowym. Musisz za wszystko odpowiadać, nie ma żadnej
automatyzacji. W dodatku problematyczne są pliki nagłówkowe, gdyż gdy zmienisz
jeden z nich, zależne źródłą nie zostaną przekompilowane, a kompilator ten fakt
przemilczy... i powstaje program, który zakańcza swe działanie błędem
segmentacji. Problemem też jest dystybucja źródeł i dokumentacji. Czy tak musi
być? Nie! Wszystko dzięki wspaniałym programom autoconf i automake z projektu
GNU. Ale po kolei, bo się pogubimy.
Pakiety oprogramowania w GNU mają zazwyczaj strukturę głęboką, tzn. mają
wiele katalogów. Zaprezentuję tutaj typową strukturę - od takiej należy zacząć,
jeśli chce się tworzyć jakikolwiek program GNU. (za pomocą (auto) zaznaczyłem
elementy generowane automatycznie, zaś za pomocą (np) przykłady)


    /doc - dokumentacja TexInfo, HTML i manuale

    pakiet.1 - strona manuala
    pakiet.info - strona GNU Info (auto)
    pakiet.texi - źródła strony GNU Info
    texinfo.tex - generator GNU Info

    /include - pliki nagłówkowe
    /intl - pakiet wielonarodościowy (auto)
    /po - pliki z tłumaczeniami (auto)

    ChangeLog - log zmian
    pakiet.pot - matryca tłumaczeń (auto)
    pl.gmo - skompilowane tłumaczenia polskie (auto,np)
    pl.po - źródła tłumaczeń polskich (np)
    potfiles - lista plików z komunikatami (auto)
    potfiles.in - żródło powyższego

    /src - źródła
    ABOUT-NLS - o wielojęzykowości (auto)
    AUTHORS - autorzy
    ChangeLog - log zmian
    COPYING - licencja
    INSTALL - instrukcje instalacji
    NEWS - nowości
    README - o programie
    TODO - lista rzeczy do zrobienia
    linstall-sh - niezbędne!

    Oprócz tego w każdym katalogu musi być plik Makefile.am, natomiast
    w głównym config.in.
    Oto przykładowy plik configure.in, wraz z tłumaczeniami (dla uproszczenia
    pomijam i18n):
    AC_INIT(README) > Inicjalizacja Autoconf (parametrem wybrany plik)
    AM_CONFIG_HEADER(src/config.h) > Tworzenie nagłówka konfiguracji
    AM_INIT_AUTOMAKE(projekt,wersja) > Ustalenie nazwy i wersji projektu
    AC_ISC_POSIX > test na zgodność z posixem
    AC_PROG_CC > sprawdzenie kompilatora C
    AC_PROG_CXX > sprawdzenie kompilatora C++
    AC_PROG_MAKE_SET > sprawdzenie make
    AC_CHECK_PROG(AUTOCONF, autoconf, autoconf) > sprawdzenie autoconf'a
    AC_CHECK_PROG(AUTOMAKE, automake, automake) > sprawdzenie automake'a
    AC_CHECK_PROG(AUTOHEADER, autoheader, autoheader) > sprawdzenie autoheader'a
    AC_CHECK_PROG(ACLOCAL, aclocal, aclocal) > sprawdzenie aclocal'a
    AC_CHECK_PROG(LIBTOOL, libtool, libtool) > sprawdzenie libtool'a
    AC_PROG_INSTALL > sprawdzenie install'a
    AC_HEADER_STDC > sprawdzenie nagłówków C
    AC_C_CONST > sprawdzenie, czy kompilator używa const
    AC_C_INLINE > sprawdzenie, czy kompilator używa inline
    AC_OUTPUT(Makefile src/Makefile) > wygenerowanie Makefile'ów
    Następnie trzeba przygotować pliki Makefile.am. W głównym katalogu
    wystarczy wiersz: SUBDIRS = src. Natomiast w katalogu src przykładowy
    pliczek wygląda tak:
    bin_PROGRAMS = program
    program_SOURCES = main.c text.c xxx.c
    program_LDADD = -lm
    DEFS = -D__USE_GNU -D_GNU_SOURCE
    Oczywiście, w tym pliku działa również SUBDIRS (jeśli trzeba podzielić
    projekt na jeszcze więcej katalogów).
    Wreszcie, należy w głównym katalogu (w którym powinny być pliki: AUTHORS,
    COPYING, ChangeLog, INSTALL, Makefile.am, NEWS, README,
    configure.in, install-sh, missing, mkinstalldirs (w tym ostatnie trzy należy
    skopiować z /usr/share/automake)) należy wykonać po kolei:
    autoconf
    automake
    ./configure
    I projekt gotowy jest do kompilacji poleceniem make.
    Można się pobawić i18n: podpowiem, że trzeba w configure.in dodać do
    SUBDIRS po oraz intl, dostawić ALL_LINGUAS="pl", AM_GNU_GETTEXT, a w
    AC_OUTPUT dodać intl/Makefile po/Makefile.in po/Makefile. W katalogu
    projektu należy wykonać gettextize, co utworzy katalogi intl i po.
    W katalogu po należy do POTFILES.in dopisać wszystkie pliki z tłumaczeniami
    (np. src/main.c). Ostatecznie, po wywołaniu autoconf, automake i make,
    trzeba skopiować po/projekt.pot na po/pl.po. Szczegóły w dokumentacji.
    System autoconf i automake nadaje się również do tworzenia
    dokumentacji texinfo i man. Po szczegóły odsyłam do dokumentacji.



















    Strona testowana z Mozillą 0.9.1, Konquerorem, Lynxem, Linksem oraz IE 5.5.




































    w górę


















    Copyright © 2000-2001 Marek Materzok  Wszelkie Prawa Zastrzeżone.
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • qualintaka.pev.pl