Fink
  [ Ignoră ]
RankRank
Jr. Member
Din: București
Macuser din: 03.08.09

Am deschis acest topic pentru a discuta despre Fink, o aplicație care permite rularea programelor Linux pe OS X. Am mai discutat despre Fink in altă secțiune, dar cum depășea subiectul secțiunii, e mai potrivit să discutăm aici. Totul a început cu asta:

Bună ziua. Am instalat Fink, cu tot cu Fink commander, și apoi gcc-4. Problema: am vrut să testez compilatorul, în acest scop am scris urmatorul cod, luat literă cu literă dintr-un manual de C:

#include <stdio.h>
main()
{
printf(“Hello,world\n”);
}

Iar compilatorul îmi întoarce o eroare ca asta:

salut.h:1:19: error: stdio.h: No such file or directory
salut.h: In function ‘main’:
salut.h:4: warning: incompatible implicit declaration of built-in function ‘printf’

Ce pot face? Codul nu e bun sau eu nu știu să folosesc gcc-ul? Am lucrat în maniera din manual: am scris codul într-un editor de limbaje (Editra), l-am salvat cu un nume și extensia .h (așa setează Editra ca extensie pentru C, e corect?), și l-am dat ca argument compilatorului, care mi-a dat eroarea de mai sus. Sunt complet începător, nu știu ce să fac să funcționeze. Aveți vreo idee de ce apare eroarea?

Din ce am înțeles, eroarea apare pentru că nu găsește stdio.h. Mă întrebam cum se poate asta, credeam că fișierele .h vin o dată cu compilatorul. Așa este?
Legat de eroare, mai zice ceva și de funcția printf, ce înseamnă?
Se pot omite directivele de preprocesare?
Sau trebuie instalat și preprocesorul, poate e separat?
Scuze de atâtea întrebări, chiar vreau șă învăț.

Profil
 
  [ Ignoră ]   [ # 1 ]
Avatar
RankRankRankRank
Sr. Member
Din: Iasi
Macuser din: 18.10.06

Acuma, nu stiu care e treaba cu Fink insa cu gcc treaba sta cam asa:
1. programul ar trebui sa arate cam asa:

//test.c
#include <stdio.h>

void main(void)
{

printf(“Salutare”);
}

Extensia fisierului trebuie sa fie c si nu h. Fisierele cu extensia h reprezinta headerele care se includ in aplicatia ta si nu pot contine functia main in ele.

2. Compilarea se face in felul urmator: gcc -o nume_dorit_aplicatie test.c

Acuma, de ce nu-ti gaseste tie <stdio.h>, asta cred ca tine de Fink.

 Semnătură 

Profil
 
  [ Ignoră ]   [ # 2 ]
RankRank
Jr. Member
Din: București
Macuser din: 03.08.09

Mersi. Am încercat și exemplul dv., dar tot nu merge, acum zice “no input files”. Poate că ar trebui să renunț la Fink, dacă nu găsesc fișierele acelea.

Profil
 
  [ Ignoră ]   [ # 3 ]
Avatar
RankRankRank
Member
Din: Tg. Mures
Macuser din: 18.10.05

Nu vad nicio legatura intre Fink (care-i un manager de aplicatii, pachete etc.) si compilarea unui program C.

Ai instalat XCode Developer Tools? Se gasesc pe DVD-ul de OSX si acolo este si gcc si g++ si multe alte compilatoare.

Ah, si daca ai salvat fisierul cu extensia .c sau .cpp, apoi acel nume trebuie sa-l dai ca parametru compilatorului.

Uite cum merge la mine:

cat >> unu.cpp << GATA
#include <stdio.h>
int main() { printf("Hi!\n"); }
GATA 

Dupa cum se vede, n-am folosit un editor pentru a edita fisierul.

Apoi:

mbplxx:~ alxxg++ unu.cpp 
mbplxx
:~ alxx$ ./a.out 
Hi

Tot dupa cum se vede, daca nu am specificat un nume pentru binarul in care se compileaza codul din unu.cpp, compilatorul va genera un executabil cu numele conventional a.out.

Profil
 
  [ Ignoră ]   [ # 4 ]
RankRank
Jr. Member
Din: București
Macuser din: 03.08.09
alxx - 18 Septembrie 2009 06:45 PM

Nu vad nicio legatura intre Fink (care-i un manager de aplicatii, pachete etc.) si compilarea unui program C.

Ai instalat XCode Developer Tools? Se gasesc pe DVD-ul de OSX si acolo este si gcc si g++ si multe alte compilatoare.

Ah, si daca ai salvat fisierul cu extensia .c sau .cpp, apoi acel nume trebuie sa-l dai ca parametru compilatorului.

Uite cum merge la mine:

cat >> unu.cpp << GATA
#include <stdio.h>
int main() { printf("Hi!\n"); }
GATA 

Dupa cum se vede, n-am folosit un editor pentru a edita fisierul.

Apoi:

mbplxx:~ alxxg++ unu.cpp 
mbplxx
:~ alxx$ ./a.out 
Hi

Tot dupa cum se vede, daca nu am specificat un nume pentru binarul in care se compileaza codul din unu.cpp, compilatorul va genera un executabil cu numele conventional a.out.

Da, dar eu nu am Xcode, vedeți la secțiunea Xcode din acest subforum de ce. Dacă aș fi avut Xcode, nu mi-aș fi instalat Fink, fiindcă ar fi intrat în conflict.
Nu bănuiți cumva de ce nu se găsesc anteturile în Fink, de ce dă atâtea erori? Mă exasperează să nu pot face nimic.

Late: legătura dintre Fink și compilarea în C e aceea că prin Fink am instalat un compilator de C (gcc-4), ca să suplinesc lipsa lui Xcode. Să aibă acest compilator probleme?

[ Modificat: 18 Septembrie 2009 07:19 PM de Darian ]
Profil
 
  [ Ignoră ]   [ # 5 ]
RankRank
Jr. Member
Din: București
Macuser din: 03.08.09

Am “rezolvat” problema: am șters Fink. Asta e, tot Xcode se pare că e cel mai potrivit pt. programarea pe sistemele Apple. Topicul poate fi șters și el, sau poate fi păstrat pentru cei care au/vor avea Fink.

Profil
 
  [ Ignoră ]   [ # 6 ]
Avatar
RankRankRank
Member
Din: Tg. Mures
Macuser din: 18.10.05

Faptul ca poti obtine gcc prin Fink nu inseamna neaparat ca trebuie si sa-l folosesti. Xcode e raspunsul acestei spete.

Si eu am folosit multi ani Fink, apoi am trecut la Macports pentru ca nu puteam instala ImageMagick cu Fink, dar mi-a iesit cu Macports si atunci am renuntat la Fink, ca nu prea e bine sa le folosesti in paralel.

Cind vei vrea sa instalezi, sa zicem, editorul joe, atunci e mai simplu sa folosesti Fink / Macports decit sa aduci sursele si sa le compilezi, dar in particular gcc e mai bine sa-l folosesti din Xcode.

Probabil ti-ar fi mers si gcc-4 daca ai mai fi instalat, tot cu Fink, si alte pachete care contin anteturile, etc. De pilda o comanda de genul fink search stdio.h (nu stiu sigur daca chiar asa trebuie sa arate) ti-ar fi cautat in toate pachetele si ti-ar fi zis pe care trebuie sa-l aduci/instalezi pentru a avea stdio.h.

Profil
 
  [ Ignoră ]   [ # 7 ]
RankRank
Jr. Member
Din: București
Macuser din: 03.08.09

Mă gândeam să instalez gcc “de unul singur”, adică nu prin Fink sau altceva, ci ca pe un program oarecare. Am înțeles că se poate așa. Dacă reușesc să fac asta am o întrebare: există vreun alt IDE pentru C/C++, în afară de XCode? Mă refer la un IDE complet, nu la un editor de cod, un mediu în care să pot scrie, rula și depana codul fără să mai deschid Terminal pentru a lansa gcc și compila programul. Cam asta caut, și sunt recunoscător pentru orice sugestii.

Profil