ok, almost there. I included the boost library directory into my LD_LIBRARY_PATH. I also made those symbolic links. pkgconfig was able to find it just fine and create the boost.pc file. Everything compiled (all demos too). But, when I try to do `scons install' I get:
Found optional package: umfpack Found optional package: gts Found optional package: cholmod Disabling compilation of Python wrappers scons: done reading SConscript files. scons: Building targets ... scons: *** [install] /home/walker/build/include/boost-1_38/boost/algorithm: Is a directory scons: building terminated because of errors. install failed: Is a directory Now what? - Shawn On Thu, 14 May 2009, Johan Hake wrote: > On Thursday 14 May 2009 15:37:14 Shawn Walker wrote: >> 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* > > Ok, this tells us that the libraries are where they should be. > >>> 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 > > Seems to be right. > >>> 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: > > To be able to run any dolfin applications you need to include the boost path > too. I would recomend that you make yourself a local directory where you > install your compiled libraries. > >>> 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? > > Well, by naming the libraries like boost do boot gives the user the > responsability to link to them in what ever way he likes to. By making > symbolic links to these files is one way. Another way is to hard code the > library file name into a boost pkg-config file which can be used by scons and > dolfin. > >>> And voila! It should just work (cross fingers ;) ) >> >> I will try it. > > I see that it didn't work out. What does scons/scons.log tell you? > > My thought was to keep the boost.pc file which then would have pointed to the > right library. But you told me that you erased the boost.pc file and > simula-scons did not pick it up again? Right? > > I also see that we do not link any thing in our test script (boost.py), whould > we do that too, as Shawns trouble comes in the linking? > > Johan > > >> >> - 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
