Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Linux debian 64 bit.. ma devo sviluppare a 32

Moderatori: Foto UtenteMassimoB, Foto Utentexyz

2
voti

[1] Linux debian 64 bit.. ma devo sviluppare a 32

Messaggioda Foto Utentebanjoman » 23 nov 2016, 1:53

Mi hanno dato un PC nuovo per eseguire dei lavori. Essendo la cpu una AMD a 64 bit quad core, mi sono preso la liberta' di provare debian 8 jessie a 64 bit.
Non ne sono troppo entusiasta perche' alcune app che uso per sviluppare (Codelite ad esempio) ma anche alcune librerie tipo gtk3, hanno dei bug.

Per dire, usando io wxWidgets per sviluppare app multipiattaforma, ho compilato le librerie come mio solito, ovviamente a 64 bit e con GTK3.

Mi sono ritrovato con alcuni widgets completamente sballati (ad esempio una gauge bar sottilissima, indipendentemente da quanti px di altezza la settassi).
Dovo vari tentativi, ho ricompilato le librerie usando pero' il GTK2. E' andato tutto a posto, ma questo mi ha dato un po' da riflettere.
Su debian 7 wheezy a 32 bit ho usato indifferentemente GTK2 e GTK3, e mai ho incontrato problemi simili.

Codelite, che non mi ha mai dato problemi, a 64 bit crasha di brutto usando gdb. E non e' un problema del mio programma ne' di gdb, e' proprio codelite. Alla fine ho risolto installandomi Eclipse (Neon): mai usato prima, ma non e' malaccio, anche se devo ammettere che e' una cosa gigantesca ed elefantiaca: sono hai almeno un dual core, ti viene la barba bianca solo ad aspettare che l'ide si carichi :D

Ciliegina sulla torta, per sviluppare a 32 bit su linux dovrei installare le multilib e farmi un sacco di seghe mentali. Perlomeno su Win10 questo problema non c'e' (basta settare le giuste opzioni nell'IDE di Visual Studio).

Credo che alla fine, dato che al 99% devo ancora sviluppare app e driver a 32 bit, la cosa migliore sia quella di installare debian 8 a 32 bit su una partizione a parte, e usare quella per lavorare.

Mi sembra oltretutto che anche se il sistema e' a 64 bit (Windows 10 o Linux), molte app sono ancora a 32.
Incredibilmente ad esempio, Visual Studio e' ancora un'app a 32 bit. Ma forse neanche tanto incredibile: probabilmente avranno voluto evitare rogne eseguendone il porting a 64.

Insomma, i sistemi operativi a 64 bit saranno anche piu' efficienti e veloci per gli utenti finali, ma per gli sviluppatori creano un sacco di casini (a partire dalle diverse dimensioni dei vari tipi: int, long, long long, void * e via dicendo :-) )

Voi che ne pensate? Io personalmente mi sto accingendo a reinstallare debian 8, ma a 32 bit.
O_/
Max
Se funziona quasi bene, è tutto sbagliato. A.Savatteri/M.Mazza
Avatar utente
Foto Utentebanjoman
7.273 5 8 11
Master EY
Master EY
 
Messaggi: 1137
Iscritto il: 19 set 2013, 19:27

4
voti

[2] Re: Linux debian 64 bit.. ma devo sviluppare a 32

Messaggioda Foto Utentexyz » 23 nov 2016, 2:59

Io uso computer a 64 bit da molti anni (dal vecchio Alpha della Digital con Ultrix fino al Intel I7) adattando all'inizio il codice scritto male per i 64 bit. Si tratta di bachi software a livello di libreria (user space) non di architettura o kernel. Di solito basta individuare la libreria che da problemi, aggiornarla o cercare se esiste una patch o se si è bravi correggere da soli il baco. Di solito alcuni bachi vengono risorti nel giro di alcuni giorni se vengono segnalati agli sviluppatori o alla distribuzione.

Per le dimensioni dei vari tipi in C molto spesso è colpa dei programmatori, usano sempre int o al massimo long e non i tipi corretti come descritto nella documentazione (basta vedere la differenza tra fseek e il nuovo fsetpos). I file oggetti per architettura x86_64 usati nelle librerie dinamiche devono essere compilati per forza abilitando il PIC (Position Independent Code), con i386 non era obbligatorio.

Per quanto riguarda lo sviluppo di applicazioni a 32 bit su architettura a 64 bit è possibile in due modi sotto le distribuzioni Debian. Il primo è abilitare la multiarch:

https://wiki.debian.org/Multiarch/HOWTO

in questo modo puoi installare le librerie a 32 bit che servono ai binari i386, è scomodo nella compilazioni, bisogna passare l'opzione -m32 al compilatore per compilare a 32 bit e avere anche tutte le librerie dev a 32 bit. Alcuni programmi quando si compilano a 32 bit possono rivelare per sbaglio le librerie a 64 bit creando un vero macello.

Il secondo modo è usare il chroot su di una distribuzione a 32 bit. Esiste un pacchetto Debian "dchroot" o il nuovo "schroot" che permettono di installare facilmente una distribuzione Debian qualsiasi compatibile col kernel in uso via chroot. In questo modo basta installare il compilatore e tutte le librerie nell'ambiente chroot per compilare con facilità tutti i programmi a 32 bit.

La multilib serve ad altre funzioni, riguarda le architetture diverse da quelle native. Ad esempio se devi disassemblare un binario per MIPS e non hai per x86_64 il toolchain per MIPS per il cross compiler, con objdump multilib puoi tranquillamente farlo, riconosce il binario MIPS (e tutte le altre architetture sopportate dalle binutils), riporta tutte le informazioni corrette senza nessun errore su l'architettura non sopportata.
Avatar utente
Foto Utentexyz
6.130 2 4 5
G.Master EY
G.Master EY
 
Messaggi: 1627
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

1
voti

[3] Re: Linux debian 64 bit.. ma devo sviluppare a 32

Messaggioda Foto Utentealev » 23 nov 2016, 11:19

Una ulteriore opzione per sviluppare a 32 bit è la creazione di una macchina virtuale con la distribuzione a 32 bit desiderata; in questo modo si eliminano tutti i problemi di "convivenza" con due architetture diverse sulla stessa macchina

In ambito Debian, oltre ai classici Virtualbox & compagnia, esiste la tecnologia KVM, decisamente più performante anche se meno user-friendly (non più di tanto, dopo averlo usato per un po')
https://wiki.debian.org/KVM
https://wiki.debian.org/DebianKVMGuests
Avatar utente
Foto Utentealev
4.160 2 8 12
free expert
 
Messaggi: 4140
Iscritto il: 19 lug 2010, 14:38
Località: Altrove

0
voti

[4] Re: Linux debian 64 bit.. ma devo sviluppare a 32

Messaggioda Foto Utentebanjoman » 23 nov 2016, 13:17

Mi sa che e' piu' semplice aggiungere un hard disk e installare deb8 32 bit. Poi con GRUB si fa il boot col s.o. desiderato. Pero' non ho ancora deciso se mantenere la partizione con debian 64 bit. Quello che dice Foto Utentexyz e' giustissimo ma conferma anche le mie supposizioni, ovvero che e' un troiaio :-)

Quanto a installare macchine virtuali...perche' complicarsi la vita? Un hd da svariate centinaia di giga SATA te lo tirano dietro per pochi euro.
Usare le macchine virtuali significa esporsi a effetti collaterali non banali, specie se si sviluppano applicazioni che utilizzano driver hw particolari e idiosincrasici, come ad esempio quelli per i programmatori Atmel (e relativi cloni), PeMicro e via dicendo.
Anche gli emulatori USB<->RS232 sulle macchine virtuali possono riservare sorprese (dipende dal driver appunto).

Preferisco restare sul semplice, una partizione per ogni sistema operativo, e ciascun s.o. si fa i c..zi suoi :mrgreen:
Se funziona quasi bene, è tutto sbagliato. A.Savatteri/M.Mazza
Avatar utente
Foto Utentebanjoman
7.273 5 8 11
Master EY
Master EY
 
Messaggi: 1137
Iscritto il: 19 set 2013, 19:27

0
voti

[5] Re: Linux debian 64 bit.. ma devo sviluppare a 32

Messaggioda Foto Utentealev » 23 nov 2016, 13:58

Certo, la virtualizzazione non è una soluzione adatta a tutti i problemi; può esserlo nel caso che tu hai esposto perché evita di far coabitare ambienti di sviluppo a 32 e 64 bit; non lo è, quando devi sviluppare su hardware specifico

Aggiungere un disco è certamente più pratico, ma non sempre possibile

Il grande vantaggio della virtualizzazione è la possibilità di tenere contemporaneamente in piedi ambienti di sviluppo differenti senza problemi di convivenza
Avatar utente
Foto Utentealev
4.160 2 8 12
free expert
 
Messaggi: 4140
Iscritto il: 19 lug 2010, 14:38
Località: Altrove

2
voti

[6] Re: Linux debian 64 bit.. ma devo sviluppare a 32

Messaggioda Foto Utentexyz » 23 nov 2016, 15:37

Io uso la virtualizzazione (Virtualbox e Qemu) per gli ambienti di sviluppo proprietari sotto Windows, per le prime prove delle nuove schede hardware prima di utilizzarle solo sotto Linux con tools nativi (di solito alternativi non ufficiali). Si possono utilizzare anche dispositivi di programmazione USB con le macchine virtuali, bisogna aver compilato nel kernel gli opportuni moduli e configurato il tutto abilitando l'emulazione USB.

Se devo compilare per Windows preferisco il cross compiler da Linux via Mingw32 (ora 64) col gcc e GUI multi piattaforma.

I tools di sviluppo delle schede hardware rilasciate solo per Windows possono in molti casi girare sotto Wine (il quale non è un emulatore), basta configurare opportunamente le seriali (comprese quelle USB) se necessarie. Le ultime versioni di Wine supportano Windows a 64 bit però ci possono essere dei problemi con alcuni programmi per win32. Per obbligare Wine a girare a 32 bit in un ambiente a 64 bit bisogna impostare la variabile ambiente WINEARCH a "win32".
Avatar utente
Foto Utentexyz
6.130 2 4 5
G.Master EY
G.Master EY
 
Messaggi: 1627
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin


Torna a Linux

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti