Не компилируется под Linux

Модератор: Модераторы разделов

Ответить
LesyaHuk
Сообщения: 3

Не компилируется под Linux

Сообщение LesyaHuk »

Здравствуйте!
Написала програмку просто для проверки компиляции под Линукс компилятором gcc. Dev-C++ компилирует естественно без проблем, а gcc выдает ошибку: 1d returned 1 exit status.

Код: Выделить всё

#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE *Out;
Out=fopen("out.txt", "w");

char str1;
int arX[20];
int x=10;


fprintf(Out, "File was created and open\n %d", x);

printf("Program is running!\n");

fclose(Out);

return 0;
    }


При чем если закоментировать строчку с объявлением масива (//int arX[20];) - компилируется и работает.
Это компилятор глючит или я чего-то совсем не понимаю? Помогите пойжалуста.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Не компилируется под Linux

Сообщение Bizdelnick »

Покажите полностью команду компиляции и её вывод. Понятно только, что линковщик (ld) завершился с ошибкой, но собственно сообщение об ошибке от него должно было быть выше.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
LesyaHuk
Сообщения: 3

Re: Не компилируется под Linux

Сообщение LesyaHuk »

Команда компиляции: gcc -o MainKrig.exe MainKrig.cpp
Ответ: /tmp/ccbtadmQ.o:(.eh_frame+0x13): undefined reference to `__gxx_personality_v0'
collect2: error: ld returned 1 exit status
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Не компилируется под Linux

Сообщение Bizdelnick »

Похоже, Вы запутали компилятор тем, что запускаете его как gcc (компилятор C, если явно не указан язык), а имя файла содержит суффикс .cpp (из-за которого он решает, что это C++). Соответственно при компиляции gcc ориентируется на суффикс, а при линковке, когда работает не с исходным файлом, а с созданным из него объектным, — на собственное имя. Или запускайте компилятор как g++ вместо gcc (если нужен C++), или переименуйте файл в *.c (если нужен C), или указывайте язык явно с помощью опции -x.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Не компилируется под Linux

Сообщение serzh-z »

LesyaHuk
Опция `-lstdc++` в помощь. Либо совет Биздельника.
Спасибо сказали:
Аватара пользователя
Olej
Сообщения: 659
ОС: Fedora, Mint, Debian, QNX
Контактная информация:

Re: Не компилируется под Linux

Сообщение Olej »

LesyaHuk писал(а):
10.06.2016 14:04
Команда компиляции: gcc -o MainKrig.exe MainKrig.cpp
Ответ: /tmp/ccbtadmQ.o:(.eh_frame+0x13): undefined reference to `__gxx_personality_v0'
collect2: error: ld returned 1 exit status

Код: Выделить всё

$ g++ MainKrig.cpp -o MainKrig

1. Но для вам может оказаться большим сюрпризом, что GCC для языка С у вас уже установлен, а для C++ ещё нет.
2. В какой системе вы вообще компилируете? это не MinGV ли в Windows? ... вы эту дурь выбросьте из головы :drinks:
3. Если это Linux, то какой дистрибутив? - от этого может зависеть порядок следования опции -o (есть сборки GCC с задрочками)
4. Переименуйте *.cpp в *.cc - отвыкайте от этих виндовых задрочек! :unsure:
5. Можете переименовать своё *.cpp в *.c и компилировать как просто код ANSI C:

Код: Выделить всё

$ gcc MainKrig.c -o MainKrig
Спасибо сказали:
LesyaHuk
Сообщения: 3

Re: Не компилируется под Linux

Сообщение LesyaHuk »

Точно Linux.
Какой дистрибутив - не знаю. Компилирую на удаленной машине под управлением незнакомого мне админа :) Видно стоит познакомиться.
Писала под Dev-C++, потому и cpp.
В перспективе там и с++ будет, потому надо компилировать как с++.



$ g++ MainKrig.cpp -o MainKrig
ответ: bash: $: command not found



Заработало с g++. Спасибо :) Огромное


Еще раз всем спасибо, что откликнулись и помогли чайнику. Теперь буду знать, что gcc - это вызов компилятора для с, а g++ - для с++.
Спасибо сказали:
Аватара пользователя
Olej
Сообщения: 659
ОС: Fedora, Mint, Debian, QNX
Контактная информация:

Re: Не компилируется под Linux

Сообщение Olej »

LesyaHuk писал(а):
10.06.2016 15:15
Заработало с g++. Спасибо :) Огромное
Еще раз всем спасибо, что откликнулись и помогли чайнику. Теперь буду знать, что gcc - это вызов компилятора для с, а g++ - для с++.

Приглашаю вас сюда: Программирование
Спасибо сказали:
Ответить