Hi Laurent, You need to link against boost thread, as it is not a header-only library. Probably something like -lboost_thread or -lboost_thread-mt, depending on how boost has been built on your system.
Cheers, Kevin On Wed, May 14, 2014 at 3:11 PM, Laurent Gatto <[email protected]> wrote: > > Updated to boost 1_54 and latest pwiz - see > https://github.com/sneumann/mzR/tree/test for details. > > [...] > g++ -shared -L/usr/local/lib -o mzR.so cramp.o ramp_base64.o ramp.o > RcppRamp.o RcppRampModule.o rnetCDF.o ./boost/system/src/error_code.o > ./boost/regex/src/posix_api.o ./boost/regex/src/fileiter.o > ./boost/regex/src/regex_raw_buffer.o ./boost/regex/src/cregex.o > ./boost/regex/src/regex_debug.o ./boost/regex/src/instances.o > ./boost/regex/src/icu.o ./boost/regex/src/usinstances.o > ./boost/regex/src/regex.o ./boost/regex/src/wide_posix_api.o > ./boost/regex/src/regex_traits_defaults.o ./boost/regex/src/winstances.o > ./boost/regex/src/wc_regex_traits.o ./boost/regex/src/c_regex_traits.o > ./boost/regex/src/cpp_regex_traits.o ./boost/regex/src/static_mutex.o > ./boost/regex/src/w32_regex_traits.o ./pwiz/data/msdata/Version.o > ./pwiz/utility/minimxml/XMLWriter.o ./pwiz/utility/minimxml/SAXParser.o > ./boost/iostreams/src/zlib.o ./boost/thread/src/pthread/once.o > ./boost/filesystem/src/operations.o ./pwiz/data/common/MemoryIndex.o > ./pwiz/data/common/CVTranslator.o ./pwiz/data/common/cv.o > ./pwiz/data/common/ParamTypes.o ./pwiz/data/common/BinaryIndexStream.o > ./pwiz/data/common/diff_std.o ./pwiz/data/msdata/SpectrumList_MGF.o > ./pwiz/data/msdata/DefaultReaderList.o > ./pwiz/data/msdata/ChromatogramList_mzML.o ./pwiz/data/msdata/examples.o > ./pwiz/data/msdata/Serializer_mzML.o ./pwiz/data/msdata/Serializer_MSn.o > ./pwiz/data/msdata/Reader.o ./pwiz/data/msdata/Serializer_MGF.o > ./pwiz/data/msdata/Serializer_mzXML.o ./pwiz/data/msdata/SpectrumList_mzML.o > ./pwiz/data/msdata/SpectrumList_MSn.o ./pwiz/data/msdata/BinaryDataEncoder.o > ./pwiz/data/msdata/Diff.o ./pwiz/data/msdata/MSData.o > ./pwiz/data/msdata/References.o ./pwiz/data/msdata/SpectrumList_mzXML.o > ./pwiz/data/msdata/IO.o ./pwiz/data/msdata/SpectrumList_BTDX.o > ./pwiz/data/msdata/SpectrumInfo.o ./pwiz/data/msdata/RAMPAdapter.o > ./pwiz/data/msdata/LegacyAdapter.o ./pwiz/data/msdata/SpectrumIterator.o > ./pwiz/data/msdata/MSDataFile.o ./pwiz/data/msdata/SpectrumListCache.o > ./pwiz/utility/misc/IntegerSet.o ./pwiz/utility/misc/Base64.o > ./pwiz/utility/misc/IterationListener.o ./pwiz/utility/misc/MSIHandler.o > ./pwiz/utility/misc/Filesystem.o ./pwiz/utility/misc/TabReader.o > ./pwiz/utility/misc/random_access_compressed_ifstream.o > ./pwiz/utility/misc/SHA1.o ./pwiz/utility/misc/SHA1Calculator.o > ./pwiz/utility/misc/sha1calc.o ./random_access_gzFile.o rampR.o -lpthread > -lnetcdf -lhdf5 -lz -L/usr/local/lib/R/lib -lR > /bin/bash: line 2: nc-config: command not found > make[1]: Leaving directory > `/home/lgatto/dev/00_github/mzR.Rcheck/00_pkg_src/mzR/src' > make[1]: Entering directory > `/home/lgatto/dev/00_github/mzR.Rcheck/00_pkg_src/mzR/src' > make[1]: Leaving directory > `/home/lgatto/dev/00_github/mzR.Rcheck/00_pkg_src/mzR/src' > installing to /home/lgatto/dev/00_github/mzR.Rcheck/mzR/libs > ** R > ** inst > ** preparing package for lazy loading > Creating a generic function for ‘close’ from package ‘base’ in package ‘mzR’ > ** help > *** installing help indices > ** building package indices > ** installing vignettes > ** testing if installed package can be loaded > Error in dyn.load(file, DLLpath = DLLpath, ...) : > unable to load shared object > '/home/lgatto/dev/00_github/mzR.Rcheck/mzR/libs/mzR.so': > /home/lgatto/dev/00_github/mzR.Rcheck/mzR/libs/mzR.so: undefined symbol: > _ZTIN5boost6detail16thread_data_baseE > Error: loading failed > Execution halted > ERROR: loading failed > * removing ‘/home/lgatto/dev/00_github/mzR.Rcheck/mzR’ > > with > > echo _ZTIN5boost6detail16thread_data_baseE | c++filt > typeinfo for boost::detail::thread_data_base > > Any suggestions welcome. > > Laurent > > > On 14 May 2014 09:07, Laurent Gatto <[email protected]> wrote: > >> We hope to be able to provide a fix soon - will get back to you later >> today. Apologies for the inconvenience. >> >> Laurent >> >> >> On 14 May 2014 05:49, Kevin Ushey <[email protected]> wrote: >> >>> Hi Jack, >>> >>> I've already brought this up with the package maintainer. It's because >>> they bundle an old, broken version of boost. I asked them to fix it; I >>> guess they haven't (the BioC build reports also show it failing on >>> Mavericks) I've appended a copy of my e-mail at the end of this just >>> so you know what's up (and maybe others having problems will stumble >>> upon it). >>> >>> A local fix would involve removing the (broken, illegal) forward >>> declarations. >>> >>> The error you saw before, re reference classes, was something separate >>> -- that was indeed our bug, and is fixed in the current version of >>> Rcpp on CRAN. >>> >>> Thanks, >>> Kevin >>> >>> --- >>> >>> Hi Bernd, Nicolas, >>> >>> I'm unable to install mzR from source. Here's the script I use: >>> >>> #!/usr/bin/env sh >>> >>> cd ~ >>> mkdir .mzR >>> cd .mzR >>> wget >>> http://www.bioconductor.org/packages/devel/bioc/src/contrib/mzR_1.9.8.tar.gz >>> R CMD INSTALL mzR_1.9.8.tar.gz >>> >>> This gives me the same error as Nicolas sees: >>> >>> In file included from pwiz/data/msdata/DefaultReaderList.cpp:40: >>> >>> In file included from ./boost/regex.hpp:31: >>> In file included from ./boost/regex/v4/regex.hpp:67: >>> ./boost/regex/v4/basic_regex.hpp:149:9: error: too few template >>> arguments for class >>> template 'vector' >>> std::vector<name> m_sub_names; >>> ^ >>> ./boost/detail/container_fwd.hpp:82:47: note: template is declared here >>> template <class T, class Allocator> class vector; >>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ >>> >>> This is actually a case of boost doing something it shouldn't -- it's >>> trying to forward-declare std::vector, but one cannot assume the >>> template structure of a vector is of <class T, class Allocator> -- in >>> particular this breaks on clang with libc++. See e.g. >>> http://stackoverflow.com/questions/307343/forward-declare-an-stl-container >>> >>> One can work around this by forcing the following Makevars flags: >>> >>> PKG_CXXFLAGS=-std=gnu++11 -stdlib=libstdc++ >>> >>> However, this will only work if both Rcpp and mzR are built with the >>> same flags, and using libstdc++ kind of defeats the purpose of using >>> clang... >>> >>> I'm sure you'll get some mail from Dan Tenenbaum when he tries to >>> build the package on the new Mavericks machines, so I think you will >>> have to either update the version of boost packaged with mzR, or fix >>> the forward declarations that it tries to use. >>> >>> Cheers, >>> Kevin >>> >>> On Tue, May 13, 2014 at 8:52 PM, Jack Howarth >>> <[email protected]> wrote: >>>> After updating the bioconductor packages to the Bioc 2.14 release, I ran in >>>> to this failure on Mac OS X 10.9 with the clang compilers from Xcode 5.1.1. >>>> Interestingly, this failure doesn't occur on Mac OS X 10.8 with the clang >>>> compilers from Xcode 5.1.1 which suggests it somehow libc++ related. The >>>> error below is suppressed on 10.9 f I append -stdlib=libstdc++ to the >>>> compile line so it is definitely libc++ specific. >>>> Jack >>>> ps The error I see in mzR using Rcpp 0.11.1 is… >>>> >>>> clang++ -I/sw/Library/Frameworks/R.framework/Versions/3.1/Resources/include >>>> -DNDEBUG -D_LARGEFILE_SOURCE -I./boost_aux/ -I. -DHAVE_PWIZ_MZML_LIB >>>> -D_NODEBUG -I/sw/include -I"/sw/lib/R/3.1/site-library/Rcpp/include" >>>> -fPIC >>>> -g -O3 -c boost/regex/src/posix_api.cpp -o boost/regex/src/posix_api.o >>>> In file included from boost/regex/src/posix_api.cpp:22: >>>> In file included from ./boost/regex.hpp:31: >>>> In file included from ./boost/regex/v4/regex.hpp:67: >>>> ./boost/regex/v4/basic_regex.hpp:149:9: error: too few template arguments >>>> for class template 'vector' >>>> std::vector<name> m_sub_names; >>>> ^ >>>> ./boost/detail/container_fwd.hpp:82:47: note: template is declared here >>>> template <class T, class Allocator> class vector; >>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ >>>> In file included from boost/regex/src/posix_api.cpp:22: >>>> In file included from ./boost/regex.hpp:31: >>>> In file included from ./boost/regex/v4/regex.hpp:67: >>>> ./boost/regex/v4/basic_regex.hpp:131:21: error: too few template arguments >>>> for class template 'vector' >>>> typename std::vector<name>::const_iterator pos = >>>> std::lower_bound(m_sub_names.begin(), m_sub_names.end(), t); >>>> ^ >>>> ./boost/detail/container_fwd.hpp:82:47: note: template is declared here >>>> template <class T, class Allocator> class vector; >>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ >>>> In file included from boost/regex/src/posix_api.cpp:22: >>>> In file included from ./boost/regex.hpp:31: >>>> In file included from ./boost/regex/v4/regex.hpp:67: >>>> ./boost/regex/v4/basic_regex.hpp:131:35: error: expected a qualified name >>>> after 'typename' >>>> typename std::vector<name>::const_iterator pos = >>>> std::lower_bound(m_sub_names.begin(), m_sub_names.end(), t); >>>> ^ >>>> ./boost/regex/v4/basic_regex.hpp:131:35: error: unknown type name >>>> 'const_iterator' >>>> ./boost/regex/v4/basic_regex.hpp:141:21: error: too few template arguments >>>> for class template 'vector' >>>> typename std::vector<name>::const_iterator pos = >>>> std::lower_bound(m_sub_names.begin(), m_sub_names.end(), t); >>>> ^ >>>> ./boost/detail/container_fwd.hpp:82:47: note: template is declared here >>>> template <class T, class Allocator> class vector; >>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ >>>> In file included from boost/regex/src/posix_api.cpp:22: >>>> In file included from ./boost/regex.hpp:31: >>>> In file included from ./boost/regex/v4/regex.hpp:67: >>>> ./boost/regex/v4/basic_regex.hpp:141:35: error: expected a qualified name >>>> after 'typename' >>>> typename std::vector<name>::const_iterator pos = >>>> std::lower_bound(m_sub_names.begin(), m_sub_names.end(), t); >>>> ^ >>>> ./boost/regex/v4/basic_regex.hpp:141:35: error: unknown type name >>>> 'const_iterator' >>>> ./boost/regex/v4/basic_regex.hpp:163:12: error: too few template arguments >>>> for class template 'vector' >>>> std::vector<Other> v; >>>> ^ >>>> ./boost/detail/container_fwd.hpp:82:47: note: template is declared here >>>> template <class T, class Allocator> class vector; >>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ >>>> In file included from boost/regex/src/posix_api.cpp:22: >>>> In file included from ./boost/regex.hpp:31: >>>> In file included from ./boost/regex/v4/regex.hpp:67: >>>> ./boost/regex/v4/basic_regex.hpp:228:9: error: too few template arguments >>>> for class template 'vector' >>>> std::vector< >>>> ^ >>>> ./boost/detail/container_fwd.hpp:82:47: note: template is declared here >>>> template <class T, class Allocator> class vector; >>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ >>>> In file included from boost/regex/src/posix_api.cpp:22: >>>> In file included from ./boost/regex.hpp:31: >>>> In file included from ./boost/regex/v4/regex.hpp:67: >>>> ./boost/regex/v4/basic_regex.hpp:269:9: error: too few template arguments >>>> for class template 'basic_string' >>>> std::basic_string<charT> BOOST_REGEX_CALL str()const >>>> ^ >>>> ./boost/detail/container_fwd.hpp:63:65: note: template is declared here >>>> template <class charT, class traits, class Allocator> class >>>> basic_string; >>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ >>>> In file included from boost/regex/src/posix_api.cpp:22: >>>> In file included from ./boost/regex.hpp:31: >>>> In file included from ./boost/regex/v4/regex.hpp:67: >>>> ./boost/regex/v4/basic_regex.hpp:271:12: error: too few template arguments >>>> for class template 'basic_string' >>>> std::basic_string<charT> result; >>>> ^ >>>> ./boost/detail/container_fwd.hpp:63:65: note: template is declared here >>>> template <class charT, class traits, class Allocator> class >>>> basic_string; >>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ >>>> In file included from boost/regex/src/posix_api.cpp:22: >>>> In file included from ./boost/regex.hpp:31: >>>> In file included from ./boost/regex/v4/regex.hpp:67: >>>> ./boost/regex/v4/basic_regex.hpp:273:24: error: too few template arguments >>>> for class template 'basic_string' >>>> result = std::basic_string<charT>(this->m_expression, >>>> this->m_expression_len); >>>> ^ >>>> ./boost/detail/container_fwd.hpp:63:65: note: template is declared here >>>> template <class charT, class traits, class Allocator> class >>>> basic_string; >>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ >>>> In file included from boost/regex/src/posix_api.cpp:22: >>>> In file included from ./boost/regex.hpp:31: >>>> In file included from ./boost/regex/v4/regex.hpp:67: >>>> ./boost/regex/v4/basic_regex.hpp:285:68: error: implicit instantiation of >>>> undefined template 'std::pair<unsigned long, unsigned long>' >>>> std::pair<const_iterator, const_iterator> p(expression() + pi.first, >>>> expression() + pi.second); >>>> ^ >>>> ./boost/detail/container_fwd.hpp:92:42: note: template is declared here >>>> template <class T1, class T2> struct pair; >>>> ^ >>>> In file included from boost/regex/src/posix_api.cpp:22: >>>> In file included from ./boost/regex.hpp:31: >>>> In file included from ./boost/regex/v4/regex.hpp:67: >>>> ./boost/regex/v4/basic_regex.hpp:527:9: error: too few template arguments >>>> for class template 'basic_string' >>>> std::basic_string<charT> BOOST_REGEX_CALL str()const >>>> ^ >>>> ./boost/detail/container_fwd.hpp:63:65: note: template is declared here >>>> template <class charT, class traits, class Allocator> class >>>> basic_string; >>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ >>>> In file included from boost/regex/src/posix_api.cpp:22: >>>> In file included from ./boost/regex.hpp:31: >>>> In file included from ./boost/regex/v4/regex.hpp:67: >>>> ./boost/regex/v4/basic_regex.hpp:529:52: error: too few template arguments >>>> for class template 'basic_string' >>>> return m_pimpl.get() ? m_pimpl->str() : std::basic_string<charT>(); >>>> ^ >>>> ./boost/detail/container_fwd.hpp:63:65: note: template is declared here >>>> template <class charT, class traits, class Allocator> class >>>> basic_string; >>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ >>>> In file included from boost/regex/src/posix_api.cpp:22: >>>> In file included from ./boost/regex.hpp:31: >>>> In file included from ./boost/regex/v4/regex.hpp:70: >>>> ./boost/regex/v4/basic_regex_creator.hpp:140:26: error: too few template >>>> arguments for class template 'vector' >>>> typedef typename std::vector<digraph_type>::const_iterator >>>> list_iterator; >>>> ^ >>>> ./boost/detail/container_fwd.hpp:82:47: note: template is declared here >>>> template <class T, class Allocator> class vector; >>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ >>>> In file included from boost/regex/src/posix_api.cpp:22: >>>> In file included from ./boost/regex.hpp:31: >>>> In file included from ./boost/regex/v4/regex.hpp:70: >>>> ./boost/regex/v4/basic_regex_creator.hpp:140:48: error: expected a >>>> qualified >>>> name after 'typename' >>>> typedef typename std::vector<digraph_type>::const_iterator >>>> list_iterator; >>>> ^ >>>> ./boost/regex/v4/basic_regex_creator.hpp:140:62: error: expected ';' at end >>>> of declaration list >>>> typedef typename std::vector<digraph_type>::const_iterator >>>> list_iterator; >>>> ^ >>>> ; >>>> ./boost/regex/v4/basic_regex_creator.hpp:141:4: error: unknown type name >>>> 'list_iterator' >>>> list_iterator singles_begin()const >>>> ^ >>>> fatal error: too many errors emitted, stopping now [-ferror-limit=] >>>> 20 errors generated. >>>> >>>> >>>> _______________________________________________ >>>> Rcpp-devel mailing list >>>> [email protected] >>>> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel >>> _______________________________________________ >>> Rcpp-devel mailing list >>> [email protected] >>> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel >> >> _______________________________________________ >> Rcpp-devel mailing list >> [email protected] >> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel > _______________________________________________ Rcpp-devel mailing list [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
