Wyskakujący błąd przy kompilowaniu w C


(Annakosiorek4) #1

Ostatnio bardzo często (ale nie zawsze) pojawia mi się błąd przy kompilacji, typu:

C:\Users\Serena\Documents\Ania\programowanie\moje ćw\collect2.exe [Error] ld returned 1 exit status.

Wyskakuje mi ten błąd nawet przy niektórych programach, które wcześniej(miesiąc temu) się kompilowały, a jak je teraz otwieram to już się nie kompilują. Co jeszcze zauważyłam, że jak otwieram plik typu c w devie to pojawia mi się taka informacja:

Could not open language file Polish.lng

 

Wkleję przykładowy program, przy którym to mi się pojawia między innymi:

 

include

 

int main()

{

int i;

for(i='a';i<='z';i++)

printf("%c\t", i);

system("pause");

return 0;

}

 

Z czym może być problem? Będę wdzięczna za pomoc.


(Razi) #2
  1. W ścieżkach nie używaj spacji i polskich znaków. Powodują tylko problemy

  2. Ten problem to brak polskiego tłumaczenia, źle się zainstalowało, instalka była niekompletna albo jeszcze coś innego.


(Annakosiorek4) #3

Czy możesz mi powiedzieć w takim razie co powinnam zrobić? Zmieniłam już nazwy folderów bez polskich znaków i spacji, ale nie wiem co dalej zrobić, bo to nic nie pomogło, nawet jak przeinstalowałam dev'a. 


(kostek135) #4

Tak, miałem to samo. W którejś wersji było naruszenie pamięci jak używałeś tablicy intowej o 20 elementach na stosie (19, czy 21 były ok). Tego IDE i co ono robi nie idzie ogarnąć, zmień IDE, rozwiąże wszystkie twoje problemy.


(Marcin Obala) #5

Ten błąd miałem często przy właśnie spacjach ale przy samym devie (dev zainstalowany w program files). Dwa to był brak uprawnień do zmiany execa (nie dało się go usunąć bo brak uprawnień lub używany).


(Annakosiorek4) #6

W takim razie, możesz mi powiedzieć w jaki sposób mam zmienić IDE? 


(enedil) #7

Zainstaluj jakiekolwiek inne. Ja polecam od siebie Qt Creator.


(Annakosiorek4) #8

Zainstalowałam już NetBeans i rzeczywiście jest poprawa :slight_smile: Dziękuje wszystkim za pomoc


(Annakosiorek4) #9

Przepraszam, ze ciągnę ten temat jednak nadal jest coś nie tak. Za pierwszym razem mi się kompiluje (chociaż otwierają mi się dwie konsole), ale jak drugi raz kompiluje (a nic nie zmieniam w programie) to wyskakuje mi error 1.


(enedil) #10

A co jest oprócz tego 'error 1'?


(Annakosiorek4) #11

Dzięki za zainteresowanie enedil :slight_smile:

To samo w sumie co napisałam w pierwszym poście:

C:\Users\Serena\Documents\Ania\programowanie\mojeCw\collect2.exe [Error] ld returned 1 exit status.

Na innym komputerze w devie, ten program kompilował mi się bez problemu.


(enedil) #12

A pokażesz kod, czy to jest jakaś służbowa tajemnica?


(Annakosiorek4) #13

Oczywiście, przykładowy, prosty program, przy którym nie działa np:

include

include

 

int main()

{

char str[10]="sobota";

char s[10];

printf("%s\n", str);

gets(s);

puts(s);

system("pause");

return 0;

}

 

albo:

 

include

 

int main()

{

int i;

for(i='a';i<='z';i++)

printf("%c\t", i);

system("pause");

return 0;

}


(Razi) #14

@kostek135: mówisz o błędzie wykonania, a tu jest błąd budowania (konsolidacji konkretnie). To dwie niezwiązane ze sobą sprawy (program nie ma szans się nawet wykonać)

 

Czyli po prostu program się nie zamyka, zostaje gdzieś w pamięci i blokuje plik, kompilator nie może go usunąć i wywala błąd. Ah jak miło wspominam programowanie pod Windowsem…

Sprawdź w menedżerze zadań czy ten exek dalej nie siedzi w procesach. I wyłącz antywirusa – te cholerstwa często tylko szkodzą i utrudniają życie programistów (jak np. 2-minutowe uruchamianie Hello Worlda).

 

W tych kodach nie ma niczego co by mogło powodować błędy, chyba żeby ten system("pause");.


(kostek135) #15

@Razi, nie bylem nigdy wstanie określić co to IDE do mnie mówi. Znaczy tu widać że jest błąd linkowania, ale doprawdy dojście jaka jest tego przyczyna, ehh... Spod terminala czy Eclipse + natywne gcc nigdy mi się coś takiego nie zdarzyło, nawet teraz napisałem program, który zablokowałem na prostym scanfie i dało radę usunąć binarkę, więc nie wiem co to IDE/kompilator (czy może system?) robi...


(Annakosiorek4) #16

Dziękuję za pomoc. Exek rzeczywiście tam siedział :slight_smile: A co do linuxa, to rzeczywiście sobie go zainstaluje.


(enedil) #17

Nie ma domyślnie GCC, ale można łatwo doinstalować. Wystarczy

sudo apt-get install build-essentials

A co do programowania, to pod Windowsem zawsze coś źle linkowało, a na Fedorze wszysto śmiga :smiley: