Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Компиляция в консоли .cpp файлов  (Прочитано 702 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн balots

  • Автор темы
  • Новичок
  • *
  • Сообщений: 6
    • Просмотр профиля
Компиляция в консоли .cpp файлов
« : 14 Апреля 2025, 17:22:03 »
Здравствуйте, недавно установил VScode, настроил. Когда из консоли компилирую программы, выводится следующая ошибка
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/13/../../../x86_64-linux-gnu/Scrt1.o: в функции «_start»:
(.text+0x1b): undefined reference to `main'
collect2: error: ld returned 1 exit status
Причём если написать using namespace std; то всё нормально компилируется. Из Vscode кнопкой тоже всё нормально (даже без using namespace std;). Что я не так настроил, подскажите пожалуйста?  :(
Для компиляции использую следующую команду g++ file.cpp -o file
Пользователь добавил сообщение 14 Апреля 2025, 17:31:36:
Теперь вообще никак не компилируется... из консоли
« Последнее редактирование: 14 Апреля 2025, 17:32:00 от balots »

Оффлайн michaellebane

  • Новичок
  • *
  • Сообщений: 1
    • Просмотр профиля
Re: Компиляция в консоли .cpp файлов
« Ответ #1 : 16 Апреля 2025, 16:33:46 »
Привет!
Судя по ошибке /usr/bin/ld: ... undefined reference to 'main', компилятор просто не находит точку входа в программу, то есть функцию main(). Это может происходить, если ты случайно компилируешь не тот файл, в котором она находится, или файл вообще пустой/содержит только заголовки и функции без main().

Насчёт того, что using namespace std; вдруг "чинит" компиляцию — скорее всего, ты просто компилировал другой файл, в котором main() есть, и подумал, что причина в using namespace std;. На самом деле, using namespace std; не влияет на то, найдётся ли main() или нет. А вот если у тебя несколько файлов и ты путаешься, какой из них компилируешь — такое вполне может быть. Ставки на спорт и азартные игры в сети становятся всё более популярными. На 1win armenia можно делать live-ставки, выбирать слоты от топовых провайдеров и наслаждаться атмосферой настоящего казино, не выходя из дома. Платформа проста в использовании, отлично работает на любых устройствах и радует высокой скоростью вывода средств.

Проверь следующее:

Убедись, что в file.cpp действительно есть int main() (или int main(int argc, char** argv) — неважно).

Проверь, не запускаешь ли ты случайно команду на какой-нибудь другой .cpp файл, где main() отсутствует (например, вспомогательный файл с функциями).

Можно явно указать путь к нужному файлу:

bash
Копировать
Редактировать
g++ /полный/путь/к/file.cpp -o file
Если проект из нескольких файлов, убедись, что только один содержит main(), а остальные подключаются корректно.

А то, что из VS Code компиляция работает — вполне возможно, он сам подхватывает правильный файл/набор файлов и компилирует всё как надо.

Если не получится — скинь содержимое file.cpp, посмотрим, что там.
« Последнее редактирование: 22 Апреля 2025, 09:53:53 от michaellebane »
привет!

 

Страница сгенерирована за 0.016 секунд. Запросов: 22.