A solução é atualizar o pkg-config para a versão mais recente (0.28 no momento). Eu tinha 0,18.
Estou tentando compilar um pacote (libdrm-2.4.59) e usar sed
e autoreconf
para remover uma dependência:
sed -e "/pthread-stubs/d" -i configure.ac &&
autoreconf -fiv
Produz a seguinte saída:
autoreconf: Entering directory '.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal -I /u/f0/students/estermad/tmp/share/aclocal --force -I m4 ${ACLOCAL_FLAGS}
autoreconf: configure.ac: tracing
autoreconf: running: libtoolize --install --copy --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'.
libtoolize: copying file 'build-aux/config.guess'
libtoolize: copying file 'build-aux/config.sub'
libtoolize: copying file 'build-aux/install-sh'
libtoolize: copying file 'build-aux/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: You should add the contents of 'm4/libtool.m4' to 'aclocal.m4'.
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: You should add the contents of 'm4/ltoptions.m4' to 'aclocal.m4'.
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: You should add the contents of 'm4/ltsugar.m4' to 'aclocal.m4'.
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
libtoolize: You should add the contents of 'm4/lt~obsolete.m4' to 'aclocal.m4'.
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
configure.ac:32: installing 'build-aux/missing'
exynos/Makefile.am: installing 'build-aux/depcomp'
autoreconf: Leaving directory '.'
Isso parece bem até agora, mas como eu chamo configure
, a construção pára com um erro estranho:
...
checking for pkg-config... /u/f0/students/estermad/tmp/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for PCIACCESS... configure: error: in '/u/f0/students/estermad/xc/libdrm-2.4.59':
configure: error: The pkg-config script could not be found or is too old. Make sure it
is in your PATH or set the PKG_CONFIG environment variable to the full
path to pkg-config.
...
Aqui estão algumas partes do config.log
que mostram o erro, os flags do compilador e do vinculador correspondentes que foram definidos corretamente e os valores relacionados a pkg-config
que não estão definidos:
configure:12927: checking for PCIACCESS
configure:12932: $PKG_CONFIG --exists --print-errors "pciaccess >= 0.10"
configure:12935: $? = 0
configure:12945: $PKG_CONFIG --exists --print-errors "pciaccess >= 0.10"
configure:12948: $? = 0
configure:12970: error: in '/u/f0/students/estermad/xc/libdrm-2.4.59':
...
ac_cv_env_PCIACCESS_CFLAGS_set=set
ac_cv_env_PCIACCESS_CFLAGS_value=-I/u/f0/students/estermad/tmp/include
ac_cv_env_PCIACCESS_LIBS_set=set
ac_cv_env_PCIACCESS_LIBS_value='-L/u/f0/students/estermad/tmp/lib -lpciaccess'
ac_cv_env_PKG_CONFIG_set=
ac_cv_env_PKG_CONFIG_value=
O autoreconf
usa libtoolize
que estava faltando no meu sistema, então eu tive que criar libtool
eu mesmo. Todas as compilações que faço neste sistema possuem um prefixo. O prefixo usado para criar dependências de libdrm
entre outras coisas. Para libtool
, corri o seguinte:
$ cd libtool-2.4.5
$ ./configure --prefix=/u/f0/students/estermad/tmp && make && make install
$ libtool --finish /u/f0/students/estermad/tmp/lib
No entanto, a compilação e a instalação da libtool são executadas sem erros. Não tenho idéia se o configure
-script resultante está corrompido devido a autoreconf
(localizado em / usr / bin / autoreconf), libtoolize
(localizado em / u / f0 / students / estermad / tmp / bin), aclocal
ou algo diferente.
Eu tentei criar libdrm
sem usar autoreconf
, comentando pthread-stubs
manualmente. A construção correu bem. Portanto, o problema mencionado acima só é exibido depois de executar autoreconf
. Eu realmente aprecio algumas dicas úteis.
A solução é atualizar o pkg-config para a versão mais recente (0.28 no momento). Eu tinha 0,18.
Tags compiling ubuntu autoreconf