Ho scritto un programma in c++ per mostrare il classico hello world
Sto lavorando su linux ed uso g++ per compilare.
Ho bisogno di linkare questo file separatamente. Quindi uso -c nelle opzioni del compilatore:
codice:
gcc helloworld.cpp -c
e mi ritrovo helloworld.o
Ora per linkare eseguo
codice:
ld helloworld.o helloworld2.o helloworld3.o
Come prevedibile mi ritrovo:
codice:
ld: warning: cannot find entry symbol _start; defaulting to 00000000080481ac
helloworld.o: In function `__static_initialization_and_destruction_0(int, int)':
helloworld.cpp:(.text+0x23): undefined reference to `std::ios_base::Init::Init()'
helloworld.cpp:(.text+0x2b): undefined reference to `__dso_handle'
helloworld.o: In function `__tcf_0':
helloworld.cpp:(.text+0x6c): undefined reference to `std::ios_base::Init::~Init()'
helloworld.o: In function `main':
helloworld.cpp:(.text+0x8e): undefined reference to `std::cout'
helloworld.cpp:(.text+0x93): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
main.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
Se fosse stato in C, avrei linkato con
codice:
ld helloworld.o helloworld2.o helloworld3.o -lc
-lc sta ad indicare includi libc.
Nel caso del c++, che libreria devo includere?