|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2005
Città: <-|-|-*|*-|-|->
Messaggi: 347
|
Makefile - problemi di linking
Dato il seguente Makefile:
Codice:
prova: main.o SequenceTag.o MsmSpectra.o msmFile.o g++ -o prova main.o SequenceTag.o MsmSpectra.o msmFile.o main.o: main.cpp MsmSpectra.h msmFile.h g++ -c main.cpp SequenceTag.o: SequenceTag.cpp SequenceTag.h g++ -c SequenceTag.cpp MsmSpectra.o: MsmSpectra.cpp MsmSpectra.h SequenceTag.h g++ -c MsmSpectra.cpp SequenceTag.o msmFile.o: msmFile.cpp msmFile.h g++ -c msmFile.cpp Mi da il sequente errore: g++ -c main.cpp g++ -c MsmSpectra.cpp SequenceTag.o g++: SequenceTag.o: linker input file unused because linking not done g++ -o prova main.o SequenceTag.o MsmSpectra.o msmFile.o Cosa sto sbagliando? Grazie |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2005
Città: <-|-|-*|*-|-|->
Messaggi: 347
|
Ok.. l'ho tolto..
ma ora se modifico il file SequenceTag.h dando un risultato in output diverso non mi vede le modifiche a meno che non creo io manualmente l'oggetto di SequenceTag.cpp. Cosa sbaglio? grazie |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Una modifica a SequenceTag.h implica una ricompilazione di SequenceTag.o e MsmSpectra.o, che a loro volta implicano un nuovo link di "prova". Non c'è nulla di sbagliato ad occhio.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Hai tolto solo il .o? Il .h è necesssario se c'è dipendenza; la regola deve apparire così:
Codice:
MsmSpectra.o: MsmSpectra.cpp MsmSpectra.h SequenceTag.h g++ -c MsmSpectra.cpp
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2005
Città: <-|-|-*|*-|-|->
Messaggi: 347
|
Si certamente, ho tolto solo il .o.
Il Makefile è il seguente: Codice:
prova: main.o SequenceTag.o MsmSpectra.o msmFile.o g++ -o prova main.o SequenceTag.o MsmSpectra.o msmFile.o main.o: main.cpp MsmSpectra.h msmFile.h g++ -c main.cpp SequenceTag.o: SequenceTag.cpp SequenceTag.h g++ -c SequenceTag.cpp MsmSpectra.o: MsmSpectra.cpp MsmSpectra.h SequenceTag.h g++ -c MsmSpectra.cpp msmFile.o: msmFile.cpp msmFile.h g++ -c msmFile.cpp g++ -c SequenceTag.cpp g++ -c MsmSpectra.cpp g++ -o prova main.o SequenceTag.o MsmSpectra.o msmFile.o Ma una volta che eseguo il programma ./prova l'output non varia. Non capisco perchè! |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Qualche file di codice per riprodurre il problema? Vedrai che l'inghippo c'è.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2005
Città: <-|-|-*|*-|-|->
Messaggi: 347
|
E' strano, ho provato a modificare il main, cambiando una cosa irrilevante, e poi ho dato il make e ora mi vede le modifiche.
Quindi i fatti sono: se modifico SequenceTag.h e basta la modifica non appare. Se invece modifico SequenceTag.h e main.cpp la modifica appare. Ti posso dire i file che includono: main.cpp Codice:
#include <iostream> #include <stdio.h> #include <cstdlib> #include <stdlib.h> #include <string.h> #include <fstream>//library used for the file stream operation #include <sstream> #include <iomanip> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include "MsmSpectra.h" #include "msmFile.h" Codice:
#include <iostream> Codice:
#include <iostream> #include "SequenceTag.h" Codice:
#include <iostream> #include "MsmSpectra.h" Codice:
#include <iostream> #include "SequenceTag.h" Codice:
#include <iostream> #include <stdio.h> #include <cstdlib> #include <stdlib.h> #include <string> #include <fstream>//library used for the file stream operation #include <sstream> #include <iomanip> #include "MsmSpectra.h" #include "msmFile.h" nulla |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Mi dispiace, ma se non puoi procurarmi del codice da poter compilare e testare in locale, non posso dirti dove stai sbagliando.
Non deve essere il codice su cui stai lavorando, ma qualcosa che consenta di verificare il problema in maniera riproducibile.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:58.



















