Newsgroup: it.comp.macintosh
Titolo: Programmazione C su MAC

Possiedo un minimac...
All'università utilizzo un normale pc con linux...
Devo fare un programma in linguaggio c...
Mi hanno detto che posso normalmente utilizzare il mac per le 
compilazioni c perché avendo kernel Unix posso effettuare le stesse 
chiamate di sistema...
Di fatto con il comando gcc -Wall -pedantic - nomeprogramma.c -o 
nomeeseguibile
riesco a compilare normlmente....
Poi per eseguire nomeeseguibile devo necessariamente digitare il path 
radice e non ho voglia di farlo tutte le volte...
tipo "./nomeeseguibile"...
1) perchè????
2) perchè il mio programma che normalmente compila sotto linux non vuole 
saperne di compilare in ambiente Unix (MAC)?????????
Porca M.
Se qualcuno di voi gentilmente mi aiuta....
bye
yc

 
 
Beh, evidententemente non hai usato solo la libreria standard del C...

 > saperne di compilare in ambiente Unix (MAC)?????????
avere un po' di output del comilatore con l'errore potrebbe aiutare
TREMALNAIK

 saperne di compilare in ambiente Unix (MAC)?????????
Immagino che la causa sia da ricercare in errori da te commessi. Per
sapere quali ti rimando a sopra.
-- 
non vincono, non vinceranno, non hanno domani
la forza è nel puntello impugnato da oneste fortissime mani

 accedere al mac con un account utente non amministratore
Beh, uno se lo puà anche aggiungere nel path a mano. Io comunque
preferisco evitare. Spesso ho versioni modificate di utilities standard
e non voglio che "interferiscano". :)


 -bash: rubserver: command not found

 > -bash: .rubserver: command not found
Come sopra.


>_rectovoce
dove sono definite? nella lib di cui sopra?
fai un
gcc -Wall -pedantic -o rubclient.o -c rubclient.c
gcc -Wall -pedantic -o rubclient rubclient.o librub.o
[1] ok, non è quello che hai detto, è una generalizzazione. quindi prima 
di dare la colpa agli altri (osx, gcc, o chi per lui) accertarsi di far 
la cosa corretta.
-- 
()_() | Ho un cervello, non sono analfabeta e non sento    | +----
(o.o) | l'irrefrenabile bisogno di deturpare la mia lingua | +---+
'm m' | madre con "K" ed abbreviazioni...                  |  O  |
(___) |                        K.K.K (Kill the "Key" Klan) |
             raffaele punto salmaso at gmail punto com


Io non sto dando la colpa a osx... sono ben consapevole di non capirci 
abbastanza... ma in qualche modo voglio imparare quindi chiedo a che più 
di me ci capisce... "osx merda" nn l'ho proprio mai detto...
Sono passato al mac da un paio di mesi e penso che queste difficoltà 
possano essere giustificabili (forse)...
Su GNU/Linux il programma non solo compila ma gira anche... Per 
l'appunto però, qualche warning me la visualizza anche il compilatore di 
Linux...
Cmq qualche cosa che mi avete detto l'ho capita... e vi ringrazio per il 
tempo concessomi...
Per compilare e sperimentare il mio programma all'uni la prof ha creato 
un makefile che si occupa della compilazione di tutti i file... sotto 
GNU/linux mi lascia passare il test ma sotto osx dice così:
mo11Y:~/Desktop/LPS settembre/prorub lucaantognoni$ ls
Makefile        librub.c        librubs.h       relProrub.pdf 
rubserver.c~    test3
bin             librub.c~       librubs.o       rub.h 
rubserver.o     tmp
fsignori-f3.tar librub.h        output          rubclient.c     sysmacro.h
funzioni.pdf    librub.o        output3         rubclient.c~    test-finale
gruppo-check.pl
 librubs.c       prorub.dat      rubclient.o     test1
gruppo.txt      librubs.c~      readme-3        rubserver.c     test2
mo11Y:~/Desktop/LPS settembre/prorub lucaantognoni$ make test-finale
gcc   rubserver.o librub.o librubs.o   -o rubserver
ld: rubserver.o bad magic number (not a Mach-O file)
ld: librub.o bad magic number (not a Mach-O file)
ld: librubs.o bad magic number (not a Mach-O file)
make: *** [rubserver] Error 1
Magari essendo scritto per Linux ha bisogno di alcune modifiche?? Vi 
riporto il codice del makefile:
CC = gcc
CFLAGS= -Wall -pedantic
SUBJECT1= "Consegna frammento 1"
SUBJECT2= "Consegna frammento 2"
SUBJECT3= "Consegna Progetto Finale"
.PHONY: test1 consegna1 clean cleanall
.PHONY: test2 consegna2 test-finale consegna-finale test-rubserver 
test-rubclient
test-frag1: librub.o
test-frag2: librub.o librubs.o
rubserver: librub.o librubs.o
rubclient: librub.o librubs.o
rubserver.o: librub.h librubs.h
rubclient.o: librub.h librubs.h
librub.o: librub.h
librubs.o: librub.h librubs.h
test1: test-frag1
	cp test1/prorub.dat $(HOME)/.prorub.dat
	chmod u+rw $(HOME)/.prorub.dat
	./test-frag1 | tr " " "." > ./output
	diff $(HOME)/.prorub.dat test1/prorub.dat
	diff ./output test1/output.check
	@echo -e "\a\n*** TEST SUPERATO! ***\n"
consegna1:
	make test1
	./
gruppo-check.pl
 < gruppo.txt
	tar -cvf $(USER)-f1.tar ./gruppo.txt ./librub.c
	mpack -s $(SUBJECT1) ./$(USER)-f1.tar 
sus...@di.unipi.it
	@echo -e "\a\n*** PROGETTO CONSEGNATO! ***\n"
test2: test-frag2
	cp test1/prorub.dat $(HOME)/.prorub.dat
	chmod u+rw $(HOME)/.prorub.dat
	./test-frag2 > ./output
	diff $(HOME)/.prorub.dat test1/prorub.dat
	diff ./output test2/output.check
	@echo -e "\a\n*** TEST SUPERATO!(F2) ***\n"
consegna2:
	make test2
	./
gruppo-check.pl
 < gruppo.txt
	tar -cvf $(USER)-f2.tar ./gruppo.txt ./librubs.c
	mpack -s $(SUBJECT2) ./$(USER)-f2.tar 
sus...@di.unipi.it
	@echo -e "\a\n*** PROGETTO CONSEGNATO!(F2) ***\n"
test-rubserver: rubserver
	@echo "Sto testando il server....."
	-rm rubserver
	make rubserver
	-killall rubclient
	-killall rubserver
	cp bin/rubclient .
	chmod 755 rubclient
	cp test3/prorub.dat $(HOME)/.prorub.dat
	chmod u+rw $(HOME)/.prorub.dat
	./test-finale > ./output3
	@echo "attesa terminazione dei figli... "
	wait
	cat $(HOME)/.prorub.dat | tr " " "." > ~/.prorub.dat.finale
	diff $(HOME)/.prorub.dat.finale test3/prorub.dat.finale
	diff ./output3 test3/out3.check
	@echo -e "\a\n*** TEST SUPERATO!(rubserver) ***\n"
test-rubclient: rubclient
	@echo "Sto testando il client..."
	-rm rubclient
	make rubclient
	-killall rubserver
	-killall rubclient
	cp bin/rubserver .
	chmod 755 rubserver
	cp test3/prorub.dat $(HOME)/.prorub.dat
	chmod u+rw $(HOME)/.prorub.dat
	./test-finale  > ./output3
	@echo "attesa terminazione dei figli... "
	wait
	cat $(HOME)/.prorub.dat | tr " " "." > ~/.prorub.dat.finale
	diff $(HOME)/.prorub.dat.finale test3/prorub.dat.finale
	diff ./output3 test3/out3.check
	@echo -e "\a\n*** TEST SUPERATO!(rubclient) ***\n"
test-finale: rubserver rubclient
	@echo "Sto testando il client e il server...."
	-rm rubserver
	-rm rubclient
	make rubserver
	make rubclient
	cp test3/prorub.dat $(HOME)/.prorub.dat
	chmod u+rw $(HOME)/.prorub.dat
	./test-finale > ./output3
	@echo "attesa terminazione dei figli... "
	wait
	cat $(HOME)/.prorub.dat | tr " " "." > ~/.prorub.dat.finale
	diff $(HOME)/.prorub.dat.finale test3/prorub.dat.finale
	diff ./output3 test3/out3.check
	@echo -e "\a\n*** TEST SUPERATO!(3) ***\n"
consegna-finale:
	make test-finale
	./
gruppo-check.pl
 < gruppo.txt
	tar -cvf $(USER)-f3.tar ./gruppo.txt ./*.c ./*.h *.pdf
	mpack -s $(SUBJECT3) ./$(USER)-f3.tar 
ci...@lippa.it
	@echo -e "\a\n*** PROGETTO CONSEGNATO!(F3) ***\n"
clean:
	-rm -f *~ core
cleanall:	
	-rm -f *.o *~ core
________________
Prima o poi ci riuscirò perche non ho affatto intenzione di rinunciare a 
questa favola di macchina che ho da poco scoperto...
Ancora grazie...
yc