File: build.dox

package info (click to toggle)
libgadu 1:1.9.0-2+squeeze2
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 2,828 kB
  • ctags: 735
  • sloc: ansic: 10,507; sh: 10,195; perl: 320; makefile: 161
file content (73 lines) | stat: -rw-r--r-- 2,602 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/**

\defgroup build Kompilacja

\details

Kompilację biblioteki na systemach uniksowych lub uniksopodobnych (np. Windows
+ Cygwin) przeprowadza się według typowego schematu:

\code
$ ./configure
$ make
# make install
\endcode

Gdzie ostatnią komendę wykonuje się z prawami administratora. Aby zainstalować
bibliotekę w katalogu użytkownika, można wykonać polecenia:

\code
$ ./configure --prefix=/katalog/użytkownika/libgadu
$ make
$ make install
\endcode

Następnie, aby użyć lokalnie zainstalowanej kopii biblioteki, zwykle należy
dodać do zmiennej \c CFLAGS opcję \c -I/katalog/użytkownika/libgadu/include , a do \c LDFLAGS opcję \c -L/katalog/użytkownika/libgadu/lib.

\section build-cross Kompilacja skrośna

Przy kompilacji skrośnej konieczne jest użycie parametru
\c --with-c99-vsnprintf lub \c --without-c99-vsnprintf w skrypcie \c configure,
który mówi o tym, że funkcje rodziny \c sprintf() na docelowej platformie są
zgodne lub niezgodne ze standardem C99. Jeśli żaden z powyższych parametrów
nie zostanie użyty, skrypt \c configure spróbuje uruchomić program testowy,
co przy kompilacji skrośnej się nie powiedzie.

\section build-resolver Rozwiązywanie nazw

Biblioteka oferuje dwa sposoby rozwiązywania nazw serwerów w trybie
asynchronicznym: za pomocą osobnego procesu lub za pomocą osobnego wątku.
Druga możliwość jest zalecana dla programów, które korzystają z wątków
systemowych, ponieważ użycie funkcji \c fork() do tworzenia procesu potomnego
w aplikacji korzystającej z wątków może powodować problemy. W wersjach
wcześniejszych niż 1.9.0 sposób rozwiązywania nazw był wybierany na etapie
kompilacji, co powodowało problemy, gdy w systemie były zainstalowane aplikacje
korzystające i niekorzystające z wątków systemowych. Od wersji 1.9.0, jeśli
jest to możliwe, kompilowane są obie wersje, a wybór jest dokonywany przez
aplikację. Dostępność opcji przedstawia poniższa tabela:

<table>
<tr>
<th>Opcja \c configure </th>
<th>pthread dostępne</th>
<th>pthread niedostępne</th>
</tr>
<tr>
<td>brak</td>
<td>\c GG_RESOLVER_FORK (domyślnie)<br>\c GG_RESOLVER_PTHREAD<br>\c GG_RESOLVER_CUSTOM</td>
<td>\c GG_RESOLVER_FORK (domyślnie)<br>\c GG_RESOLVER_CUSTOM</td>
</tr>
<tr>
<td>\c --with-pthread</td>
<td>\c GG_RESOLVER_FORK<br>\c GG_RESOLVER_PTHREAD (domyślnie)<br>\c GG_RESOLVER_CUSTOM</td>
<td>błąd</td>
</tr>
<tr>
<td>\c --without-pthread</td>
<td>\c GG_RESOLVER_FORK (domyślnie)<br>\c GG_RESOLVER_CUSTOM</td>
<td>\c GG_RESOLVER_FORK (domyślnie)<br>\c GG_RESOLVER_CUSTOM</td>
</tr>
</table>

*/