PDA

View Full Version : [C] libreria Pthread e porting


chicco19811
02-08-2017, 15:12
spiego la mia situazione (ho scarsa esperienza in questo ambito, per cui perdonatemi per eventuali strafalcioni)


sto facendo il porting di una applicazione C da 1 a 2


macchina 1: HP-UX B.11.31 U ia64 2


macchina 2: Linux 2.6.32-696.el6.x86_64 #1 SMP x86_64 x86_64 x86_64 GNU/Linux
versione: Red Hat Enterprise Linux Server release 6.8 (Santiago) Kernel \r on an \m


l'applicazione utilizza diverse funzioni della libreria Pthread ma sulle 2 macchine ci sono 2 implementazioni differenti di questa libreria (con conseguenti problemi)


posso compilare su Linux usando la libreria presente su HPUX (dopo averla copiata)?


Grazie

chicco19811
02-08-2017, 16:47
Che vuol dire copiata? che vuol dire 'problemi'. Quali sono le versioni installate in 1 e 2?

intanto grazie

come vedo le versioni?
Grazie

chicco19811
02-08-2017, 17:46
Su HP-UX non ne ho proprio idea (piu' che altro bisognerebbe vedere la conformance con posix). Su RHEL 6 penso sia NTPL. In ogni caso che problemi di compilazione ti da?

per compilare non ci sono problemi, è che poi nell'applicazione vengono usati alcuni metodi aspettandosi dei risultati, e ne arrivano altri

ad esempio, per capirci, sotto /usr/include trovo pthread.h (assieme a altre librerie) in entrambe

sulla HPUX questo file è interamente commentato, si scende quindi in sys e si trova la propria implementazione (un altro file pthread.h) che avvisa nei commenti: This header file contains information specific to the internals of the HP-UX implementation

e nel file types.h incluso in pthread.h trovo che
typedef int pthread_t (pthread_t quindi intero)

sul pthread.h della macchina Linux invece include un file per i tipi come avviene nell'altra macchina (qua si chiama pthreadtypes.h) e dentro troviamo che
typedef unsigned long int pthread_t (pthread_t quindi non è un intero)

e questo oggetto nel codice che mi trovo, viene magari assegnato a un intero

chicco19811
02-08-2017, 19:32
Pero' nel codice dovresti vedere se lo scrittore ha utilizzato pthread_t (che e' la maniera corretta e portabile di usare pthread) oppure se ha utilizzato int. Mi sa che l'unico modo e' cercare nel codice (ma il programma ti crasha quando lo esegui?)

è stato utilizzato anche int, per questo vorrei utilizzare, se è possibile, la versione di Pthread presente sulla vecchia macchina

crasha sì

grazie

chicco19811
03-08-2017, 16:19
Mi dispiace. Mi sa che non c'e' altro verso che sostituire gli int con pthread_t...

per come sono stati usati, non penso sia proprio una passeggiata

comunque grazie

la mia idea di utilizzare su Linux le librerie che avevo sull'altra macchina?
E' impossibile?

Grazie

chicco19811
03-08-2017, 16:40
Credo sia abbastanza impossibile per quello che ne so io..

grazie

AnonimoVeneziano
04-08-2017, 03:34
L'unica soluzione che vedo e' debuggare il problema (cioè capire cosa sta succedendo , perché l'applicazione non si comporta come dovrebbe) e poi agire di conseguenza per portare alle nuove librerie l'applicazione che stai convertendo una volta che hai capito dove e' il problema in questione.

Sembra che da questo problema hai la potenzialità di imparare un sacco