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. >>>> >>>> wal...@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.
wal...@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: wal...@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: >> >> wal...@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 >>>>>> [email protected] >>>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev > > > _______________________________________________ DOLFIN-dev mailing list [email protected] http://www.fenics.org/mailman/listinfo/dolfin-dev
