installation on OSX
Closed this issue · 22 comments
I am trying to used Biopython to compute some DSSP values for a bunch of pdbs (https://biopython.org/DIST/docs/api/Bio.PDB.DSSP%27-module.html).
I seem to struggle to install DSSP though.
Naively, following the instructions and standard ways of installing on a unix system, I went ahead and cloned the repository:
git clone https://github.com/cmbi/xssp.git
cd xssp
./configure
make
make install
The error I get is:
./configure: No such file or directory
Not really sure how to trouble shoot this.
Hi
I am trying to install xssp-3.0.2
on macOS High Sierra (10.13.6) using clang (Apple LLVM version 10.0.0 (clang-1000.11.45.2)
) and get the following fatal error:
./src/primitives-3d.h:15:10: fatal error: 'boost/tr1/tuple.hpp' file not found
I am using boost 1.68.0 compiled with clang and installed using the instructions provided here (https://solarianprogrammer.com/2018/08/07/compiling-boost-gcc-clang-macos/). The boost lib and include files are in:
/usr/local/boost-1.68.0/lib/
/usr/local/boost-1.68.0/include/boost/
The commands used to configure and compile xssp-3.0.2
are:
./autogen.sh
./configure --with-boost=/usr/local/boost-1.68.0/
make
The indicated missing boost file boost/tr1/tuple.hpp
is really in /usr/local/boost-1.68.0/include/boost/tuple/tuple.hpp
-rw-r--r--@ 1 root wheel 1.9K Sep 20 13:34 /usr/local/boost-1.68.0/include/boost/tuple/tuple.hpp
The following have been added to my .profile
file:
export DYLD_LIBRARY_PATH=/usr/local/boost-1.68.0/lib:$DYLD_LIBRARY_PATH
export BOOST_ROOT=/usr/local/boost-1.68.0
export BOOST_LIB_DIR=/usr/local/boost-1.68.0/lib
export BOOST_INC_DIR=/usr/local/boost-1.68.0/include
Any suggestions?
I've just created a new release (3.0.3) without the tr1 library. I replaced it with features from the c++ standard library. If you build this version, you should no longer get the error about that one missing header.
https://github.com/cmbi/xssp/releases
Greetings!
Hi,
I'm trying to install xssp-3.0.3 on Mac OS X Mojave
I have used the following commands with success:
./autogen.sh
./configure
now running make gives a number of errors.
Here I have included only the first since the following might be a consequence of the first.
In file included from src/dssp.cpp:11:
./src/mas.h:44:9: error: keyword is hidden by macro definition [-Werror,-Wkeyword-macro]
Any ideas how to get around this?
Thanx, Claus
This is a problem occuring more often for mac users. To fix it, remove the lines 43, 44, 45 from mas.h that say:
#ifndef nullptr
#define nullptr NULL
#endif
Thanks a lot,
That took care of most of it, however I still have one error left:
src/structure.cpp:38:3: error: unused variable 'kSSBridgeDistance' [-Werror,-Wunused-const-variable]
kSSBridgeDistance = 3.0,
Any more tricks?
Once again thanks for the help, it is most appreciated.
The compiler is right, this value isn't used. So you can remove this line. I will omit it from the next release.
Hi again,
Sorry to be a nuisance but I got a new error later in the progress:
src/fetchdbrefs.cpp:12:10: fatal error: 'zeep/xml/document.hpp' file not found
#include <zeep/xml/document.hpp>
Best, Claus
Hi,
I successfully compiled libzeep on macOS High Sierra (10.13.6) by largely modifying libzeep's makefile manually. I used the latest boost 1.687.
BOOST_LIB_SUFFIX = -mt
BOOST = /usr/local
BOOST_LIB_DIR = $(BOOST:%=%/lib)
BOOST_INC_DIR = $(BOOST:%=%/include)
PREFIX ?= /Users/hogehoge/apps
LIBDIR ?= $(PREFIX)/lib
INCDIR ?= $(PREFIX)/include
MANDIR ?= $(PREFIX)/man/man3
DOCDIR ?= $(PREFIX)/share/libzeep
BOOST_LIBS = system thread filesystem regex math_c99 random
BOOST_LIBS := $(BOOST_LIBS:%=boost_%$(BOOST_LIB_SUFFIX))
LIBS = $(BOOST_LIBS) stdc++ m pthread
LDFLAGS += $(BOOST_LIB_DIR:%=-L%) $(LIBS:%=-l%) -g
VERSION_MAJOR = 3.0
VERSION_MINOR = 3
VERSION = $(VERSION_MAJOR).$(VERSION_MINOR)
DIST_NAME = libzeep-$(VERSION)
SO_NAME = libzeep.dylib.$(VERSION_MAJOR)
LIB_NAME = $(SO_NAME).$(VERSION_MINOR)
and
lib: libzeep.a # libzeep.so
libzeep.a: $(OBJECTS)
ar rc $@ $(OBJECTS)
ranlib $@
# ld -r -o $@ $(OBJECTS)
$(LIB_NAME): $(OBJECTS)
$(CXX) -o $@ -dynamiclib -install_name $(SO_NAME) $(LDFLAGS) $(OBJECTS)
$(SO_NAME): $(LIB_NAME)
ln -fs $(LIB_NAME) $@
libzeep.dylib: $(SO_NAME)
ln -fs $(LIB_NAME) $@
# assuming zeep-test is build when install was not done already
zeep-test: obj/zeep-test.o libzeep.a
$(CXX) $(BOOST_INC_DIR:%=-I%) -o $@ -I. $^ $(LDFLAGS) -lboost_date_time -lboost_regex
install-libs: libzeep.dylib
install -d $(LIBDIR)
install $(LIB_NAME) $(LIBDIR)/$(LIB_NAME)
ln -fs $(LIB_NAME) $(LIBDIR)/$(SO_NAME)
#strip --strip-unneeded $(LIBDIR)/$(LIB_NAME)
Additionally, for src/preforked-http-server.cpp
, I replaced native_type
with native_handle_type
to comply with the latest boost specification. I also changed line 296 *fdptr = socket.native_handle();
.
Then, make -j4 && make install-libs
generated libzeep.dylib.3.0.3
.
Using this libzeep.dylib.3.0.3, I also tried compilation of xssp-3.0.3.
./autogen.sh
./configure --prefix=/Users/hogehoge/xssp/3.0.3 CC=/usr/bin/gcc CXX=/usr/bin/g++ LDFLAGS=-L/Users/hogehoge/apps/libzeep CPPFLAGS='-I/Users/hogehoge/apps/libzeep -Wunused-const-variable'
LDFLAGS
and CPPFLAGS
is set to avoid the error. 'zeep/xml/document.hpp' file not found
.
mkdssp
was successfully generated by make -j8 mkdssp
(but mkdssp
doesn't require libzeep inherently... ). However, make -j4
to compile all programs failed with this error message.
$ make -j4
/Applications/Xcode.app/Contents/Developer/usr/bin/make all-am
/usr/bin/g++ -g -O2 -L/Users/hogehoge/apps/libzeep -o mkdssp src/dssp.o src/iocif.o src/mas.o src/mkdssp.o src/primitives-3d.o src/structure.o src/utils.o -lboost_date_time-mt -lboost_filesystem -lboost_iostreams-mt -lboost_program_options-mt -lboost_regex-mt -lboost_system -lboost_thread-mt -lpthread
/usr/bin/g++ -g -O2 -L/Users/hogehoge/apps/libzeep -o mkhssp src/blast.o src/dssp.o src/fasta.o src/fetchdbrefs.o src/hssp-nt.o src/iocif.o src/mas.o src/matrix.o src/mkhssp.o src/primitives-3d.o src/progress.o src/structure.o src/utils.o -lboost_date_time-mt -lboost_filesystem -lboost_iostreams-mt -lboost_program_options-mt -lboost_regex-mt -lboost_system -lboost_thread-mt -lpthread -lboost_timer -lzeep
Undefined symbols for architecture x86_64:
"MCounter::operator=(long long)", referenced from:
MProgress::Progress(long long) in progress.o
"MCounter::operator+=(long long)", referenced from:
MProgress::Consumed(long long) in progress.o
"MCounter::operator++(int)", referenced from:
boost::detail::thread_data<HSSP::MProfile::Process(std::__1::basic_istream<char, std::__1::char_traits<char> >&, float, float, unsigned int, unsigned int)::$_1>::run() in hssp-nt.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [mkhssp] Error 1
make: *** [all] Error 2
Any ideas to solve it?
Looks like you are building with 64bit architecture, right?
Did you build boost with that same architecture also?
Hi again,
Sorry to be a nuisance but I got a new error later in the progress:
src/fetchdbrefs.cpp:12:10: fatal error: 'zeep/xml/document.hpp' file not found #include <zeep/xml/document.hpp>
Best, Claus
Do you have libzeep installed? If not, then the configure step will only give a warning. However, libzeep is required to build mkhssp. If you only need mkdssp, the you should be able to build that without libzeep just fine.
Yes that's true and I do only need mkdssp 👍
Looks like you are building with 64bit architecture, right?
Did you build boost with that same architecture also?
I installed boost 1.67 by brew install boost
without any options. I believe the boost libraries are 64bit architecture.
test_fasta
, test_readpdb
, and hsspconv
were succesfully compiled, but mkhssp
failed. When compiling the three programs, errors related to boost didn't occur.
/usr/bin/g++ -g -O2 -L/Users/hogehoge/apps/libzeep -o test_fasta src/fasta.o src/iocif.o src/mas.o src/primitives-3d.o src/structure.o src/utils.o tests/test_fasta.o -lboost_date_time-mt -lboost_filesystem -lboost_iostreams-mt -lboost_program_options-mt -lboost_regex-mt -lboost_system -lboost_thread-mt -lpthread -lboost_unit_test_framework-mt
/usr/bin/g++ -g -O2 -L/Users/hogehoge/apps/libzeep -o test_readpdb src/fasta.o src/iocif.o src/mas.o src/primitives-3d.o src/structure.o src/utils.o tests/test_readpdb.o -lboost_date_time-mt -lboost_filesystem -lboost_iostreams-mt -lboost_program_options-mt -lboost_regex-mt -lboost_system -lboost_thread-mt -lpthread -lboost_unit_test_framework-mt
/usr/bin/g++ -g -O2 -L/Users/hogehoge/apps/libzeep -o hsspconv src/hssp-convert-3to1.o src/hsspconv.o src/utils.o -lboost_date_time-mt -lboost_filesystem -lboost_iostreams-mt -lboost_program_options-mt -lboost_regex-mt -lboost_system -lboost_thread-mt -lpthread
/usr/bin/g++ -g -O2 -L/Users/hogehoge/apps/libzeep -o test_conv src/hssp-convert-3to1.o src/utils.o src/mas.o tests/test_conv.o -lboost_date_time-mt -lboost_filesystem -lboost_iostreams-mt -lboost_program_options-mt -lboost_regex-mt -lboost_system -lboost_thread-mt -lpthread -lboost_unit_test_framework-mt
/usr/bin/g++ -g -O2 -L/Users/hogehoge/apps/libzeep -o mkhssp src/blast.o src/dssp.o src/fasta.o src/fetchdbrefs.o src/hssp-nt.o src/iocif.o src/mas.o src/matrix.o src/mkhssp.o src/primitives-3d.o src/progress.o src/structure.o src/utils.o -lboost_date_time-mt -lboost_filesystem -lboost_iostreams-mt -lboost_program_options-mt -lboost_regex-mt -lboost_system -lboost_thread-mt -lpthread -lboost_timer -lzeep
Undefined symbols for architecture x86_64:
"MCounter::operator=(long long)", referenced from:
MProgress::Progress(long long) in progress.o
"MCounter::operator+=(long long)", referenced from:
MProgress::Consumed(long long) in progress.o
"MCounter::operator++(int)", referenced from:
boost::detail::thread_data<HSSP::MProfile::Process(std::__1::basic_istream<char, std::__1::char_traits<char> >&, float, float, unsigned int, unsigned int)::$_1>::run() in hssp-nt.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [mkhssp] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [all] Error 2
The compiler was Apple LLVM 10.0.0.
$ /usr/bin/g++ --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 10.0.0 (clang-1000.11.45.2)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Could you try running that same clang command with '-v', so that we can see the invocation?
Would this be okay?
$ /usr/bin/g++ -g -O2 -L/Users/hogehoge/apps/libzeep -o mkhssp src/blast.o src/dssp.o src/fasta.o src/fetchdbrefs.o src/hssp-nt.o src/iocif.o src/mas.o src/matrix.o src/mkhssp.o src/primitives-3d.o src/progress.o src/structure.o src/utils.o -lboost_date_time-mt -lboost_filesystem -lboost_iostreams-mt -lboost_program_options-mt -lboost_regex-mt -lboost_system -lboost_thread-mt -lpthread -lboost_timer -lzeep -v
Apple LLVM version 10.0.0 (clang-1000.11.45.2)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -lto_library /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/libLTO.dylib -dynamic -arch x86_64 -macosx_version_min 10.13.0 -o mkhssp -L/Users/hogehoge/apps/libzeep src/blast.o src/dssp.o src/fasta.o src/fetchdbrefs.o src/hssp-nt.o src/iocif.o src/mas.o src/matrix.o src/mkhssp.o src/primitives-3d.o src/progress.o src/structure.o src/utils.o -lboost_date_time-mt -lboost_filesystem -lboost_iostreams-mt -lboost_program_options-mt -lboost_regex-mt -lboost_system -lboost_thread-mt -lpthread -lboost_timer -lzeep -lc++ -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.0/lib/darwin/libclang_rt.osx.a
Undefined symbols for architecture x86_64:
"MCounter::operator=(long long)", referenced from:
MProgress::Progress(long long) in progress.o
"MCounter::operator+=(long long)", referenced from:
MProgress::Consumed(long long) in progress.o
"MCounter::operator++(int)", referenced from:
boost::detail::thread_data<HSSP::MProfile::Process(std::__1::basic_istream<char, std::__1::char_traits<char> >&, float, float, unsigned int, unsigned int)::$_1>::run() in hssp-nt.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
You could try to build in a different architecture. If you configure with:
./configure "CXXFLAGS=-m32" "CFLAGS=-m32" "LDFLAGS=-m32"
And then run 'make' again.
Thank you for your suggestion. However, the setting didn't work well...
./configure --prefix=/usr/local/Cellar/xssp/3.0.3 CC=/usr/bin/gcc CXX=/usr/bin/g++ LDFLAGS='-L/Users/hogehoge/apps/libzeep -m32' CPPFLAGS='-I/Users/hogehoge/apps/libzeep -Wunused-const-variable -m32' CXXFLAGS=-m32 CFLAGS=-m32
and make clean ; make -j4
...Skip...
/usr/bin/g++ -DHAVE_CONFIG_H -I. -std=c++11 -pedantic -Wall -Werror -Wno-reorder -pthread -I/usr/local/include -I./src/ -I/Users/hogehoge/apps/libzeep -Wunused-const-variable -m32 -m32 -MT src/dssp.o -MD -MP -MF $depbase.Tpo -c -o src/dssp.o src/dssp.cpp &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/mkdssp.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
/usr/bin/g++ -DHAVE_CONFIG_H -I. -std=c++11 -pedantic -Wall -Werror -Wno-reorder -pthread -I/usr/local/include -I./src/ -I/Users/hogehoge/apps/libzeep -Wunused-const-variable -m32 -m32 -MT src/mkdssp.o -MD -MP -MF $depbase.Tpo -c -o src/mkdssp.o src/mkdssp.cpp &&\
mv -f $depbase.Tpo $depbase.Po
/usr/bin/g++ -m32 -L/Users/hogehoge/apps/libzeep -m32 -o test_fasta src/fasta.o src/iocif.o src/mas.o src/primitives-3d.o src/structure.o src/utils.o tests/test_fasta.o -lboost_date_time-mt -lboost_filesystem -lboost_iostreams-mt -lboost_program_options-mt -lboost_regex-mt -lboost_system -lboost_thread-mt -lpthread -lboost_unit_test_framework-mt
ld: warning: The i386 architecture is deprecated for macOS (remove from the Xcode build setting: ARCHS)
ld: warning: ld: warning: ld: warning: ignoring file /usr/local/lib/libboost_date_time-mt.dylib, file was built for x86_64 which is not the architecture being linked (i386): /usr/local/lib/libboost_date_time-mt.dylibignoring file /usr/local/lib/libboost_filesystem.dylib, file was built for x86_64 which is not the architecture being linked (i386): /usr/local/lib/libboost_filesystem.dylibignoring file /usr/local/lib/libboost_iostreams-mt.dylib, file was built for x86_64 which is not the architecture being linked (i386): /usr/local/lib/libboost_iostreams-mt.dylib
ld: warning: ignoring file /usr/local/lib/libboost_system.dylib, file was built for x86_64 which is not the architecture being linked (i386): /usr/local/lib/libboost_system.dylibld: warning:
ld: warning: ignoring file /usr/local/lib/libboost_program_options-mt.dylib, file was built for x86_64 which is not the architecture being linked (i386): /usr/local/lib/libboost_program_options-mt.dylibignoring file /usr/local/lib/libboost_regex-mt.dylib, file was built for x86_64 which is not the architecture being linked (i386): /usr/local/lib/libboost_regex-mt.dylib
ld: warning: ignoring file /usr/local/lib/libboost_thread-mt.dylib, file was built for x86_64 which is not the architecture being linked (i386): /usr/local/lib/libboost_thread-mt.dylib
ld: warning: ignoring file /usr/local/lib/libboost_unit_test_framework-mt.dylib, file was built for x86_64 which is not the architecture being linked (i386): /usr/local/lib/libboost_unit_test_framework-mt.dylib
Undefined symbols for architecture i386:
"boost::test_tools::tt_detail::report_assertion(boost::test_tools::assertion_result const&, boost::unit_test::lazy_ostream const&, boost::unit_test::basic_cstring<char const>, unsigned long, boost::test_tools::tt_detail::tool_level, boost::test_tools::tt_detail::check_type, unsigned long, ...)", referenced from:
bool boost::test_tools::tt_detail::check_frwd<boost::test_tools::tt_detail::equal_impl_frwd, unsigned long, int>(boost::test_tools::tt_detail::equal_impl_frwd, boost::unit_test::lazy_ostream const&, boost::unit_test::basic_cstring<char const>, unsigned long, boost::test_tools::tt_detail::tool_level, boost::test_tools::tt_detail::check_type, unsigned long const&, char const*, int const&, char const*) in test_fasta.o
"boost::this_thread::interruption_point()", referenced from:
boost::condition_variable::wait(boost::unique_lock<boost::mutex>&) in structure.o
void boost::condition_variable_any::wait<boost::unique_lock<boost::mutex> >(boost::unique_lock<boost::mutex>&) in structure.o
"boost::this_thread::disable_interruption::disable_interruption()", referenced from:
boost::shared_mutex::lock_shared() in structure.o
boost::shared_mutex::lock() in structure.o
"boost::this_thread::disable_interruption::~disable_interruption()", referenced from:
boost::shared_mutex::lock_shared() in structure.o
boost::shared_mutex::lock() in structure.o
"boost::detail::thread_data_base::~thread_data_base()", referenced from:
boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf1<void, MProtein, std::__1::vector<MResidue*, std::__1::allocator<MResidue*> > const&>, boost::_bi::list2<boost::_bi::value<MProtein*>, boost::reference_wrapper<std::__1::vector<MResidue*, std::__1::allocator<MResidue*> > > > > >::~thread_data() in structure.o
boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf2<void, MProtein, buffer<MResidue*, 100u>&, std::__1::vector<MResidue*, std::__1::allocator<MResidue*> > const&>, boost::_bi::list3<boost::_bi::value<MProtein*>, boost::reference_wrapper<buffer<MResidue*, 100u> >, boost::reference_wrapper<std::__1::vector<MResidue*, std::__1::allocator<MResidue*> > const> > > >::~thread_data() in structure.o
"boost::detail::get_current_thread_data()", referenced from:
boost::detail::interruption_checker::interruption_checker(_opaque_pthread_mutex_t*, _opaque_pthread_cond_t*) in structure.o
"boost::system::generic_category()", referenced from:
boost::system::error_category::std_category::equivalent(int, std::__1::error_condition const&) const in fasta.o
boost::system::error_category::std_category::equivalent(std::__1::error_code const&, int) const in fasta.o
boost::system::error_category::std_category::equivalent(int, std::__1::error_condition const&) const in iocif.o
boost::system::error_category::std_category::equivalent(std::__1::error_code const&, int) const in iocif.o
boost::system::error_category::std_category::equivalent(int, std::__1::error_condition const&) const in structure.o
boost::system::error_category::std_category::equivalent(std::__1::error_code const&, int) const in structure.o
boost::thread_exception::thread_exception(int, char const*) in structure.o
...
"boost::thread::join_noexcept()", referenced from:
boost::thread::join() in structure.o
"boost::thread::native_handle()", referenced from:
boost::thread::get_id() const in structure.o
"boost::thread::hardware_concurrency()", referenced from:
MProtein::CalculateAccessibilities(std::__1::vector<MResidue*, std::__1::allocator<MResidue*> > const&) in structure.o
"boost::thread::start_thread_noexcept()", referenced from:
boost::thread::start_thread() in structure.o
"boost::thread::detach()", referenced from:
boost::thread::~thread() in structure.o
"boost::unit_test::unit_test_main(bool (*)(), int, char**)", referenced from:
_main in test_fasta.o
"boost::unit_test::unit_test_log_t::set_checkpoint(boost::unit_test::basic_cstring<char const>, unsigned long, boost::unit_test::basic_cstring<char const>)", referenced from:
test_mkhssp_suite::test_read_proteins_from_fasta_single_invoker() in test_fasta.o
test_mkhssp_suite::test_read_proteins_from_fasta_single::test_method() in test_fasta.o
test_mkhssp_suite::test_read_proteins_from_fasta_multiple_invoker() in test_fasta.o
test_mkhssp_suite::test_read_proteins_from_fasta_multiple::test_method() in test_fasta.o
"boost::unit_test::framework::master_test_suite()", referenced from:
init_unit_test() in test_fasta.o
"boost::unit_test::test_case::test_case(boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long, boost::function<void ()> const&)", referenced from:
boost::unit_test::make_test_case(boost::function<void ()> const&, boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long) in test_fasta.o
"boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long, boost::unit_test::decorator::collector&)", referenced from:
___cxx_global_var_init.2 in test_fasta.o
"boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector&, unsigned long)", referenced from:
___cxx_global_var_init.5 in test_fasta.o
___cxx_global_var_init.12 in test_fasta.o
"boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(int)", referenced from:
___cxx_global_var_init.18 in test_fasta.o
"boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)", referenced from:
boost::unit_test::make_test_case(boost::function<void ()> const&, boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long) in test_fasta.o
"boost::thread::joinable() const", referenced from:
boost::thread_group::join_all() in structure.o
"typeinfo for boost::detail::thread_data_base", referenced from:
typeinfo for boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf1<void, MProtein, std::__1::vector<MResidue*, std::__1::allocator<MResidue*> > const&>, boost::_bi::list2<boost::_bi::value<MProtein*>, boost::reference_wrapper<std::__1::vector<MResidue*, std::__1::allocator<MResidue*> > > > > > in structure.o
typeinfo for boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf2<void, MProtein, buffer<MResidue*, 100u>&, std::__1::vector<MResidue*, std::__1::allocator<MResidue*> > const&>, boost::_bi::list3<boost::_bi::value<MProtein*>, boost::reference_wrapper<buffer<MResidue*, 100u> >, boost::reference_wrapper<std::__1::vector<MResidue*, std::__1::allocator<MResidue*> > const> > > > in structure.o
"vtable for boost::detail::thread_data_base", referenced from:
boost::detail::thread_data_base::thread_data_base() in structure.o
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
"vtable for boost::unit_test::unit_test_log_t", referenced from:
boost::unit_test::unit_test_log_t::unit_test_log_t() in test_fasta.o
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [test_fasta] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [all] Error 2
OK, forget that! Just compile with 64bit architecture.
Try replacing line 9 of src/progress.h:
#if defined(__linux__)
should become:
#if defined(__linux__) || defined(__APPLE__)
I changed src/progress.h
as you wrote and then tried compilation. However, another issue occurred. When using Apple LLVM 10.0.0 compiler,
$ ./configure --prefix=/Users/hogehoge/xssp/3.0.3 CC=/usr/bin/gcc CXX=/usr/bin/g++ LDFLAGS=-L/Users/hogehoge/apps/libzeep CPPFLAGS='-I/Users/hogehoge/apps/libzeep'
$ make clean ; make -j4
test -z "mkdssp mkhssp hsspconv test_fasta test_conv test_readpdb" || rm -f mkdssp mkhssp hsspconv test_fasta test_conv test_readpdb
test -z "mtrx/matrices.h" || rm -f mtrx/matrices.h
rm -f *.o
rm -f src/*.o
rm -f tests/*.o
perl mtrx/mkmat_h.pl mtrx/
/Applications/Xcode.app/Contents/Developer/usr/bin/make all-am
depbase=`echo src/iocif.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
/usr/bin/g++ -DHAVE_CONFIG_H -I. -std=c++11 -pedantic -Wall -Werror -Wno-reorder -pthread -I/usr/local/include -I./src/ -I/Users/hogehoge/apps/libzeep -g -O2 -MT src/iocif.o -MD -MP -MF $depbase.Tpo -c -o src/iocif.o src/iocif.cpp &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/mas.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
/usr/bin/g++ -DHAVE_CONFIG_H -I. -std=c++11 -pedantic -Wall -Werror -Wno-reorder -pthread -I/usr/local/include -I./src/ -I/Users/hogehoge/apps/libzeep -g -O2 -MT src/mas.o -MD -MP -MF $depbase.Tpo -c -o src/mas.o src/mas.cpp &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/primitives-3d.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
/usr/bin/g++ -DHAVE_CONFIG_H -I. -std=c++11 -pedantic -Wall -Werror -Wno-reorder -pthread -I/usr/local/include -I./src/ -I/Users/hogehoge/apps/libzeep -g -O2 -MT src/primitives-3d.o -MD -MP -MF $depbase.Tpo -c -o src/primitives-3d.o src/primitives-3d.cpp &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/structure.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
/usr/bin/g++ -DHAVE_CONFIG_H -I. -std=c++11 -pedantic -Wall -Werror -Wno-reorder -pthread -I/usr/local/include -I./src/ -I/Users/hogehoge/apps/libzeep -g -O2 -MT src/structure.o -MD -MP -MF $depbase.Tpo -c -o src/structure.o src/structure.cpp &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/utils.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
/usr/bin/g++ -DHAVE_CONFIG_H -I. -std=c++11 -pedantic -Wall -Werror -Wno-reorder -pthread -I/usr/local/include -I./src/ -I/Users/hogehoge/apps/libzeep -g -O2 -MT src/utils.o -MD -MP -MF $depbase.Tpo -c -o src/utils.o src/utils.cpp &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/blast.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
/usr/bin/g++ -DHAVE_CONFIG_H -I. -std=c++11 -pedantic -Wall -Werror -Wno-reorder -pthread -I/usr/local/include -I./src/ -I/Users/hogehoge/apps/libzeep -g -O2 -MT src/blast.o -MD -MP -MF $depbase.Tpo -c -o src/blast.o src/blast.cpp &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/fasta.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
/usr/bin/g++ -DHAVE_CONFIG_H -I. -std=c++11 -pedantic -Wall -Werror -Wno-reorder -pthread -I/usr/local/include -I./src/ -I/Users/hogehoge/apps/libzeep -g -O2 -MT src/fasta.o -MD -MP -MF $depbase.Tpo -c -o src/fasta.o src/fasta.cpp &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/fetchdbrefs.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
/usr/bin/g++ -DHAVE_CONFIG_H -I. -std=c++11 -pedantic -Wall -Werror -Wno-reorder -pthread -I/usr/local/include -I./src/ -I/Users/hogehoge/apps/libzeep -g -O2 -MT src/fetchdbrefs.o -MD -MP -MF $depbase.Tpo -c -o src/fetchdbrefs.o src/fetchdbrefs.cpp &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/hssp-nt.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
/usr/bin/g++ -DHAVE_CONFIG_H -I. -std=c++11 -pedantic -Wall -Werror -Wno-reorder -pthread -I/usr/local/include -I./src/ -I/Users/hogehoge/apps/libzeep -g -O2 -MT src/hssp-nt.o -MD -MP -MF $depbase.Tpo -c -o src/hssp-nt.o src/hssp-nt.cpp &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/matrix.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
/usr/bin/g++ -DHAVE_CONFIG_H -I. -std=c++11 -pedantic -Wall -Werror -Wno-reorder -pthread -I/usr/local/include -I./src/ -I/Users/hogehoge/apps/libzeep -g -O2 -MT src/matrix.o -MD -MP -MF $depbase.Tpo -c -o src/matrix.o src/matrix.cpp &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/mkhssp.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
/usr/bin/g++ -DHAVE_CONFIG_H -I. -std=c++11 -pedantic -Wall -Werror -Wno-reorder -pthread -I/usr/local/include -I./src/ -I/Users/hogehoge/apps/libzeep -g -O2 -MT src/mkhssp.o -MD -MP -MF $depbase.Tpo -c -o src/mkhssp.o src/mkhssp.cpp &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/progress.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
/usr/bin/g++ -DHAVE_CONFIG_H -I. -std=c++11 -pedantic -Wall -Werror -Wno-reorder -pthread -I/usr/local/include -I./src/ -I/Users/hogehoge/apps/libzeep -g -O2 -MT src/progress.o -MD -MP -MF $depbase.Tpo -c -o src/progress.o src/progress.cpp &&\
mv -f $depbase.Tpo $depbase.Po
src/hssp-nt.cpp:1085:25: error: cannot increment value of type 'MCounter' (aka 'boost::detail::atomic_count')
uint64 next = ix++;
~~^
depbase=`echo src/hssp-convert-3to1.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
/usr/bin/g++ -DHAVE_CONFIG_H -I. -std=c++11 -pedantic -Wall -Werror -Wno-reorder -pthread -I/usr/local/include -I./src/ -I/Users/hogehoge/apps/libzeep -g -O2 -MT src/hssp-convert-3to1.o -MD -MP -MF $depbase.Tpo -c -o src/hssp-convert-3to1.o src/hssp-convert-3to1.cpp &&\
mv -f $depbase.Tpo $depbase.Po
1 error generated.
make[1]: *** [src/hssp-nt.o] Error 1
make[1]: *** Waiting for unfinished jobs....
src/progress.cpp:183:23: error: no viable overloaded '+='
(mImpl->mConsumed += inConsumed) >= mImpl->mMax and
~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~
src/progress.cpp:194:23: error: no viable overloaded '='
(mImpl->mConsumed = inProgress) >= mImpl->mMax and
~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~
/usr/local/include/boost/smart_ptr/detail/atomic_count_std_atomic.hpp:51:20: note: candidate function not viable: no known conversion
from 'int64' (aka 'long long') to 'const boost::detail::atomic_count' for 1st argument
atomic_count & operator=(atomic_count const &);
^
2 errors generated.
make[1]: *** [src/progress.o] Error 1
the Apple clang compiler couldn't compile them.
I found that this issue didn't occur when compiling with GNU compiler 6 or 8 installed by Homebrew. However, there remains some boost issue...
mv -f $depbase.Tpo $depbase.Po
depbase=`echo tests/test_readpdb.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
/usr/local/bin/g++-6 -DHAVE_CONFIG_H -I. -std=c++11 -pedantic -Wall -Werror -Wno-reorder -pthread -I/usr/local/include -I./src/ -I/Users/hogehoge/apps/libzeep -g -O2 -MT tests/test_readpdb.o -MD -MP -MF $depbase.Tpo -c -o tests/test_readpdb.o tests/test_readpdb.cpp &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/dssp.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
/usr/local/bin/g++-6 -DHAVE_CONFIG_H -I. -std=c++11 -pedantic -Wall -Werror -Wno-reorder -pthread -I/usr/local/include -I./src/ -I/Users/hogehoge/apps/libzeep -g -O2 -MT src/dssp.o -MD -MP -MF $depbase.Tpo -c -o src/dssp.o src/dssp.cpp &&\
mv -f $depbase.Tpo $depbase.Po
depbase=`echo src/mkdssp.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
/usr/local/bin/g++-6 -DHAVE_CONFIG_H -I. -std=c++11 -pedantic -Wall -Werror -Wno-reorder -pthread -I/usr/local/include -I./src/ -I/Users/hogehoge/apps/libzeep -g -O2 -MT src/mkdssp.o -MD -MP -MF $depbase.Tpo -c -o src/mkdssp.o src/mkdssp.cpp &&\
mv -f $depbase.Tpo $depbase.Po
/usr/local/bin/g++-6 -g -O2 -L/Users/hogehoge/apps/libzeep -o test_fasta src/fasta.o src/iocif.o src/mas.o src/primitives-3d.o src/structure.o src/utils.o tests/test_fasta.o -lboost_date_time-mt -lboost_filesystem -lboost_iostreams-mt -lboost_program_options-mt -lboost_regex-mt -lboost_system -lboost_thread-mt -lpthread -lboost_unit_test_framework-mt
Undefined symbols for architecture x86_64:
"boost::unit_test::ut_detail::normalize_test_case_name[abi:cxx11](boost::unit_test::basic_cstring<char const>)", referenced from:
boost::unit_test::make_test_case(boost::function<void ()> const&, boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long) in test_fasta.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make[1]: *** [test_fasta] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [all] Error 2
Could you try building boost with the gnu compiler also?
Otherwise, try removing lines 11,12,13,16,17,18,19 from progress.h, saying:
#if defined(__INTEL_COMPILER_BUILD_DATE) || \
(defined(__GNUC__) && (__GNUC__ > 4 || \
( __GNUC__ == 4 && __GNUC_MINOR__ >= 6)))
#else
#include <boost/detail/atomic_count.hpp>
typedef boost::detail::atomic_count MCounter;
#endif
And build with your clang compiler.
Great! mkhssp
finally worked well on macOS High Sierra !
As cbaakman suggested, I modified some lines in src/progress.h like this
#pragma once
#if defined(__linux__) || defined(__APPLE__)
#include <atomic>
typedef std::atomic<int64> MCounter;
#else
struct MCounter
{
MCounter(int64 inValue) : m_value(inValue) {}
operator int64() const { return m_value; }
int64 operator++(int);
int64 operator+=(int64 inValue);
int64 operator=(int64 inValue);
int64 m_value;
};
#endif
Then, ./configure --prefix=/Users/hogehoge/xssp/3.0.3 CC=/usr/bin/gcc CXX=/usr/bin/g++ LDFLAGS=-L/Users/hogehoge/apps/libzeep CPPFLAGS=-I/Users/hogehoge/apps/libzeep
, make clean ; make -j4
/usr/bin/g++ -g -O2 -L/Users/hogehoge/apps/libzeep -o test_fasta src/fasta.o src/iocif.o src/mas.o src/primitives-3d.o src/structure.o src/utils.o tests/test_fasta.o -lboost_date_time-mt -lboost_filesystem -lboost_iostreams-mt -lboost_program_options-mt -lboost_regex-mt -lboost_system -lboost_thread-mt -lpthread -lboost_unit_test_framework-mt
/usr/bin/g++ -g -O2 -L/Users/hogehoge/apps/libzeep -o test_readpdb src/fasta.o src/iocif.o src/mas.o src/primitives-3d.o src/structure.o src/utils.o tests/test_readpdb.o -lboost_date_time-mt -lboost_filesystem -lboost_iostreams-mt -lboost_program_options-mt -lboost_regex-mt -lboost_system -lboost_thread-mt -lpthread -lboost_unit_test_framework-mt
/usr/bin/g++ -g -O2 -L/Users/hogehoge/apps/libzeep -o hsspconv src/hssp-convert-3to1.o src/hsspconv.o src/utils.o -lboost_date_time-mt -lboost_filesystem -lboost_iostreams-mt -lboost_program_options-mt -lboost_regex-mt -lboost_system -lboost_thread-mt -lpthread
/usr/bin/g++ -g -O2 -L/Users/hogehoge/apps/libzeep -o test_conv src/hssp-convert-3to1.o src/utils.o src/mas.o tests/test_conv.o -lboost_date_time-mt -lboost_filesystem -lboost_iostreams-mt -lboost_program_options-mt -lboost_regex-mt -lboost_system -lboost_thread-mt -lpthread -lboost_unit_test_framework-mt
/usr/bin/g++ -g -O2 -L/Users/hogehoge/apps/libzeep -o mkhssp src/blast.o src/dssp.o src/fasta.o src/fetchdbrefs.o src/hssp-nt.o src/iocif.o src/mas.o src/matrix.o src/mkhssp.o src/primitives-3d.o src/progress.o src/structure.o src/utils.o -lboost_date_time-mt -lboost_filesystem -lboost_iostreams-mt -lboost_program_options-mt -lboost_regex-mt -lboost_system -lboost_thread-mt -lpthread -lboost_timer -lzeep
/usr/bin/g++ -g -O2 -L/Users/hogehoge/apps/libzeep -o mkdssp src/dssp.o src/iocif.o src/mas.o src/mkdssp.o src/primitives-3d.o src/structure.o src/utils.o -lboost_date_time-mt -lboost_filesystem -lboost_iostreams-mt -lboost_program_options-mt -lboost_regex-mt -lboost_system -lboost_thread-mt -lpthread
[hogehoge@MyMacbook-pro] $ ln -s /Users/hogehoge/apps/libzeep/libzeep.dylib.3.0 . # include libzeep dynamic library
[hogehoge@MyMacbook-pro] $ ./mkdssp -h
mkdssp 3.0.1 options:
-h [ --help ] Display help message
-i [ --input ] arg Input PDB file (.pdb) or mmCIF file (.cif/.mcif),
optionally compressed by gzip (.gz) or bzip2 (.bz2)
-o [ --output ] arg Output file, optionally compressed by gzip (.gz) or
bzip2 (.bz2). Use 'stdout' to output to screen
-v [ --verbose ] Verbose output
--version Print version and citation info
-d [ --debug ] arg Debug level (for even more verbose output)
Examples:
To calculate the secondary structure for the file 1crn.pdb and
write the result to a file called 1crn.dssp, you type:
./mkdssp -i 1crn.pdb -o 1crn.dssp
[hogehoge@MyMacbook-pro] $ ./mkhssp -h
mkhssp options:
-h [ --help ] Display help message
-i [ --input ] arg PDB ID or input PDB file (.pdb), mmCIF file
(.cif/.mcif), or fasta file (.fa/.fasta), optionally
compressed by gzip (.gz) or bzip2 (.bz2)
-o [ --output ] arg Output file, optionally compressed by gzip (.gz) or
bzip2 (.bz2). Use 'stdout' to output to screen
-d [ --databank ] arg Databank to use (can be specified multiple times)
-a [ --threads ] arg Number of threads (default is maximum)
--min-length arg Minimal chain length (default = 25)
--fragment-cutoff arg Minimal alignment length as fraction of chain length
(default = 0.75)
-O [ --gap-open ] arg Gap opening penalty (default is 30.0)
-E [ --gap-extend ] arg Gap extension penalty (default is 2.0)
--threshold arg Homology threshold adjustment (default = 0.05)
-m [ --max-hits ] arg Maximum number of hits to include (default = 5000)
--fetch-dbrefs Fetch DBREF records for each UniProt ID
-v [ --verbose ] Verbose mode
--version Show version number and citation info
I really appreciate your taking time. I hope that the installation log will contribute to other macOS users.
I guess we'll just always use the std::atomic, since this is supported by default for c++11 anyway.