MyTetra Share
Делитесь знаниями!
Как бороться с ошибкой компиляции undefined reference to `std::cout'
Время создания: 18.02.2022 11:55
Текстовые метки: cpp, c++, undefined reference, std::cout, gcc, компиляция
Раздел: Компьютер - Программирование - Язык C++ (Си++)
Запись: xintrea/mytetra_syncro/master/base/16451745096tvyzofbpu/text.html на raw.github.com

При использовании компилятора gcc в Linux, часто можно наткнуться на следующую проблему. Имеется файл sample.cpp с подключенным заголовком стандартной библиотеки iostream:



#include <iostream>


int func()

{

return 7;

}

int main()

{

std::cout << func();

}



При компиляции такого исходника возникает ошибка:



$ gcc sample.cpp  
/tmp/ccl7O2ra.o: In function `main':
sample.cpp:(.text+0x17): undefined reference to `std::cout'



Почему так происходит? Потому что что библиотека iostream хоть и системная, хоть и входит в стандарт C++ STL, но все-таки библиотека. И чтобы достучаться до реализаций функций стандартной библиотеки, в строке компиляции надо ее подключить.


Правильная команда компиляции должна выглядеть следующим образом:



$ gcc sample.cpp -lstdc++



С такой командой сборка из исходника пройдет без ошибки.


Еще одним вариантом решения будет использовать не GCC (который является GNU compile collection), а напрямую плюсовый компилятор, который называется g++.

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования