[ << ] | [ < ] | [ Acima ] | [ > ] | [ >> ] | [Topo] | [Conteúdo] | [Índice] | [ ? ] |
Para aplicações usando autoconf
a macro padrão
AC_CHECK_LIB
pode ser usada para linkar com a GSL automaticamente
a partir de um script configure
. A biblioteca propriamente dita depende da
presença de uma CBLAS e da math library também, de forma que essas devem também ser
localizadas antes linkando com o arquivo principal libgsl
. Os seguintes
comandos devem ser colocados no arquivo ‘configure.ac’ para executar
esses testes,
AC_CHECK_LIB([m],[cos]) AC_CHECK_LIB([gslcblas],[cblas_dgemm]) AC_CHECK_LIB([gsl],[gsl_blas_dgemm])
É importante verificar a presença da libm
e da libgslcblas
antes
da libgsl
, de outras formas os testes irão falhar. Assumindo que as bibliotecas
foram encontradas a saída durante o estágio de configuração se parecerá com o seguinte,
checking for cos in -lm... yes checking for cblas_dgemm in -lgslcblas... yes checking for gsl_blas_dgemm in -lgsl... yes
Se a biblioteca for encontrada então os testes irão definir as macros
HAVE_LIBGSL
, HAVE_LIBGSLCBLAS
, HAVE_LIBM
e adiciona
as opções -lgsl -lgslcblas -lm
à variável LIBS
.
Os testes acima irão encontrar qualquer versão da biblioteca. Eles são adequados para uso geral, onde a versão das funções não são importantes. Uma macro alternativa está disponível no arquivo ‘gsl.m4’ para testar a presença de uma versão específica da biblioteca. Para usar essa macro simplesmente adicione a seguinte linha a seu arquivo ‘configure.in’ ao invés dos testes acima:
AX_PATH_GSL(GSL_VERSION, [action-if-found], [action-if-not-found])
O argumento GSL_VERSION
deve ser os dois ou três dígitos
do número da versão MAJOR.MINOR ou MAJOR.MINOR.MICRO do release
que você deseja. Uma escolha adequada para action-if-not-found
é,
AC_MSG_ERROR(could not find required version of GSL)
Então você pode adicionar a variável GSL_LIBS
e GSL_CFLAGS
a
seu arquivo Makefile.am para obter os sinalizadores de compilação corretos.
GSL_LIBS
é igual à saída do comando gsl-config --libs
e a variável GSL_CFLAGS
é igual ao comando
gsl-config --cflags
. Por exemplo,
libfoo_la_LDFLAGS = -lfoo $(GSL_LIBS) -lgslcblas
Note que a macro AX_PATH_GSL
precisa usar o compilador C de forma a que isso
possa aparecer no arquivo ‘configure.in’ antes da macro
AC_LANG_CPLUSPLUS
para programas que usam C++.
Para testar a presença de inline
o seguinte teste deve ser colocada em seu
arquivo ‘configure.in’,
AC_C_INLINE if test "$ac_cv_c_inline" != no ; then AC_DEFINE(HAVE_INLINE,1) AC_SUBST(HAVE_INLINE) fi
e a macro irá então ser definida nos sinalizadores de compilação ou incluída no arquivo ‘config.h’ antes de qualquer cabeçalhos de biblioteca.
O seguinte teste autoconf irá verificar extern inline
,
dnl Check for "extern inline", using a modified version dnl of the test for AC_C_INLINE from acspecific.mt dnl AC_CACHE_CHECK([for extern inline], ac_cv_c_extern_inline, [ac_cv_c_extern_inline=no AC_TRY_COMPILE([extern $ac_cv_c_inline double foo(double x); extern $ac_cv_c_inline double foo(double x) { return x+1.0; }; double foo (double x) { return x + 1.0; };], [ foo(1.0) ], [ac_cv_c_extern_inline="yes"]) ]) if test "$ac_cv_c_extern_inline" != no ; then AC_DEFINE(HAVE_INLINE,1) AC_SUBST(HAVE_INLINE) fi
A substituição de funções de portabilidade pode ser feita automaticamente se
você usa autoconf
. Por exemplo, para testar se a função BSD
hypot
está disponível você pode incluir a seguinte linha no
arquivo configure ‘configure.in’ para sua aplicação,
AC_CHECK_FUNCS(hypot)
e coloque a seguinte macro no arquivo ‘config.h.in’,
/* Substitute gsl_hypot for missing system hypot */ #ifndef HAVE_HYPOT #define hypot gsl_hypot #endif
Os códigos fonte da sua aplicação podem então usar o comando include
#include <config.h>
para substituir gsl_hypot
a cada
ocorrência de hypot
quando hypot
não estiver disponível.
[ << ] | [ >> ] | [Topo] | [Conteúdo] | [Índice] | [ ? ] |
Esse documento foi gerado em 23 de Julho de 2013 usando texi2html 5.0.