-
Notifications
You must be signed in to change notification settings - Fork 106
/
Copy pathbuild.xml
executable file
·488 lines (469 loc) · 17.6 KB
/
build.xml
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: b8e1b1357def73f310c9f7405035b3acc0cb1eaf Maintainer: ae Status: ready --><!-- CREDITS: lucasnascimento,marcelsud,royopa,diegopires,ae -->
<chapter xml:id="faq.build" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Problemas de Compilação</title>
<titleabbrev>Problemas de Compilação</titleabbrev>
<para>
Esta seção reúne os erros mais comuns que ocorrem
na compilação.
</para>
<qandaset>
<qandaentry xml:id="faq.build.configure">
<question>
<para>
Eu peguei a última versão do PHP usando o serviço anônimo do GIT,
mas não há nenhum script de configuração!
</para>
</question>
<answer>
<para>
Você precisa ter o pacote GNU autoconf instalado para que possa
gerar o script configure a partir do <filename>configure.in</filename>. Basta executar
<command>./buildconf</command> no diretório raiz após a obtenção
do código fonte do servidor do GIT. (Além disso, a menos que você execute com <command>configure</command>
com a opção <literal>--enable-maintainer-mode</literal>, o
script configure não será automaticamente recompilado quando
o arquivo <filename>configure.in</filename> for atualizado, então você deve certificar-se de fazer isso
manualmente quando você perceber que o <filename>configure.in</filename> mudou. Um sintoma
disso é encontrar coisas como @VARIABLE@ em seu Makefile após
configure ou <filename>config.status</filename>tiver sido executado.)
</para>
</answer>
</qandaentry>
<qandaentry xml:id="faq.build.configuring">
<question>
<para>
Estou tendo problemas para configurar o PHP para trabalhar com Apache.
Diz que não consegue encontrar <filename>httpd.h</filename>, mas está bem onde eu disse que está!
</para>
</question>
<answer>
<para>
Você precisa informar ao script configure/setup a localização do
diretório raíz do Apache. Isto significa que você precisa especificar
<option
role="configure">--with-apache=/caminho/para/apache</option>
e <emphasis>não</emphasis> <option
role="configure">--with-apache=/caminho/para/apache/src</option>.
</para>
</answer>
</qandaentry>
<qandaentry xml:id="faq.build.lex">
<question>
<para>
Se enquanto estiver configurando o (<literal>./configure</literal>) do PHP, você se deparar com
um erro semelhante ao seguinte:
</para>
<para>
<screen>
checking lex output file root... ./configure: lex: command not found
configure: error: cannot find output from lex; giving up
</screen>
</para>
</question>
<answer>
<para>
Não deixe de ler as instruções de <link linkend="install.unix">instalação</link>
cuidadosamente e note que você precisa de ambos flex e bison
instalados para compilar o PHP. Dependendo da sua configuração você irá instalar
bison e flex a partir de uma fonte ou pacote, como um RPM.
</para>
</answer>
</qandaentry>
<qandaentry xml:id="faq.build.apache-sharedcore">
<question>
<para>
Quando tento iniciar o Apache, recebo a seguinte mensagem:
</para>
<para>
<screen>
fatal: relocation error: file /path/to/libphp4.so:
symbol ap_block_alarms: referenced symbol not found
</screen>
</para>
</question>
<answer>
<para>
Esse erro geralmente aparece quando um compila o core do Apache
como uma biblioteca DSO para uso compartilhado. Tente
reconfigurar o apache, certificando-se de usar pelo menos um dos
seguintes parâmetros:
</para>
<para>
<screen>
--enable-shared=max --enable-rule=SHARED_CORE
</screen>
</para>
<para>
Para obter mais informações, leia o arquivo <filename>INSTALL</filename>
que se encontra na pasta raíz do Apache ou a
<link xlink:href="&url.apachedso;">página sobre DSO</link> no manual do Apache.
</para>
</answer>
</qandaentry>
<qandaentry xml:id="faq.build.not-found">
<question>
<para>
Quando eu executo configure, ele diz que não pode encontrar os
arquivos de inclusão ou a biblioteca GD, gdbm, ou algum outro pacote!
</para>
</question>
<answer>
<para>
Você pode fazer o script configure procurar por arquivos de cabeçalho e bibliotecas
em locais diferentes, especificando parâmetros adicionais para passar para
o pré-processador C e linker, tais como:
<programlisting>
<![CDATA[
CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure
]]>
</programlisting>
If you're using a csh-variant for your login shell (why?), it would be:
<programlisting>
<![CDATA[
env CPPFLAGS=-I/path/to/include LDFLAGS=-L/path/to/library ./configure
]]>
</programlisting>
</para>
</answer>
</qandaentry>
<qandaentry xml:id="faq.build.yytname">
<question>
<para>
Quando se está compilando o arquivo <filename>language-parser.tab.c</filename>, ele me devolve um erro
que diz <literal>yytname undeclared</literal>.
</para>
</question>
<answer>
<para>
Você precisa atualizar sua versão do Bison. Você pode encontrar a última versão
em <link xlink:href="&url.bison;">&url.bison;</link>.
</para>
</answer>
</qandaentry>
<qandaentry xml:id="faq.build.link">
<question>
<para>
Quando eu executo <command>make</command>, parace rodar bem mas então falha quando tenta
ligar a aplicação final, queixando-se que não consegue encontrar alguns arquivos.
</para>
</question>
<answer>
<para>
Algumas versões antigas do make que não colocam corretamente a versão
compilada dos arquivos nos diretórios das funções dentro do mesmo
diretório. Tente rodar <command>cp *.o functions</command> e então
execute novamente <command>make</command> para ver se isso ajuda. Se não ajudar, você realmente deve
atualizar para uma versão mais recente do GNU make.
</para>
</answer>
</qandaentry>
<qandaentry xml:id="faq.build.undefined">
<question>
<para>
Quando linkando o PHP, ele reclama de um número de referências indefinidas.
</para>
</question>
<answer>
<para>
Confira a linha do link e tenha certeza que todas as bibliotecas
apropriadas estão sendo incluídas no final. É comum que talvez você tenha
esquecido os '-ldl' e qualquer biblioteca requerida para qualquer suporte de banco de dados
que você incluiu.
</para>
<para>
Algumas pessoas também reportaram que elas precisaram adicionar '-ldl' imediatamente
seguindo <filename>libphp4.a</filename> quando linkando com o Apache.
</para>
</answer>
</qandaentry>
<qandaentry xml:id="faq.build.not-running">
<question>
<para>
Eu segui todos os passos da instalação do módulo da versão do Apache no
Unix, e meus scripts PHP estão sendo mostrados no meu navegador ou me é solicitado
salvar os arquivos.
</para>
</question>
<answer>
<para>
Isso significa que o módulo do PHP não está sendo chamado por alguma razão.
Três coisas para se verificar antes de pedir por mais ajuda:
<itemizedlist>
<listitem>
<simpara>
Tenha certeza que o binário httpd que você está executando é o
que você acabou de compilar. Para fazer isso, tente executar:
<literal>/path/to/binary/httpd -l</literal>
</simpara>
<simpara>
Se você não vê <filename>mod_php4.c</filename> na lista, então
você não está executando o binário correto. Encontre e instale o
binário correto.
</simpara>
</listitem>
<listitem>
<simpara>
Certifique-se de ter adicionado o Mime Type correto em um dos seus
arquivos <literal>Apache .conf</literal>. Deveria ser:
<literal>AddType application/x-httpd-php .php</literal>
</simpara>
<simpara>
Também certifique-se que esta linha AddType não esteja escondida dentro de um
bloco <Virtualhost> ou <Directory> que possam
impedí-la de ser aplicada para a localização de seu script de teste.
</simpara>
</listitem>
<listitem>
<simpara>
Finalmente, a localização padrão dos arquivos de configuração do Apache
mudou entre o Apache 1.2 e Apache 1.3. Você deve verificar para ter certeza
que o arquivo de configuração que você está adicionando à linha do AddType
realmente está sendo lido. Você pode colocar um erro de sintaxe óbvio
em seu arquivo &httpd.conf; ou alguma outra mudança evidente que
diga se o arquivo está sendo lido corretamente.
</simpara>
</listitem>
</itemizedlist>
</para>
</answer>
</qandaentry>
<qandaentry xml:id="faq.build.activate-module">
<question>
<para>
Lá diz para usar: <literal>--activate-module=src/modules/php4/libphp4.a</literal>,
mas esse arquivo não existe, então mudei para
<literal>--activate-module=src/modules/php4/libmodphp4.a</literal> e
não funciona!? O que está acontecendo?
</para>
</question>
<answer>
<para>
Note que o arquivo <filename>libphp4.a</filename> não é para existir. O
processo apache irá criá-lo!
</para>
</answer>
</qandaentry>
<qandaentry xml:id="faq.build.ansi">
<question>
<para>
Quando tento compilar o Apache com o PHP como um módulo estático usando
<literal>--activate-module=src/modules/php4/libphp4.a</literal>
ele me diz que o meu compilador não é compatível com ANSI.
</para>
</question>
<answer>
<para>
Esta é uma mensagem de erro enganosa do Apache que foi corrigida
nas versões mais recentes.
</para>
</answer>
</qandaentry>
<qandaentry xml:id="faq.build.apxs">
<question>
<para>
Quando tento compilar o PHP usando <option
role="configure">--with-apxs</option> recebo mensagens de erro estranhas.
</para>
</question>
<answer>
<para>
Há três coisas para verificar aqui. Em primeiro lugar, por alguma razão
o Apache quando compila o script Perl apxs, às vezes acaba
sendo compilado sem o compilador e os parâmetros corretos.
Procure pelo seu script apxs (tente o comando <command>which apxs</command>),
às vezes é encontrado em <filename>/usr/local/apache/bin/apxs</filename>
ou <filename>/usr/sbin/apxs</filename>.
Abra-o e verifique se existem linhas semelhantes a estas:
<programlisting>
<![CDATA[
my $CFG_CFLAGS_SHLIB = ' '; # substituted via Makefile.tmpl
my $CFG_LD_SHLIB = ' '; # substituted via Makefile.tmpl
my $CFG_LDFLAGS_SHLIB = ' '; # substituted via Makefile.tmpl
]]>
</programlisting>
Se é isso que você vê, você encontrou o seu problema. Elas podem
conter apenas espaços ou outros valores incorretos, como 'q()'. Altere
estas linhas de modo que fiquem assim:
<programlisting>
<![CDATA[
my $CFG_CFLAGS_SHLIB = '-fpic -DSHARED_MODULE'; # substituted via Makefile.tmpl
my $CFG_LD_SHLIB = 'gcc'; # substituted via Makefile.tmpl
my $CFG_LDFLAGS_SHLIB = q(-shared); # substituted via Makefile.tmpl
]]>
</programlisting>
O segundo problema possível só deve ser um problema no Red Hat 6.1
e 6.2. O script apxs do Red Hat está quebrado. Procure por esta linha:
<programlisting>
<![CDATA[
my $CFG_LIBEXECDIR = 'modules'; # substituted via APACI install
]]>
</programlisting>
Se você vê a linha acima, mude para isto:
<programlisting>
<![CDATA[
my $CFG_LIBEXECDIR = '/usr/lib/apache'; # substituted via APACI install
]]>
</programlisting>
Finalmente, se você reconfigurar/reinstalar o Apache, adicione <command>make clean</command>
ao processo após o <command>./configure</command> e antes de <command>make</command>.
</para>
</answer>
</qandaentry>
<qandaentry xml:id="faq.build.microtime">
<question>
<para>
Durante <command>make</command>, eu recebo erros no microtime,
e um monte de <literal>RUSAGE_</literal>.
</para>
</question>
<answer>
<para>
Enquanto é executada a porção <command>make</command> da instalação,
se você encontrar problemas que parecem semelhantes a estes:
<programlisting>
<![CDATA[
microtime.c: In function `php_if_getrusage':
microtime.c:94: storage size of `usg' isn't known
microtime.c:97: `RUSAGE_SELF' undeclared (first use in this function)
microtime.c:97: (Each undeclared identifier is reported only once
microtime.c:97: for each function it appears in.)
microtime.c:103: `RUSAGE_CHILDREN' undeclared (first use in this function)
make[3]: *** [microtime.lo] Error 1
make[3]: Leaving directory `/home/master/php-4.0.1/ext/standard'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/master/php-4.0.1/ext/standard'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/master/php-4.0.1/ext'
make: *** [all-recursive] Error 1
]]>
</programlisting>
</para>
<para>
Seu sistema está quebrado. É preciso corrigir os arquivos <filename>/usr/include</filename>
instalando o pacote glibc-devel que corresponde ao seu glibc. Isto não tem
absolutamente nada a ver com o PHP. Para provar isso a si mesmo, tente este
teste simples:
<programlisting>
<![CDATA[
$ cat >test.c <<X
#include <sys/resource.h>
X
$ gcc -E test.c >/dev/null
]]>
</programlisting>
Se isso mostrar erros, você saberá que os arquivos include estão bagunçados.
</para>
</answer>
</qandaentry>
<qandaentry xml:id="faq.build.mysql.tempnam">
<question>
<para>
Ao compilar o PHP com MySQL, o configure vai bem, mas durante o
<literal>make</literal> recebo um erro semelhante ao seguinte:
<emphasis>ext/mysql/libmysqlclient/my_tempnam.o(.text+0x46): In function
my_tempnam': /php4/ext/mysql/libmysqlclient/my_tempnam.c:103: the
use of tempnam' is dangerous, better use mkstemp'</emphasis>,
o que está errado ?
</para>
</question>
<answer>
<para>
Primeiramente, é importante perceber que este é um <literal>
Warning</literal> e não um erro fatal. Porque esta é
muitas vezes a última saída durante o <literal>make</literal>,
ela pode parecer um erro fatal, mas não é. Claro que, se
você definir o seu compilador para parar em warnings, ele vai parar. Além disso
tenha sempre em mente que o suporte ao MySQL está habilitado por padrão.
</para>
<note>
<para>
A partir do PHP 4.3.2, você também verá o seguinte texto depois
que a compilação (make) for concluída:
</para>
<para>
<screen>
Build complete.
(It is safe to ignore warnings about tempnam and tmpnam).
</screen>
</para>
</note>
</answer>
</qandaentry>
<qandaentry xml:id="faq.build.upgrade">
<question>
<para>
Eu quero atualizar o meu PHP. Onde posso encontrar a linha <command>./configure</command>
que foi usada para compilar a minha instalação atual do PHP?
</para>
</question>
<answer>
<para>
Ou você olha no arquivo config.nice, na pasta raíz atual da sua instalação do PHP,
ou, se este não estiver disponível, basta executar um script
<programlisting role="php">
<![CDATA[
<?php phpinfo(); ?>
]]>
</programlisting>
No topo da saída a linha <command>./configure</command> que foi usada
para compilar esta instalação do PHP é mostrada.
</para>
</answer>
</qandaentry>
<qandaentry xml:id="faq.build.gdlibs">
<question>
<para>
Quando compilo o PHP com a biblioteca GD retorna erros de compilação
ou segfaults na execução.
</para>
</question>
<answer>
<para>
Certifique-se de que sua biblioteca GD e o PHP estejam ligadas à mesmas
bibliotecas dependentes (libpng por exemplo).
</para>
</answer>
</qandaentry>
<qandaentry xml:id="faq.installation.needgnu">
<question>
<para>
Ao compilar o PHP eu recebo erros aparentemente aleatórios, como se ele travasse.
Estou usando o Solaris, se isso importa.
</para>
</question>
<answer>
<para>
Usar utilitários que não são GNU ao compilar o PHP pode causar problemas.
Certifique-se de usar as ferramentas GNU, a fim de ter certeza de que a compilação do PHP
funcionará. Por exemplo, no Solaris, usando tanto o SunOS BSD-compatible
quanto versões do Solaris <literal>sed</literal> não vai funcionar, mas usando
as versões GNU ou Sun POSIX (XPG4) do <literal>sed</literal> irá funcionar.
Links: <link xlink:href="&url.sed;">GNU sed</link>,
<link xlink:href="&url.flex;">GNU flex</link>, e
<link xlink:href="&url.bison;">GNU bison</link>.
</para>
</answer>
</qandaentry>
</qandaset>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->