Parece que a questão é, na verdade, a de como o script de configuração para o quinto-5.0 constrói e executa o conftest para a biblioteca de urlmatch.
Primeiro, o erro
checking for url_init in -lurlmatch... no
configure: error: liburlmatch not found
acaba por ser um pouco enganador: se olharmos para o config.log
, vemos que o conftest está realmente a falhar devido a uma referência indefinida à função uncompress
:
configure:5511: checking for url_init in -lurlmatch
configure:5546: g++ -o conftest -g -O2 -pthread -isystem /usr/include/cairo -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -isystem /usr/include/pixman-1 -isystem /usr/include/freetype2 -isystem /usr/include/libpng12 -isystem /usr/include/freetype2 -isystem /usr/include/cairo -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -isystem /usr/include/pixman-1 -isystem /usr/include/freetype2 -isystem /usr/include/libpng12 -fvisibility-inlines-hidden -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_THREAD_SAFE -D_REENTRANT -lz conftest.cpp -lurlmatch -Wl,-Bsymbolic-functions -lfltk_images -lfltk -lX11 >&5
//usr/local/lib/liburlmatch.a(opti_init.o): In function 'initbin':
opti_init.c:(.text+0xd6): undefined reference to 'uncompress'
collect2: error: ld returned 1 exit status
configure:5552: $? = 1
Isso porque uncompress
está em libz
- que está sendo vinculado antes liburlmatch
:
. . . -lz conftest.cpp -lurlmatch -Wl,-Bsymbolic-functions -lfltk_images -lfltk -lX11 >&5
falha ao respeitar a ordem de link necessária 1 para as duas bibliotecas. Podemos rastrear isso de volta ao arquivo configure.ac
a partir do qual o script configure
teria sido gerado:
# Checks for libraries.
OLD_LDFLAGS=[$LDFLAGS]
LDFLAGS=["$LDFLAGS -lz"]
AC_CHECK_LIB([urlmatch], [url_init], [], AC_MSG_ERROR([liburlmatch not found]))
LDFLAGS=[$OLD_LDFLAGS]
i.e. em vez de ser adicionado à lista de LIBS
, -lz
é adicionado ao LDFLAGS
(que é mais comumente usado para especificar caminhos adicionais da biblioteca à frente do LIBS
).
Uma solução alternativa rápida é chamar ./configure
com um argumento LIBS
explícito:
./configure "LIBS=-lz"
Isso faz com que um -lz
extra seja colocado na linha de comando g++
depois da biblioteca urlmatch
(na cabeça do outro LIBS
):
. . . -lz conftest.cpp -lurlmatch -lz -Wl,-Bsymbolic-functions -lfltk_images -lfltk -lX11 >&5
Uma solução mais permanente pode ser modificar o arquivo configure.ac
para adicionar -lz
a LIBS
em vez de LDFLAGS
e, em seguida, gerar novamenteconfigure
usando autoconf
(ou autoreconf
se necessário ).
Refs.: