Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
ASUS Expertbook PM3: il notebook robusto per le aziende
ASUS Expertbook PM3: il notebook robusto per le aziende
Pensato per le necessità del pubblico d'azienda, ASUS Expertbook PM3 abbina uno chassis particolrmente robusto ad un pannello da 16 pollici di diagonale che avantaggia la produttività personale. Sotto la scocca troviamo un processore AMD Ryzen AI 7 350, che grazie alla certificazione Copilot+ PC permette di sfruttare al meglio l'accelerazione degli ambiti di intelligenza artificiale
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Abbiamo provato per diversi giorni una new entry del mercato italiano, la Gowow Ori, una moto elettrica da off-road, omologata anche per la strada, che sfrutta una pendrive USB per cambiare radicalmente le sue prestazioni
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


Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design   Recensione OnePlus 15: potenza da vendere e batt...
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media AMD Ryzen 5 7500X3D: la nuova CPU da gaming con ...
Obbligati ad acquistare una scheda madre...
GTA VI su PC? La data non c'è, ma...
Monopattini elettrici, a un anno dal dec...
Tesla Robotaxi, autista di sicurezza si ...
Samsung Galaxy S26: svelate le combinazi...
Microsoft Ignite: arriva Edge for Busine...
OPPO e Lamine Yamal uniscono sport e tec...
Microsoft, NVIDIA e Anthropic siglano un...
SpaceX potrebbe comunicare alla NASA rit...
Scoperte cavità sotterranee scava...
OnePlus anticipa l'arrivo di due nuovi p...
DJI lancia Osmo Action 6: la prima actio...
NASA: conferenza stampa sulla cometa int...
Ex CEO di TSMC passa a Intel: aperta un'...
Gigabyte X870E Aorus Elite X3D, una moth...
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: 21:18.


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