Compilare C++ su mac...

Razile

Rappresentante di classe
Salve, ho da poco (ieri) cominciato a programmare (se così può essere definito) i c++...a scuola ho scritto in codice con emacs e ho compilato e avviato da terminale da linux, non avendo voglia di installare linux ho installato xcode sul mac e provato ad avviare il file da terminale

-bash: ./masanga.out: Permission denied

Ho pensato che il formato .out nn fosse supportato da mac os, quindi ho deciso di ricompilare da terminale con gcc....

Codice:
Undefined symbols:
  "std::basic_ostream<char, std::char_traits<char> >& std:[IMG]http://media.pokemoncentral.it/forum/mozz/default_WUWdc.gif[/IMG]perator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from:
      _main in ccBJYTLk.o
      _main in ccBJYTLk.o
      _main in ccBJYTLk.o
  "std::ios_base::Init::Init()", referenced from:
      __static_initialization_and_destruction_0(int, int)in ccBJYTLk.o
  "std::basic_istream<char, std::char_traits<char> >:[IMG]http://media.pokemoncentral.it/forum/mozz/default_WUWdc.gif[/IMG]perator>>(int&)", referenced from:
      _main in ccBJYTLk.o
      _main in ccBJYTLk.o
      _main in ccBJYTLk.o
  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size() const", referenced from:
      std::__verify_grouping(char const*, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccBJYTLk.o
  "std::basic_string<char, std::char_traits<char>, std::allocator<char> >:[IMG]http://media.pokemoncentral.it/forum/mozz/default_WUWdc.gif[/IMG]perator[](unsigned long) const", referenced from:
      std::__verify_grouping(char const*, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccBJYTLk.o
      std::__verify_grouping(char const*, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccBJYTLk.o
      std::__verify_grouping(char const*, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccBJYTLk.o
  "___gxx_personality_v0", referenced from:
      std::__verify_grouping(char const*, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccBJYTLk.o
      ___tcf_0 in ccBJYTLk.o
      _main in ccBJYTLk.o
      unsigned long const& std::min<unsigned long>(unsigned long const&, unsigned long const&)in ccBJYTLk.o
      __static_initialization_and_destruction_0(int, int)in ccBJYTLk.o
      global constructors keyed to mainin ccBJYTLk.o
      CIE in ccBJYTLk.o
  "std::ios_base::Init::~Init()", referenced from:
      ___tcf_0 in ccBJYTLk.o
  "std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)", referenced from:
      _main in ccBJYTLk.o
  "std::cin", referenced from:
      _main in ccBJYTLk.o
  "std::basic_ostream<char, std::char_traits<char> >:[IMG]http://media.pokemoncentral.it/forum/mozz/default_WUWdc.gif[/IMG]perator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))", referenced from:
      _main in ccBJYTLk.o
  "std::basic_ostream<char, std::char_traits<char> >:[IMG]http://media.pokemoncentral.it/forum/mozz/default_WUWdc.gif[/IMG]perator<<(int)", referenced from:
      _main in ccBJYTLk.o
      _main in ccBJYTLk.o
      _main in ccBJYTLk.o
  "std::cout", referenced from:
      _main in ccBJYTLk.o
      _main in ccBJYTLk.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
wtf? non ci sono errori nel programma...all'uni me lo compila subito...il programma è questo

Codice:
#include<iostream>
using namespace std;

main()
{
  int x,y,z;
  int primo, secondo, terzo;
  cout<<"dammi 3 interi";
  cin >> x >> y >> z;
  if(x <=x and y <=z)
    {
     primo=x;
     secondo=y;
     terzo=z;
    }
    if(x <=z and z <=y)
    {
      primo=x;
      secondo=z;
      terzo=y;
    }
    if(y <=x and x <=z)
    {
      primo=y;
      secondo=x;
      terzo=z;
    }
    if(y <=z and z <=x)
    {
      primo=y;
      secondo=z;
      terzo=x;
    }
    if(z <=x and x <=y)
    {
      primo=z;
      secondo=x;
      terzo=y;
    }
    if(z <=y and y <=x)
    {
      primo=z;
      secondo=y;
      terzo=x;
    }
   
  cout<< primo << " " <<secondo << " " << terzo << endl;
}
 

Gkx

Admin
hai installato tutti i developer tools?

un binario compilato per linux non funziona (per ovvi motivi) su mac, devi ricompilarlo comunque!

inoltre "permission denied" è un errore di chmod, il file non ha i permessi per l'esecuzione, dovresti fare a prescindere "chmod +x masanga.out"
 
Ultima modifica di un moderatore:

Mens

Amministratore di condominio
Non c'entra di sicuro con i tuoi errori, ma vedo un x<=x nel primo if. Ribadisco la risposta di Gkx per il chmod. E .out non indica un formato specifico (come .exe), è solo una convenzione del compilatore.

Che comando hai usato per lanciare il compilatore? Quello giusto dovrebbe essere g++ nomefile, non gcc nomefile.
 

Razile

Rappresentante di classe
Menshay ha scritto:
Non c'entra di sicuro con i tuoi errori, ma vedo un x<=x nel primo if. Ribadisco la risposta di Gkx per il chmod. E .out non indica un formato specifico (come .exe), è solo una convenzione del compilatore.

Che comando hai usato per lanciare il compilatore? Quello giusto dovrebbe essere g++ nomefile, non gcc nomefile.
Ti ano, adesso mi compila :0

Ma quindi se il mio prof deve eseguire i programm isotto linux mi tocca compilare sotto linux? e cmq dopo aver fatto "chmod +x masanga.out" e provo ad avviare l'applicazione viene-bash: ./masanga.out: cannot execute binary file, questo perche è stato compilato su linux, vero?
 

Razile

Rappresentante di classe
Che palle....su mac esiste un client ssh con gui? Tranne RBrowser che nn riesco a scaricarlo?
 

Gkx

Admin
mah, se intendi solo per trasferimento file va bene anche quello integrato del mac ("connetti al server" da uno dei menu)
 

Razile

Rappresentante di classe
ok sono dentro e sono riuscito anche a creare una cartella :0, ma come faccio a trasferire file? e se lancio il comando g++ aaa.aaa quando sono in ssh su linux, è linux che lo compila, vero?
 

Gkx

Admin
per trasferire file basta trascinarceli dentro dalle altre cartelle direttamente dal finder

per l'altra domanda la risposta è sì
 

Razile

Rappresentante di classe
spe spe...io sto facendo da terminale...se per esempio trascino un file mi viene solo

xxxx@dip191:~$ /Users/Marco/Desktop/sms-received6.caf

-bash: /Users/Marco/Desktop/sms-received6.caf: No such file or directory...

e se cerco di copiarlo mi crea un file di testo con scritto il nome del file
default_WUWdc.gif
 

Razile

Rappresentante di classe
ah!ma ssh dal finder lol...io ero da terminale :0

EDIT:dal finder nn mi accede...se inserisco ssh.studenti.math.unipd.it mi aggiunge davanti automaticamente afp://...è giusto?
 
Ultima modifica di un moderatore:
Top Bottom