niedziela, 2 marca 2008

QCad

Linuks z dnia na dzień wydaje mi się coraz fajniejszy ;-). Dzisiaj zainstalowałem sobie program QCad... myslałem, że to kolejny Open Source ktory się do niczego nie nadaje i straszliwie się zawiodłem. Program jest bardzo fajny - jak dla mnie bardziej intuicyjny niż produkt firmy Autodesk a drukowanie... Bajka. Naprawdę jestem pod wrażeniem, że ktoś zrobił coś tak poządnego i udostępnił to za darmo. Do tego OGROMNA biblioteka symboli dostępna za darmo na stronie producenta... czego chcieć więcej ;-).

Jeszcze jedno - aby zainstalować te symbole - ściągamy je sobie, następnie rozpakowujemy, w katalogu

/usr/share/qcad

tworzymy folder library a następnie do niego przenosimy te biblioteki symboli, które nas interesują.

sobota, 1 marca 2008

boost::regex, asio i... Debian

No nareszcie... udało mi się w końcu skompilować przykładowy program wykorzystujący tę bibliotekę. Żebym nie zapomniał zapiszę to sobie tutaj:

#include <boost/regex.hpp> //tak się włącza nagłówek

g++ p1.cc -o p1 /usr/lib/libboost_regex-gcc-mt-1_33_1.a

albo:

g++ p1.cc -o p1 -L/usr/lib/ -lboost_regex-gcc-mt-1_33_1

tak można kompilować. Nie wiem czemu wcześniej tak nie zrobiłem ;-).

Jak już mi się to udało to zainstalowałem sobie przy okazji bibliotekę asio - do obsługi sieci. Na etch-u miałem z tym mały problem. Asio znalazłem jako pakiet źródłowy w lennym i ściągnąłem na dysk.

Wlazłem do katalogu do którego paczki ściągnąłem, następnie poprosiłem system żeby zrobił:

dpkg-source -x asio_0.3.8~rc3-2.dsc

I utworzył się katalog w tym folderze katalog asio-0.3.8~rc3. Wszedem do tego katalogu i wydałem komendę:

dpkg-buildpackage -rfakeroot -uc -b

Zostałem poinformowany o brakujących zależnościach - wszystko udało się doinstalować apt-em, następnie znów poprosiłem Debiana żeby zrobił:

dpkg-buildpackage -rfakeroot -uc -b

Tym razem bez problemów wszystko się skompilowało (chwilkę to trwało...) i stałem się posiadaczem zajebiaszczej, świezutkiej paczki .deb ;-). Pojawiła się ona katalog wyżej - czyli tam, gdzie ściągnąłem pakiet źródłowy a nazywała się:

libasio-dev_0.3.8~rc3-2_all.deb

Pojawiła się też druga paczka - nie wiem skąd jak i dlaczego ale się pojawiła.

libasio-doc_0.3.8~rc3-2_all.deb

Obie zainstalowałem:

dpkg -i libasio-dev_0.3.8~rc3-2_all.deb
dpkg -i libasio-doc_0.3.8~rc3-2_all.deb

Teraz przykadowy program - kod z tutoriala, biblioteki asio, nie wiem czy wolno mi go tutaj wpisać ale co tam, piszę skąd poniższy kod wziąłem, zatem:

#include <iostream>
#include <asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>

int main()
{
asio::io_service io;

asio::deadline_timer t(io, boost::posix_time::seconds(5));
t.wait();

std::cout << "Hello, world!\n";

return 0;
}

a kompilacja - bo z tym znowu miałem problem... a wystarczyło czytać co kompilator do mnie mówi ;-)

g++ p2.cc -o p2 -L/usr/lib -lboost_date_time-gcc-1_33_1 -pthread

Wiadomo - date_time z boosta i pthread się linkuje. pthread w celu obsługi wątków - asio korzysta z tego gdzieś tam głęboko w swoich klasach. Można zrobć żeby korzystało z wątków boosta i chyba jeszcze z regexa boostowego ale ja już się w to na pewno nie będę bawił ogólnie to z tym boostem na debianie jest trochę dziwnie chociaż pewnie i tak jest w tym jakiś głębszy sens którego ja jeszcze nie rozumiem.

Wszystkie "ficzery" Debiana które na początku wydawały mi się irytujące zawsze okazywały sie jednak przemyślanymi rozwiązaniami więc pewnie i z tym jest tak samo.