|
Ublas : |
Subject: [ublas] [numeric-bindings] NumericBindings conflicts with LAPACKE
From: Marco Guazzone (marco.guazzone_at_[hidden])
Date: 2015-09-03 04:56:31
Hello,
I have two libraries that uses LAPACK subroutines, but one of them
uses Boost.NumericBindings and the other one uses LAPACKE (the
official LAPACK C interface).
I have troubles to make them work together since I got many conflict
errors at compilation time.
Here below is a stupid (but effective) example:
--- [boost_lapacke.cpp] ---
#include <boost/numeric/bindings/lapack/computational/getrf.hpp>
#include <lapacke.h>
int main()
{
}
--- [/boost_lapacke.cpp] ---
Now, try to compile it. For instance, in my case:
$ g++ -Wall -Wextra -ansi -pedantic -I/usr/include/lapacke
-I$HOME/sys/src/git/boost -I$HOME/sys/src/svn/boost-numeric_bindings
-o boost_lapacke boost_lapacke.cpp -llapack -lblas -llapacke -lm
The errors I get are like the one below:
--- [error] ---
In file included from boost_lapacke.cpp:2:0:
/usr/include/lapacke/lapacke.h:11760:56: error: conflicting
declaration of C function âvoid sgetrf_(int*, int*, float*, int*,
int*, int*)â
lapack_int* ipiv, lapack_int *info );
^
In file included from
/home/.../sys/src/svn/boost-numeric_bindings/boost/numeric/bindings/lapack/detail/lapack_names.h:17:0,
from
/home/.../sys/src/svn/boost-numeric_bindings/boost/numeric/bindings/lapack/detail/lapack.h:17,
from
/home/.../sys/src/svn/boost-numeric_bindings/boost/numeric/bindings/lapack/computational/getrf.hpp:39,
from boost_lapacke.cpp:1:
/home/.../sys/src/svn/boost-numeric_bindings/boost/numeric/bindings/lapack/detail/lapack_names.h:326:36:
note: previous declaration âvoid sgetrf_(const fortran_int_t*, const
fortran_int_t*, float*, const fortran_int_t*, fortran_int_t*,
fortran_int_t*)â
#define LAPACK_SGETRF FORTRAN_ID2( sgetrf, SGETRF )
^
/home/.../sys/src/svn/boost-numeric_bindings/boost/numeric/bindings/detail/config/fortran.hpp:33:32:
note: in definition of macro âFORTRAN_ID2â
#define FORTRAN_ID2( id, ID2 ) id##_
^
/home/.../sys/src/svn/boost-numeric_bindings/boost/numeric/bindings/lapack/detail/lapack.h:940:6:
note: in expansion of macro âLAPACK_SGETRFâ
void LAPACK_SGETRF( const fortran_int_t* m, const fortran_int_t* n, float* a,
^
--- [/error] ---
Any idea on how to solve these conflicts?
My system is:
- Linux Fedora 22 x86_64
- LAPACK 3.5.0
- Boost git version
- Boost.NumericBindings svn version
- GCC 5.1.1
Thank you very much.
Best,
Marco