Quantcast
Channel: Active questions tagged gcc - Stack Overflow
Viewing all articles
Browse latest Browse all 22040

Why does this work with G++ and not CLANG? [closed]

$
0
0

Trying to learn C/C++.

Why does this work when use g++ and not clang? But it works when I convert the same program to plain C and use gcc and clang...

The code:

#include <iostream>#ifndef ARCH#define ARCH "Undefined"#endifusing namespace std;int main() {  char str[] = "Hello C++";  cout << "Value of str is : "<< str << endl;  cout << "Value of str is : "<< ARCH << endl;  exit(0);}

Using g++ I run g++"-DARCH=\"`uname -m`\"" hello.cpp and it works just fine.

Using clang I run clang "-DARCH=\"`uname -m`\"" hello.cpp and it fails.

Undefined symbols for architecture x86_64:"std::__1::locale::use_facet(std::__1::locale::id&) const", referenced from:      std::__1::ctype<char> const& std::__1::use_facet<std::__1::ctype<char> >(std::__1::locale const&) in hello-7c7087.o"std::__1::ios_base::getloc() const", referenced from:      std::__1::basic_ios<char, std::__1::char_traits<char> >::widen(char) const in hello-7c7087.o"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(unsigned long, char)", referenced from:      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(unsigned long, char) in hello-7c7087.o"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()", referenced from:      std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, char) in hello-7c7087.o"std::__1::basic_ostream<char, std::__1::char_traits<char> >::put(char)", referenced from:      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in hello-7c7087.o"std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush()", referenced from:      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in hello-7c7087.o"std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::sentry(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)", referenced from:      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in hello-7c7087.o"std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::~sentry()", referenced from:      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in hello-7c7087.o"std::__1::cout", referenced from:      _main in hello-7c7087.o"std::__1::ctype<char>::id", referenced from:      std::__1::ctype<char> const& std::__1::use_facet<std::__1::ctype<char> >(std::__1::locale const&) in hello-7c7087.o"std::__1::locale::~locale()", referenced from:      std::__1::basic_ios<char, std::__1::char_traits<char> >::widen(char) const in hello-7c7087.o"std::__1::ios_base::__set_badbit_and_consider_rethrow()", referenced from:      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in hello-7c7087.o"std::__1::ios_base::clear(unsigned int)", referenced from:      std::__1::ios_base::setstate(unsigned int) in hello-7c7087.o"std::terminate()", referenced from:      ___clang_call_terminate in hello-7c7087.o"___cxa_begin_catch", referenced from:      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in hello-7c7087.o      ___clang_call_terminate in hello-7c7087.o"___cxa_call_unexpected", referenced from:      std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >::ostreambuf_iterator(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in hello-7c7087.o"___cxa_end_catch", referenced from:      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in hello-7c7087.o"___gxx_personality_v0", referenced from:      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in hello-7c7087.o      std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, char) in hello-7c7087.o      std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >::ostreambuf_iterator(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in hello-7c7087.o      std::__1::basic_ios<char, std::__1::char_traits<char> >::widen(char) const in hello-7c7087.o      Dwarf Exception Unwind Info (__eh_frame) in hello-7c7087.old: symbol(s) not found for architecture x86_64clang: error: linker command failed with exit code 1 (use -v to see invocation)

What really doesn't make sense to me is that it works both ways if I convert the code to C.

Thanks in advance!


Viewing all articles
Browse latest Browse all 22040

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>