Haruskah ini menjadi contoh:
#include <iostream>
using namespace std;
int main()
{
cout << "Hola, moondo.\n";
}
Itu melempar kesalahan:
gcc -c main.cpp gcc -o edit main.o main.o: In function `main':
main.cpp:(.text+0xa): undefined reference to `std::cout'
main.cpp:(.text+0xf): 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: In function `__static_initialization_and_destruction_0(int,int)':
main.cpp:(.text+0x3d): undefined reference to `std::ios_base::Init::Init()'
main.cpp:(.text+0x4c): undefined reference to `std::ios_base::Init::~Init()' collect2: error: ld
returned 1 exit status make: *** [qs] Error 1
Juga, contoh ini:
#include <iostream>
int main()
{
std::cout<<"Hola, moondo.\n";
}
melempar kesalahan:
gcc -c main.cpp gcc -o edit main.o main.o: In function `main':
main.cpp:(.text+0xa): undefined reference to `std::cout'
main.cpp:(.text+0xf): 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: In function `__static_initialization_and_destruction_0(int,int)': main.cpp:(.text+0x3d): undefined reference to `std::ios_base::Init::Init()'
main.cpp:(.text+0x4c): undefined reference to `std::ios_base::Init::~Init()' collect2: error: ld
returned 1 exit status make: *** [qs] Error 1
Catatan: Saya menggunakan Debian Wheezy.
g++
alih-alihgcc
.gcc
adalah untuk C dan tidak akan memberi Anda akses ke pustaka standar C ++.gcc -o edit main.o
tidak tahu itumain.o
akan membutuhkan pustaka startup C ++.Jawaban:
Kompilasi program dengan:
sebagai
cout
hadir dalam C ++ standar perpustakaan, yang akan membutuhkan menghubungkan eksplisit dengan-lstdc++
ketika menggunakangcc
;g++
menghubungkan perpustakaan standar secara default.Dengan
gcc
, (g++
harus lebih disukai daripadagcc
)sumber
gcc
akan bekerja dengan baik jika Anda hanya menambahkan-lstdc++
.-Wall
ketika memberikan contoh baris perintah gcc / g ++ - ini membantu untuk membuat noobs menjadi kebiasaan yang baik pada tahap awal dan menghemat waktu semua orang lebih jauh. ;-)std::cout
bagian dari Perpustakaan Template Standar?-Wall
dan bahkan-Wextra
memperingatkan tentang masalah yang sangat nyata, atau pengkodean ceroboh yang dapat dengan mudah diperbaiki. Pesan di sini adalah untuk membiasakan diri di mana Anda menganggap peringatan kompiler sebagai petunjuk yang bermanfaat di mana kode Anda dapat ditingkatkan, alih-alih gangguan. Ada ratusan pertanyaan di sini di SO yang tidak akan diperlukan di tempat pertama jika OP telah digunakan-Wall -Wextra
.-Werror
hanya memperkuat itu.Ya, menggunakan
g++
perintah berhasil untuk saya:sumber
./a.out
Makefiles
Jika Anda bekerja dengan makefile dan Anda berakhir di sini seperti saya, maka ini mungkin yang Anda cari atau:
Jika Anda menggunakan makefile, maka Anda perlu mengubah
cc
seperti yang ditunjukkan di bawah iniuntuk
sumber