Ved hjelp av C i en felles multi-plattform POSIX miljø

stemmer
2

Jeg skriver verktøy som brukes i et delt arbeidsområde. Siden det er flere OS-tallet som arbeider i dette rommet, vi vanligvis bruker Python og standard versjonen som er installert på tvers av maskiner. Men hvis jeg ønsket å skrive noen ting i C, jeg lurte på om jeg kanskje kunne ha søknaden innpakket i et Python-skript, som oppdaget operativsystemet og sparket av den korrekte versjonen av C-programmet. Hver plattform har GCC tilgjengelig, og benytter den samme skallet.

En idé var å ha C utarbeidet for brukerne lokal ~ / bin, med timestamp sammenligning med C-kode slik at det ikke er utarbeidet hvert løp, men bare når koden er oppdatert. Et annet var å bare lage det for hver plattform, og har wrapper manuset velge riktig kjørbar.

Er det en akseptert / stabil prosess for dette? Er det noen fangst? Finnes det alternativer (forutsatt absolutt behovet for å bruke native C-kode)?

Avklaring: Flere OS-er er involvert som ikke deler ABI. Eg. OS X, ulike Linuxes, BSD etc. Jeg må være i stand til å oppdatere koden på plass i delte mapper og ha den nye koden arbeider mer eller mindre umiddelbart. Distribuere binære eller kildepakkene er mindre enn ideell.

Publisert på 02/09/2008 klokken 15:46
kilden bruker
På andre språk...                            


4 svar

stemmer
2

Starte et Python tolk eksempel bare å velge riktig binære å kjøre ville være mye tyngre enn du trenger. Jeg vil fordele et skall .RC fil som gir aliaser.

I / delt / bin, sette deg de forskjellige binærfiler: / felles / bin / toolname-mac, / felles / bin / toolname-debian-x86, / felles / bin / toolname-NetBSD-Dreamcast, etc. Så, i det felles delt skall .RC fil, sette deg logikken til å sette aliasene i henhold til plattform, slik at på OSX, det blir alias toolname = / delt / bin / toolname-mac, og så videre.

Dette vil ikke fungere så godt hvis du legger til nye verktøy hele tiden, fordi brukerne må laste aliasene.

Jeg vil ikke anbefale å distribuere verktøy på denne måten, skjønt. Testing og kvalifisering nybygg av verktøyene skal ta opp nok tid og krefter på at den ekstra tiden som kreves for å distribuere verktøy for brukerne er trivielt. Du ser ut til å være å optimalisere for å redusere distribusjonen tiden. Skifte verktøy som raskt i et levende miljø er altfor sannsynligvis føre til lang og forvirrende nedetid hvis noe går galt i å skrive og bygge verktøyene - spesielt når subtile plattformer problemer krype inn.

Svarte 02/09/2008 kl. 19:29
kilden bruker

stemmer
1

Dessuten kan du bruke autoconf og distribuere programmet i eneste kilde form. :)

Svarte 02/09/2008 kl. 16:03
kilden bruker

stemmer
0

Avhengig av mix os operativsystemer, kan det være bedre å lage pakker for hver klasse av systemet.

Alternativt, hvis de alle har samme ABI og maskinvarearkitektur, du kan også lage statiske binærfiler.

Svarte 02/09/2008 kl. 15:59
kilden bruker

stemmer
0

Du vet, du bør se på statisk linking.

I disse dager, vi alle har enorme harddisker, og noen ekstra megabyte (for å frakte rundt libc og hva som ikke) er egentlig ikke så stor en avtale lenger.

Du kan også prøve å kjøre programmene i chroot () fengsler og distribuere disse.

Svarte 02/09/2008 kl. 15:58
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more