dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #13538
Re: compile error
On Thu, 14 May 2009, Johan Hake wrote:
On Wednesday 13 May 2009 23:48:33 Shawn Walker wrote:
On Wed, 13 May 2009, Johan Hake wrote:
On Wednesday 13 May 2009 21:34:57 Shawn Walker wrote:
ok, here it is. Maybe it is a problem with the name.
walker@box227 ~
$ find -name 'libboost_program_options*'
./build/lib/libboost_program_options-gcc41-mt.so
./build/lib/libboost_program_options-gcc41-mt-1_38.so.1.38.0
./build/lib/libboost_program_options-gcc41-mt-1_38.so
./build/lib/libboost_program_options-gcc41-mt-1_38.a
./build/lib/libboost_program_options-gcc41-mt.a
./src/boost_1_38_0/bin.v2/libs/program_options/build/gcc-4.1.2/release/t
hre ading-multi/libboost_program_options-gcc41-mt-1_38.so.1.38.0
./src/boost_1_38_0/bin.v2/libs/program_options/build/gcc-4.1.2/release/l
ink -static/threading-multi/libboost_program_options-gcc41-mt-1_38.a
Have you installed the library? Typically make install or something.
It looks like the library only lives in the build directory. None of the
above mentioned directories corresponds to any of the ones given from
pkg-config --libs dolfin
Following the output from pkg-config --libs dolfin I would expect it to
be in
./src/boost_1_38_0/libs
However I cannot figure out why you mannage to compile and install dolfin
in the first place...
Are you saying I don't know what I am doing? :) Well, you would be
right! Only recently have I started compiling things; most of what I did
in the past (and still do) is in MATLAB.
He, he, you never know! Even if you would have compiled your own stuff for a
while we all do simple mistakes all the time, that goes for all of us!
Yes, I installed the boost stuff with `make install'. But boost put it
into those other dirs. It also has a weird filename:
libboost_program_options-gcc41-mt-1_38 (not the one dolfin looks for I
think). Isn't that the problem? If it is, why didn't pkgconfig
auto-config the boost.pc file to look for this file?
Ok, I downloaded the latests boost and looked into the documentation and boost
has its owns naming convention for the installed libraries.
First of all whats in your,
/home/walker/build/include/boost-1_38/lib
directory.
walker@box227 ~/build/include/boost-1_38/lib
$ ll
total 1.3M
-rw-------+ 1 walker walker 795K May 13 18:44
libboost_program_options-gcc41-mt-1_38.a
lrwxrwxrwx 1 walker walker 48 May 13 18:44
libboost_program_options-gcc41-mt-1_38.so ->
libboost_program_options-gcc41-mt-1_38.so.1.38.0*
-rwx------+ 1 walker walker 290K May 13 18:44
libboost_program_options-gcc41-mt-1_38.so.1.38.0*
lrwxrwxrwx 1 walker walker 40 May 13 18:44
libboost_program_options-gcc41-mt.a ->
libboost_program_options-gcc41-mt-1_38.a
lrwxrwxrwx 1 walker walker 48 May 13 18:44
libboost_program_options-gcc41-mt.so ->
libboost_program_options-gcc41-mt-1_38.so.1.38.0*
Second what does
pkg-config --libs boost
give you? Hopefully it will include:
-L/home/walker/build/include/boost-1_38/lib
meaning that the dolfin configuration system has picked up boost.
It gives me:
walker@box227 ~
$ pkg-config --libs boost
-L/home/walker/build/include/boost-1_38/lib -lboost_program_options
Third why has dolfin manage to do that? Have you set any environmental
variables like BOOST_DIR, pointing to that directory, or called scons with
withBoostDir=/home/walker/build/include/boost-1_38?
Yes, I set BOOST_DIR to:
BOOST_DIR=/home/walker/build/include/boost-1_38
BTW: my current LD_LIBRARY_PATH is:
LD_LIBRARY_PATH=/home/walker/build/lib/vtk-5.3:/home/walker/build/lib:
Fourth, (and here comes the suggestion to fix this ;) ), go
into /home/walker/build/include/boost-1_38/lib, or another directory that is
included in your LD_LIBRARY_PATH, and which you can pass to dolfin via the
withBoostDir= option. I have installed all my locally compiled libraries
under
~/local
including all the FEhiCS packages. Then you create a link to the newly
compiled boost libraries in this directory. Make sure you change name of the
libraries when you link. For example:
ln -fs ~/build/lib/libboost_program_options-gcc41-mt.so \
libboost_program_options.so
ln -fs ~/build/lib/libboost_program_options-gcc41-mt.a \
libboost_program_options.a
ok, I had thought about doing something like this, but it seemed kind of
hacky... Shouldn't pkg-config figure this out when it creates the
boost.pc file?
And voila! It should just work (cross fingers ;) )
I will try it.
- Shawn
You might include the above lines in your .bashrc file, and you should
probably try to avoid link to a build directory as these tends to have a
limited life.
Johan
I also changed something in between. Here is a re-run of pkg-config:
walker@box227 ~
$ pkg-config --libs dolfin
-pthread -Wl,--export-dynamic
-Wl,-rpath,/home/walker/src/slepc-2.3.3/lib/linux-gnu-cxx-debug
-Wl,-rpath,/home/walker/src/petsc-2.3.3-p13/lib/linux-gnu-cxx-debug
-L/home/walker/build/include/boost-1_38/lib -L/usr/lib -L/lib
-L/home/walker/build/lib
-L/home/walker/src/slepc-2.3.3/lib/linux-gnu-cxx-debug -L/usr/lib/atlas
-L/home/walker/src/petsc-2.3.3-p13/lib/linux-gnu-cxx-debug -L/usr -ldolfin
-lslepc -lumfpack -lgts -llapack -lblas -lcholmod -lamd -lcolamd
-lboost_program_options -lxml2 -lz -lm -lpetscts -lpetscsnes -lpetscksp
-lpetscdm -lpetscmat -lpetscvec -lpetsc -lgthread-2.0 -lgmodule-2.0 -ldl
-lglib-2.0
Though, I don't think this makes a difference.
- Shawn
On Wed, 13 May 2009, Johan Hake wrote:
On Wednesday 13 May 2009 20:24:10 Shawn Walker wrote:
I am still getting this error. I'm pretty sure boost is being
included. Does anyone have any suggestions?
I see from the output from your pkg-config command that you have a
boost installation in
/home/walker/src/boost_1_38_0
Do you have several boost installations? The undefined symols you
refere to here are all defined in libboost_program_options, so it
should work. What does
locate libboost_program_options
give you?
Johan
/usr/bin/ld: skipping incompatible /usr/lib/libc.so when searching for
-lc /usr/bin/ld: skipping incompatible /usr/lib/libc.a when searching
for -lc dolfin/libdolfin.so: undefined reference to
`boost::program_options::options_description::m_default_line_length'
dolfin/libdolfin.so: undefined reference to
`boost::program_options::detail::cmdline::set_additional_parser(boost:
:f unc tion1<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&>)'
collect2: ld returned 1 exit status
scons: *** [demo/quadrature/cpp/demo] Error 1
scons: building terminated because of errors.
demo/quadrature/cpp/demo failed: Error 1
- Shawn
_______________________________________________
DOLFIN-dev mailing list
DOLFIN-dev@xxxxxxxxxx
http://www.fenics.org/mailman/listinfo/dolfin-dev
Follow ups
References