Hello all,
While making changes to my conda recipes for FEniCS I found that instant
is not finding the correct libraries to link against, or choosing the
wrong ones, despite the ones used for compiling DOLFIN[1].
In short, as I commented in the corresponding GitHub issue, DOLFIN is
linked against the correct libraries, which are the ones available
inside the conda environment:
|$ ldd
~/.miniconda3/envs/fenics_test/lib/python2.7/site-packages/dolfin/cpp/_common.so
| grep boost ldd: warning: you do not have execution permission for
`/home/juanlu/.miniconda3/envs/fenics_test/lib/python2.7/site-packages/dolfin/cpp/_common.so'
libboost_filesystem.so.1.57.0 =>
/home/juanlu/.miniconda3/envs/fenics_test/lib/python2.7/site-packages/dolfin/cpp/../../../../libboost_filesystem.so.1.57.0
(0x00007f3998095000) libboost_program_options.so.1.57.0 =>
/home/juanlu/.miniconda3/envs/fenics_test/lib/python2.7/site-packages/dolfin/cpp/../../../../libboost_program_options.so.1.57.0
(0x00007f3997e30000) libboost_system.so.1.57.0 =>
/home/juanlu/.miniconda3/envs/fenics_test/lib/python2.7/site-packages/dolfin/cpp/../../../../libboost_system.so.1.57.0
(0x00007f3997c2c000) libboost_thread.so.1.57.0 =>
/home/juanlu/.miniconda3/envs/fenics_test/lib/python2.7/site-packages/dolfin/cpp/../../../../libboost_thread.so.1.57.0
(0x00007f3997a08000) libboost_iostreams.so.1.57.0 =>
/home/juanlu/.miniconda3/envs/fenics_test/lib/python2.7/site-packages/dolfin/cpp/../../../../libboost_iostreams.so.1.57.0
(0x00007f39977df000) libboost_timer.so.1.57.0 =>
/home/juanlu/.miniconda3/envs/fenics_test/lib/python2.7/site-packages/dolfin/cpp/../../../../libboost_timer.so.1.57.0
(0x00007f39975db000) libboost_chrono.so.1.57.0 =>
/home/juanlu/.miniconda3/envs/fenics_test/lib/python2.7/site-packages/dolfin/cpp/../../../.././libboost_chrono.so.1.57.0
(0x00007f39922bc000) |
But whenever instant jit-compiles a module, it's either not able to find
them:
|$ |||ldd
~/.instant/cache/dolfin_compile_code_XXX/_dolfin_compile_code_XXX.so |
grep boost| libboost_filesystem.so.1.57.0 => not found
libboost_program_options.so.1.57.0 => not found
libboost_system.so.1.57.0 => not found libboost_thread.so.1.57.0 =>
not found libboost_iostreams.so.1.57.0 => not found
libboost_timer.so.1.57.0 => not found libboost_chrono.so.1.57.0 => not
found |
Or, if they are system-wide available, it uses those:
|$ ldd
~/.instant/cache/dolfin_compile_code_XXX/_dolfin_compile_code_XXX.so |
grep boost libboost_filesystem.so.1.58.0 =>
/usr/lib/libboost_filesystem.so.1.58.0 (0x00007f2dc0b44000)
libboost_program_options.so.1.58.0 =>
/usr/lib/libboost_program_options.so.1.58.0 (0x00007f2dc08c6000)
libboost_system.so.1.58.0 => /usr/lib/libboost_system.so.1.58.0
(0x00007f2dc06c2000) libboost_thread.so.1.58.0 =>
/usr/lib/libboost_thread.so.1.58.0 (0x00007f2dc049a000)
libboost_iostreams.so.1.58.0 => /usr/lib/libboost_iostreams.so.1.58.0
(0x00007f2dc0282000) libboost_timer.so.1.58.0 =>
/usr/lib/libboost_timer.so.1.58.0 (0x00007f2dc007d000)
libboost_chrono.so.1.58.0 => /usr/lib/libboost_chrono.so.1.58.0
(0x00007f2dbce55000)|
(notice the version mismatch)
The funny thing is that when those libraries are not found I am able to
properly run demo_poisson.py for instance, but when it picks those from
the system it leads to GLIBCXX mismatch errors[2].
I tried to patch instant to see if hardwiring
~/.miniconda3/envs/fenics_test/lib/ to library_dirs (see original at
[3]) would make the trick, but it didn't.
I am a bit lost now since, at the time of building instant, there's no
information on which libraries I'm using to link DOLFIN, and I don't see
a way of forcing a search directory for the libraries. I would need some
help for debugging this, or some hint of what am I doing wrong.
Thanks in advance, best,
Juan Luis Cano
[1]:
https://github.com/Juanlu001/fenics-recipes/issues/35#issuecomment-150803221
[2]:
https://github.com/Juanlu001/fenics-recipes/issues/24#issuecomment-148916949
[3]:
https://github.com/FEniCS/instant/blob/b47459e76393a90ab4167054bfb4ce3cc2d8dd88/instant/build.py#L229
_______________________________________________
fenics-support mailing list
[email protected]
http://fenicsproject.org/mailman/listinfo/fenics-support