on Darwin, gcc is used to link. gcc does not know to implicitly link with -lstdc++ [the standard C++ libraries], so the build fails:
durapub.cpp
i686-apple-darwin10-g++-4.2.1: -lzmq: linker input file unused because linking not done
Undefined symbols:
"vtable for std::basic_streambuf<char, std::char_traits >", referenced from:
_main in durapub.opp
_main in durapub.opp
_main in durapub.opp
"operator new(unsigned long)", referenced from:
s_recv(zmq::socket_t&) in durapub.opp
"std::basic_string<char, std::char_traits, std::allocator >::basic_string(char const*, std::allocator const&)", referenced from:
_main in durapub.opp
"vtable for std::basic_stringbuf<char, std::char_traits, std::allocator >", referenced from:
...
The list of undefined symbols:
$ ./c -p -l -lzmq -v durapub.cpp | grep referenced | awk '!x[$0]++'
"vtable for std::basic_streambuf<char, std::char_traits >", referenced from:
"operator new(unsigned long)", referenced from:
"std::basic_string<char, std::char_traits, std::allocator >::basic_string(char const_, std::allocator const&)", referenced from:
"vtable for std::basic_stringbuf<char, std::char_traits, std::allocator >", referenced from:
"std::ios_base::Init::Init()", referenced from:
"operator delete(void_)", referenced from:
"__cxa_call_unexpected", referenced from:
"std::ios_base::~ios_base()", referenced from:
"vtable for __cxxabiv1::__si_class_type_info", referenced from:
"typeinfo for std::exception", referenced from:
"std::basic_ios<char, std::char_traits >::init(std::basic_streambuf<char, std::char_traits >)", referenced from:
"___gxx_personality_v0", referenced from:
"VTT for std::basic_ostringstream<char, std::char_traits, std::allocator >", referenced from:
"std::locale::~locale()", referenced from:
"std::basic_string<char, std::char_traits, std::allocator >::_Rep::_S_empty_rep_storage", referenced from:
"std::_throw_logic_error(char const)", referenced from:
"std::basic_ostream<char, std::char_traits >& std::_ostream_insert<char, std::char_traits >(std::basic_ostream<char, std::char_traits >&, char const, long)", referenced from:
"___cxa_free_exception", referenced from:
"vtable for std::exception", referenced from:
"std::ios_base::ios_base()", referenced from:
"std::basic_string<char, std::char_traits, std::allocator >::_Rep::_S_create(unsigned long, unsigned long, std::allocator const&)", referenced from:
"std::basic_string<char, std::char_traits, std::allocator >::_Rep::M_destroy(std::allocator const&)", referenced from:
"std::ios_base::Init::~Init()", referenced from:
"std::locale::locale()", referenced from:
"vtable for std::basic_ostringstream<char, std::char_traits, std::allocator >", referenced from:
"std::exception::~exception()", referenced from:
"std::basic_ostringstream<char, std::char_traits, std::allocator >::~basic_ostringstream()", referenced from:
"std::basic_string<char, std::char_traits, std::allocator >::basic_string(char const, unsigned long, std::allocator const&)", referenced from:
"___cxa_allocate_exception", referenced from:
"___cxa_throw", referenced from:
"std::basic_string<char, std::char_traits, std::allocator >::assign(std::basic_string<char, std::char_traits, std::allocator > const&)", referenced from:
"vtable for std::basic_ios<char, std::char_traits >", referenced from:
"std::basic_ostream<char, std::char_traits >::operator<<(int)", referenced from:
Suggested Fix:
$ git diff
diff --git a/examples/C++/c b/examples/C++/c
index e65b189..526291a 100755
--- a/examples/C++/c
+++ b/examples/C++/c
@@ -178,6 +178,7 @@ if [ "$CCNAME" = "gcc" ]; then
elif [ "$UTYPE" = "Darwin" ]; then
# Use -start-group / -end-group for linking
LINKTYPE="after"
-
STDLIBS="$STDLIBS -lstdc++"
Solaris-specific subsection