You are here

Build error: FragmentPicker.cc:1406: error: 'j' is not a member of 'basic::options::OptionKeys::frags'

6 posts / 0 new
Last post
Build error: FragmentPicker.cc:1406: error: 'j' is not a member of 'basic::options::OptionKeys::frags'
#1

Hi,

I'm trying to build Rosetta with MPI/boost on a linux system, and am using rosetta_2014.35.57232_bundle.

I'm invoking the build with:

python scons.py -j8 bin mode=release extras=boost,boost_thread,mpi

and the build is failing here:

/opt/openmpi/bin/mpicxx -o build/src/release/linux/2.6/64/x86/gcc/4.1/boost-boost_thread-mpi/protocols/frag_picker/FragmentPicker.os -c -std=c++98 -pipe -ffor-scope -O3 -ffast-math -funroll-loops -finline-functions -finline-limit=20000 -s -Wno-unused-variable -Wno-unused-parameter -pthread -fPIC -DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_SYSTEM_NO_DEPRECATED -DNDEBUG -DUSE_BOOST_THREAD -DMULTI_THREADED -DUSEMPI -Isrc -Iexternal/include -Isrc/platform/linux/64/gcc/4.1 -Isrc/platform/linux/64/gcc -Isrc/platform/linux/64 -Isrc/platform/linux -Iexternal/boost_1_55_0 -Iexternal/dbio -I/usr/include -I/usr/local/include src/protocols/frag_picker/FragmentPicker.cc
src/protocols/frag_picker/FragmentPicker.cc: In member function 'void protocols::frag_picker::FragmentPicker::parse_command_line()':
src/protocols/frag_picker/FragmentPicker.cc:1406: error: 'j' is not a member of 'basic::options::OptionKeys::frags'
src/protocols/frag_picker/FragmentPicker.cc:1406: error: 'j' is not a member of 'basic::options::OptionKeys::frags'

Is something missing from the source, or is there a problem with my build options?

Best wishes,

Jens

Category: 
Post Situation: 
Tue, 2014-11-18 08:30
linucks

Compiling with both MPI and threads is not a standard mode for Rosetta - I don't know if anyone has actually tested it. In fact, compiling with threads at all is somewhat experimental at the moment, and probably shouldn't be used for routine use. (MPI usage by itself is standard and well supported.) Also, Rosetta now uses Boost by default when it needs it. The separate "boost" extras build effectively does nothing. If you cut down your "extras" to just MPI, your compilation should work.

If you know you need boost_threads for a particular usage, (e.g. you're compiling specifically for the multithreaded mode on the fragment picker) then go into main/source/src/basic/options/options_rosetta.py and in line 4553 remove the "#" from the front of the line that goes "Option( 'j', ...". Save the modified file and recompile with scons. (This is a bug that slipped through because multithreading mode in Rosetta is used so rarely.)

Tue, 2014-11-18 08:53
rmoretti

Thanks for the quick reply.

As you correctly surmised, I was compling with threads to get a threaded fragment picker. Uncommenting the line you mentioned solved the problem, so thanks a lot for your help.

Fri, 2014-11-21 02:53
linucks

I am trying to recompile fragment picker rosettawk52 so i can use multithreading protocol I have followed the suggestions by Rocco and edited the options_rosetta.py
Here is my compile call
python scons.py mode=release extras=boost_thread bin/fragment_picker.boost_thread.linuxgccrelease
I am getting this error

g++ -o build/src/release/linux/2.6/64/x86/gcc/4.4/boost_thread/libObjexxFCL.so -Wl,-rpath=/ifs/home/etk243/HIV/software/rosetta_2014wk35_bundle/main/source/build/external/release/linux/2.6/64/x86/gcc/4.4/boost_thread -Wl,-rpath=\$ORIGIN -Wl,-rpath=\$ORIGIN/../lib -shared build/src/release/linux/2.6/64/x86/gcc/4.4/boost_thread/ObjexxFCL/char.functions.os build/src/release/linux/2.6/64/x86/gcc/4.4/boost_thread/ObjexxFCL/Cstring.os build/src/release/linux/2.6/64/x86/gcc/4.4/boost_thread/ObjexxFCL/Dimension.os build/src/release/linux/2.6/64/x86/gcc/4.4/boost_thread/ObjexxFCL/DimensionExpression.os build/src/release/linux/2.6/64/x86/gcc/4.4/boost_thread/ObjexxFCL/DimensionExpressionRef.os build/src/release/linux/2.6/64/x86/gcc/4.4/boost_thread/ObjexxFCL/DynamicIndexRange.os build/src/release/linux/2.6/64/x86/gcc/4.4/boost_thread/ObjexxFCL/format.os build/src/release/linux/2.6/64/x86/gcc/4.4/boost_thread/ObjexxFCL/Fstring.os build/src/release/linux/2.6/64/x86/gcc/4.4/boost_thread/ObjexxFCL/IndexRange.os build/src/release/linux/2.6/64/x86/gcc/4.4/boost_thread/ObjexxFCL/Observer.os build/src/release/linux/2.6/64/x86/gcc/4.4/boost_thread/ObjexxFCL/ObserverGraph.os build/src/release/linux/2.6/64/x86/gcc/4.4/boost_thread/ObjexxFCL/ObserverMediator.os build/src/release/linux/2.6/64/x86/gcc/4.4/boost_thread/ObjexxFCL/ObserverMulti.os build/src/release/linux/2.6/64/x86/gcc/4.4/boost_thread/ObjexxFCL/Star.os build/src/release/linux/2.6/64/x86/gcc/4.4/boost_thread/ObjexxFCL/string.functions.os build/src/release/linux/2.6/64/x86/gcc/4.4/boost_thread/ObjexxFCL/Time_Date.os -Lexternal/lib -Lbuild/src/release/linux/2.6/64/x86/gcc/4.4/boost_thread -Lsrc -Lbuild/external/release/linux/2.6/64/x86/gcc/4.4/boost_thread -Lexternal -L/cm/shared/apps/sge/2011.11/lib/linux-x64 -L/cm/shared/apps/openmpi/open64/64/1.4.5/lib64 -L/usr/lib -L/usr/local/lib -L/usr/local/lib -L/opt/boost/lib -lpthread -lboost_thread
/usr/bin/ld: skipping incompatible /usr/lib/libpthread.so when searching for -lpthread
/usr/bin/ld: cannot find -lboost_thread
collect2: ld returned 1 exit status
scons: *** [build/src/release/linux/2.6/64/x86/gcc/4.4/boost_thread/libObjexxFCL.so] Error 1
scons: building terminated because of errors.

I need help in figuring out how to make this work

Thank you

Thu, 2015-01-15 13:26
kamau

Hi,

It looks like the problem is here:

/usr/bin/ld: skipping incompatible /usr/lib/libpthread.so when searching for -lpthread

It looks like your libpthread.so library isn't compatible with the rest of the build. You need the files you're compiling and the libraries to be either all 32- or 64-bit. You can find out what type of file the libpthread libary is using the file command:

file /usr/lib/libpthread.so

Checking one of the files from the build with the same command will tell you what type of file that is, e.g:

file build/src/release/linux/2.6/64/x86/gcc/4.4/boost_thread/ObjexxFCL/Dimension.os

If these are different types (i.e. one is 32 bit and the other 64 bit) you will either need to install a pthread library to match the build or change the type of the build to match the pthread library.

Hope that helps.

Tue, 2015-01-20 09:51
linucks

Hi Linucks,
Thank you for your time and assistance. I managed to fix the problem by downloading and installing a fresh boost. The one that came with rosetta does not allow building boost thread. I followed the building boost thread protocol as outlined on http://ccp4wiki.org/~ccp4wiki/wiki/index.php?title=Installing_Rosetta and https://github.com/jslick/matrixvm/wiki/How-to-build-boost-thread-(on-Linux)

Fri, 2015-01-30 11:42
kamau