Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Dopo oltre 4 anni si rinnova la serie Sony Alpha 7 con la quinta generazione, che porta in dote veramente tante novità a partire dai 30fps e dal nuovo sensore partially stacked da 33Mpixel. L'abbiamo provata per un breve periodo, ecco come è andata dopo averla messa alle strette.
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme e Aston Martin Aramco F1 Team si sono (ri)unite dando alla vita un flagship con chip Snapdragon 8 Elite Gen 5 e design esclusivo ispirato alle monoposto di Formula 1. La Dream Edition introduce la nuova colorazione Lime Essence abbinata al tradizionale Aston Martin Racing Green, decorazioni intercambiabili personalizzate e una confezione a tema F1, intorno a uno smartphone dall'ottima dotazione tecnica con batteria da 7000mAh ricaricabile a 120W e isola fotografica intercambiabile
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
Abbiamo partecipato all'OVHcloud Summit 2025, conferenza annuale in cui l'azienda francese presenta le sue ultime novità. Abbiamo parlato di cloud pubblico e privato, d'intelligenza artificiale, di computer quantistici e di sovranità. Che forse, però, dovremmo chiamare solo "sicurezza"
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-06-2010, 19:40   #1
Kodert89
Junior Member
 
Iscritto dal: Mar 2008
Messaggi: 22
[C] Help cannot find -lmsg

Salve ,
sto facendo un progetto per l'università e ho scritto del codice in c , ci hanno dato un makefile dove aggiungere solo le parte necessarie a far compilare in nostro progetto ma lanciando il make mi da un errore:

Codice:
gcc -o msgserv msgserv.o comsock.o genList.o genHash.o gthread.o -L ../lib -lmsg -lpthread
/usr/bin/ld: cannot find -lmsg
collect2: ld returned 1 exit status
make: *** [msgserv] Error 1
Ora l'errore pare essere il -lmsg l'opzione del gcc.
Purtroppo non ho la minima idea di che cosa sia quell'opzione.
Naturalmente sto facendo girare tutto su linux (debian squeeze 64bit).

Se qualcuno potesse illuminarmi su quale sia il problema , ne sarei grato.
Kodert89 è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2010, 08:30   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Vuole linkare una fantomatica libreria libmsg.so, che sinceramente non trovo tra le librerie presenti nei repository. Probabilmente viene creata dal tuo progetto.
Posta il makefile.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 30-06-2010, 09:22   #3
Kodert89
Junior Member
 
Iscritto dal: Mar 2008
Messaggi: 22
Non so come ma si è risolto da solo , ho provato levando l'opzione e mi è partito , qundo la ho rimessa non ha dato problemi .
Ma praticamente con -lmsg andrebbe a cercare la libreria msg ? come funzionerebbe il comando , tanto per capire.
Kodert89 è offline   Rispondi citando il messaggio o parte di esso
Old 30-06-2010, 09:26   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
-lnome (-l seguito dal nome della libreria) va a cercare di caricare la libreria (statica o dinamica, dipende dalle opzioni passate) che ha come nome libnome.a (statica) o libnome.so (dinamica).
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 30-06-2010, 14:37   #5
Kodert89
Junior Member
 
Iscritto dal: Mar 2008
Messaggi: 22
Quindi se non la trova nella cartella che gli passo io la va a cercare in /usr/bin/ld e non trovandola mi ritorna errore , quindi il problema è nel codice e non nel fatto che mi manca una libreria nel sistema.
Grazie dell'aiuto!
Kodert89 è offline   Rispondi citando il messaggio o parte di esso
Old 30-06-2010, 15:31   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da Kodert89 Guarda i messaggi
quindi il problema è nel codice e non nel fatto che mi manca una libreria nel sistema.
Esatto, sempre che quella libreria venga creata dal codice, ed io questo non lo so perché non ho visto il Makefile.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 01-07-2010, 09:53   #7
Kodert89
Junior Member
 
Iscritto dal: Mar 2008
Messaggi: 22
Premetto che è da poco che metto mano su un makefile e quindi ho poca esperienza .
Comunque , dove c'è scritto da completare lo ho aggiunto io , apparte nel primo frammento che non dovevo aggiungere nulla perchè usavo solo i suoi file, se ti servono altre info riguardo ai file a cui fa riferimento dimmelo perchè ci metterei una vita a spiegarteli tutti , comunque il problema è solo lanciando il test3.. perchè gli server msgserv e msgcli che usano quella libreria.
Codice:
#################################################
#
# Makefile progetto lso 2010
# (fram 1)(fram 2)(fram 3)
#################################################

# ***** DA COMPLETARE ******  con i file da consegnare
# primo frammento
FILE_DA_CONSEGNARE1=./genList.c ./genHash.c 

# secondo frammento
FILE_DA_CONSEGNARE2=./logpro 

# terzo frammento
FILE_DA_CONSEGNARE3=./msgserv.c ./msgcli.c ./Makefile ./logpro ./genList.c ./genHash.c ./genHash.h ./comsock.c 


# Compiler flags
CFLAGS = -Wall -pedantic -g 
# aggiungere -lgcov o -fprofile-arcs al linking

# Compilatore
CC = gcc


# Librerie
LIBDIR = ../lib
LIBS = -L $(LIBDIR)

# Nome libreria
LIBNAME = libmsg.a

# Lista degli object files (** DA COMPLETARE ***)
OBJS = genList.o genHash.o comsock.o

# nomi eseguibili test primo frammento
exe1 = msg_test1
exe2 = msg_test2


# phony targets
.PHONY: clean lib test11 test12 docu consegna1
.PHONY: test21 consegna2
.PHONY: test31 test32 test33 consegna3


# creazione libreria
lib:  $(OBJS)
	-rm  -f $(LIBDIR)/$(LIBNAME)
	ar -r $(LIBNAME) $(OBJS)
	cp $(LIBNAME) $(LIBDIR)

# eseguibile di test 1 (primo frammento)
$(exe1): genList.o test-genList.o
	$(CC) -o $@ $^ 

# eseguibile di test 2 (primo frammento)
$(exe2): $(OBJS) test-genHash.o
	$(CC) -o $@ $^ 

# dipendenze oggetto main di test 11
test-genList.o: test-genList.c genList.h
	$(CC) $(CFLAGS) -c $<

# dipendenze oggetto main di test 12
test-genHash.o: test-genHash.c genHash.h genList.h
	$(CC) $(CFLAGS) -c $<

# make rule per gli altri .o del primo frammento (***DA COMPLETARE***)





msgserv: msgserv.o comsock.o genHash.o genList.o 
	$(CC) -o $@ $^ $(LIBS) -lmsg -lpthread

msgcli: msgcli.o comsock.o
	$(CC) -o $@ $^ $(LIBS) -lmsg -lpthread

# make rule per i .o del terzo frammento (***DA COMPLETARE***)
msgserv.o: msgserv.c genHash.h genList.h comsock.h
	$(CC) $(CFLAGS) -c $<

msgcli.o: msgcli.c genHash.h genList.h 
	$(CC) $(CFLAGS) -c $<







########### NON MODIFICARE DA QUA IN POI ################
# genera la documentazione con doxygen
docu: ../doc/Doxyfile
	make -C ../doc

#ripulisce
clean:
	-rm -f *.o *.~

# primo test primo frammento
test11: 
	make clean
	make $(exe1)
	echo MALLOC_TRACE e\' $(MALLOC_TRACE)
	@echo MALLOC_TRACE deve essere settata a \"./.mtrace\"
	-rm -f ./.mtrace
	./$(exe1)
	mtrace ./$(exe1) ./.mtrace
	@echo -e "\a\n\t\t *** Test 1-1 superato! ***\n"

# secondo test primo frammento
test12: 
	make clean
	make $(exe2)
	echo MALLOC_TRACE e\' $(MALLOC_TRACE)
	@echo MALLOC_TRACE deve essere settata a \"./.mtrace\"
	-rm -f ./.mtrace
	./$(exe2)
	mtrace ./$(exe2) ./.mtrace
	@echo -e "\a\n\t\t *** Test 1-2 superato! ***\n"

# test secondo frammento
test21: 
	cp DATA/logtest.* .            
	chmod 644 ./logtest.*       
	./logpro ./logtest.dat > ./outtest    
	diff ./outtest ./logtest.check  
	@echo -e "\a\n\t\t *** Test 2-1 superato! ***\n"

# primo test terzo frammento 
test31: msgserv msgcli lib
	-killall -w msgserv  
	-killall -w msgcli   
	cp DATA/userlist .   
	cp DATA/userlist2 .  
	cp DATA/out31.check . 
	chmod 644 userlist userlist2 out31.check
	-rm -fr tmp/   
	-mkdir tmp 
	./testparse 2>.err 
	diff ./out31 ./out31.check 
	@echo -e "\a\n\t\t *** Test finale 3-1 superato! ***\n" 

# secondo test terzo frammento 
test32: msgserv msgcli lib  
	-killall -w msgserv  
	-killall -w msgcli   
	cp DATA/userlist .   
	cp DATA/outcli?.check . 
	chmod 644 ./userlist 
	chmod 644 ./outcli?.check
	-rm -fr tmp/          
	-mkdir tmp 
	./testfunz 
	diff ./outcli1 ./outcli1.check 
	diff ./outcli2 ./outcli2.check 
	diff ./outcli3 ./outcli3.check 
	@echo -e "\a\n\t\t *** Test finale 3-2 superato! ***\n" 

# terzo test terzo frammento 
test33: msgserv msgcli lib   
	-killall -w msgserv  
	-killall -w msgcli   
	cp DATA/userlist .   
	cp DATA/logsort.check .   
	chmod 644 userlist  
	chmod 644 logsort.check
	-rm -fr tmp/           
	-mkdir tmp 
	./testpar  
	@echo -e "\a\n\t\t *** Test finale 3-3 superato! ***\n" 

# target di consegna primo frammento
SUBJECT1="lso10: consegna primo frammento"
consegna1: 
	make test11
	make test12
	./gruppo-check.pl < gruppo.txt
	tar -cvf $(USER)-f1.tar ./gruppo.txt ./Makefile $(FILE_DA_CONSEGNARE1)

	@echo -e "\a\n\t\t *** Frammento 1 consegnato  ***\n"

# target di consegna secondo frammento
SUBJECT2="lso10: consegna secondo frammento"
consegna2: 
	make test21
	./gruppo-check.pl < gruppo.txt
	tar -cvf $(USER)-f2.tar ./gruppo.txt $(FILE_DA_CONSEGNARE2)
	@echo -e "\a\n\t\t *** Frammento 2 consegnato  ***\n"

# target di consegna terzo frammento
SUBJECT3="lso10: consegna terzo frammento"
consegna3: 
	make test11
	make test12
	make test21
	make test31
	make test32
	make test33
	./gruppo-check.pl < gruppo.txt
	tar -cvf $(USER)-f3.tar ./gruppo.txt $(FILE_DA_CONSEGNARE3)
	@echo -e "\a\n\t\t *** Progetto finale consegnato  ***\n"

Ultima modifica di Kodert89 : 01-07-2010 alle 09:55.
Kodert89 è offline   Rispondi citando il messaggio o parte di esso
Old 01-07-2010, 10:00   #8
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Manca chiaramente la generazione della libreria
LIBNAME = libmsg.a
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 01-07-2010, 20:28   #9
Kodert89
Junior Member
 
Iscritto dal: Mar 2008
Messaggi: 22
Scusa la domanda forse sciocca ma come faccio a dirgli di generarla?

Questo
Codice:
lib:  $(OBJS)
	-rm  -f $(LIBDIR)/$(LIBNAME)
	ar -r $(LIBNAME) $(OBJS)
	cp $(LIBNAME) $(LIBDIR)
non la genera ? lib viene richiamato dopo msgserv e msgcli , forse deve essere richiamato prima senno non trova la libreria.

Codice:
test31: msgserv msgcli lib
	-killall -w msgserv  
	-killall -w msgcli   
	cp DATA/userlist .   
	cp DATA/userlist2 .  
	cp DATA/out31.check . 
	chmod 644 userlist userlist2 out31.check
	-rm -fr tmp/   
	-mkdir tmp 
	./testparse 2>.err 
	diff ./out31 ./out31.check 
	@echo -e "\a\n\t\t *** Test finale 3-1 superato! ***\n"
Kodert89 è offline   Rispondi citando il messaggio o parte di esso
Old 01-07-2010, 20:36   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Sì, viene creata lì, ma non mi sembra ci sia la dipendenza lib nelle regole in cui si usa -lmsg
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 02-07-2010, 10:28   #11
Kodert89
Junior Member
 
Iscritto dal: Mar 2008
Messaggi: 22
Cioè ti puoi spiegare meglio ?
Non credo di aver capito .
Non so se è importante ma prima nel msgservr cera una bara così:
Codice:
msgserv: msgserv.o comsock.o /
	$(CC) -o $@ $^ $(LIBS) -lmsg -lpthread
Siccome non mi girava l'ho tolta , anche perchè non so cosa significa una barra messa li.
Comunque può darsi che quello che manca celo devo inserire io .
Kodert89 è offline   Rispondi citando il messaggio o parte di esso
Old 02-07-2010, 10:45   #12
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
lib è una regola del makefile... Ci siamo ?

msgserv è un'altra regola. Se una regola dipende da un'altra solitamente si fa in modo di eseguire quella regola prima della regola dipendente.

msgserv: msgserv.o comsock.o

Quelle in grassetto sono dipendenze, ma come vedi non c'è la dipendenza lib Che ovviamente ci va messa.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 03-07-2010, 11:29   #13
Kodert89
Junior Member
 
Iscritto dal: Mar 2008
Messaggi: 22
Quindi se metto

msgserv: msgserv.o comsock.o lib

non dovrebbe più darmi problemi.
Ma la
\
che cosa significa se messa nella riga delle dipendenze (nell'altro posto avevo sbagliato barra), mi dava problemi nel compilare dicendomi che mi mancavano delle dipendenze .

E un altra cosa perchè scrivere che msgserv dipende da msgserv.o e comsock.o
quando nelle dipendenza di msgserv.o c'è già comsock.h .
Se metto

msgserv: msgserv.o comsock.o

allora devo mettere anche
genList.o genHash.o
Kodert89 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro DJI Neo 2 in prova: il drone da 160 grammi guada...
I 18enni di oggi non fanno più la...
Super offerte Apple: iPhone 16e a 529€ e...
Torres EVT arriva in Italia con listino ...
Microsoft Flight Simulator 2024 provato ...
Offerte Amazon ancora attive: Kindle, Fi...
Caldaie a gas, colpo di scena: l'UE valu...
Altro che 'scandalo De Martino', in Core...
Meta leggerà i tuoi messaggi dal ...
OpenAI entra in Thrive Holdings: nasce u...
Paramount: nuovi film di Sonic e Tartaru...
EU AI Cloud, il cloud sovrano di SAP per...
God of War: la serie TV entra in pre-pro...
Stampante HP in super offerta: la multif...
Maxi offerta su Roborock S8 MaxV Ultra: ...
Ron Gilbert, il creatore di Monkey Islan...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:47.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v