View Full Version : [C] ricompilare C da HP-UX a Linux
chicco19811
14-04-2017, 13:24
devo ricompilare del codice C su una macchina con le seguenti caratteristiche:
Macchina
Red Hat Enterprise Linux Server release 6.7 (Santiago)
kernel-2.6.32-504.el6.x86_64
kernel-2.6.32-573.3.1.el6.x86_64
Compilatore
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-16)
prima ero su HP-UX
nel makefile trovo comandi tipo
CFLAGS = -g +DD64 +z -c -D_HPUX_SOURCE
LDFLAGS = +DD64
che non funzionano
li ho sostituiti e la compilazione avviene ma poi l'eseguibile da un core
qualcuno ha idee a riguardo?
un tutorial che spieghi bene come passare da uno script (intendo nel makefile) all'altro?
Grazie
chicco19811
17-04-2017, 22:51
non capisco quali tutorial ti aspetti, non c'e' una regola univoca.
quelle opzioni sono delle define, devi vedere nel codice cosa controllano e provvedere a definire le opportune define per la tua piattaforma.
beh per esempio a +z corrisponde -fPIC su Linux, e l'ho visto guardando delle discussioni su altri forum (stranieri)
grazie
chicco19811
17-04-2017, 23:03
se fosse semplice ricompilare software non banali tra una piattaforma e l'altra il 50% dei problemi dell'informatica sarebbero risolti :D
però i tempi sono stretti, ecco perché ho cercato delle soluzioni veloci ma penso che sarà da fare con calma, imparando e sbattendo la testa
grazie
chicco19811
18-04-2017, 10:05
il core che ottengo, se provo a fare il backtrace, mi dice poco
Program received signal SIGSEGV, Segmentation fault.
0x0000000000000001 in ?? ()
(gdb) bt
#0 0x0000000000000001 in ?? ()
#1 0x00007fffffffe38d in ?? ()
#2 0x0000000000000000 in ?? ()
ricordo che di solito dava una serie di frame analizzabili
se anche metto un breakpoint sul main, parte e mi da l'errore
chicco19811
18-04-2017, 13:36
non ci sono i simboli di debug. Quando compili, assicurati che ci sia l'opzione -g nella riga di comando/ tra i CFLAGS
è presente quella opzione
"CFLAGS= -g -fPIC \"
chicco19811
18-04-2017, 14:35
Prova ad aggiungere anche -g3 (anche se dovrebbe essere superfluo).
ho provato pure questa (e altre) ma nulla
se creo un core mio con un semplice Helloworld, si vede il bt (per quanto minimale sia)
grazie
chicco19811
18-04-2017, 15:30
sì
chicco19811
18-04-2017, 16:58
ho provato pure questa (e altre) ma nulla
se creo un core mio con un semplice Helloworld, si vede il bt (per quanto minimale sia)
grazie
penso che non si veda quando l'errore è nelle shared libraries, come se GDB non avesse info sulle stesse, ho trovato casi analoghi in rete (penso eh :D )
chicco19811
18-04-2017, 21:23
piu' di cosi' non riesco ad aiutarti, avresti bisogno di qualcuno piu' esperto con lo sviluppo di applicazioni sotto linux..
grazie mille, sei stato gentilissimo, quando e se risolvo, ti faccio sapere
chicco19811
21-04-2017, 08:49
DFLAGS = -shared -L$(MQ_HOME)/lib64 -lmqic_r $(SQL_LD_DIR2)libsql11.a $(SQL_LD_DIR2)libclntsh.so $(SQL_LD_DIR2)libclntsh.so.11.1 -lpthread
l'opzione "-shared" di preciso cosa fa?
se la metto, compila e poi genera il core illeggibile
se non la metto trovo una serie di
...undefined reference to `ltoa'
... undefined reference to `fqdh_load_table'
e poi
collect2: ld returned 1 exit status
make: *** ... Error 1
grazie
chicco19811
21-04-2017, 17:32
crea una shared library oppure no. il fatto che senza non linki credo che sia un problema che sulla tua piattaforma quelle funzioni non sono disponibili (a link time o runtime nel caso del crash)
grazie
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.