Mono C #: Script "Hello World" di Mkbundle'd esegue solo il codice di uscita "11" su un server Web

StackOverflow https://stackoverflow.com//questions/24014152

  •  21-12-2019
  •  | 
  •  

Domanda

Mi piacerebbe eseguire il codice Mono (C #) su un server Web che non ha installato Mono Runtime. Poiché Mkbundle è in grado di produrre codice nativo, sto per prima cosa tentando di ottenere un semplice script "Hello World" per lavorare su entrambi i lati, che funziona localmente ma non sul server Web.

c # helloworld.cs script:

 using System;

 public class HelloWorld
 {
    public static void Main()
    {
       System.Console.WriteLine("Hello, World!");
    }
 }
.

La compilazione e il raggruppamento usando: $ GMCS HelloWorld.cs -out: helloworld.exe
$ mkbundle -o helloworld helloworld.exe --static -Deps

Il mio unico modo consentito per eseguire questo script sul server Web è utilizzando uno script PHP, che ha il seguente:

 $cmd = "./helloworld";
 exec($cmd, $array, $return_code);
 var_dump($array);
 //passthru($cmd, $return_code);
 var_dump($return_code);
.

Localmente, questo script funziona e ottengo la seguente risposta:

.

Array (1) { [0]=> String (13) "Ciao, mondo!" } int (0)

Ma sul server Web questo è tutto lo script restituisce

.

Array (0) {} INT (11)

Bash Exit Code 11 non è standard secondo questo e Questo Esci i codiglioni.

Entrambe le macchine sono su un Linux da 64 bit e un "file helloworld" restituisce il seguente ...
Sulla macchina locale:

.

helloworld: Elf 64-bit LSB eseguibile LSB, X86-64, versione 1 (SYSV), collegato dinamicamente (utilizza le lib classi condivise), per GNU / Linux 2.6.24, BuildID [SHA1]= FBC9731FB13202C604B025BA3202C604C69DC40D8, non spogliato

sul server Web:

.

helloworld: Elf 64-bit LSB eseguibile, X86-64, versione 1 (SYSV), collegato dinamicamente (utilizza libs condivise), spogliato

potrebbe "collegata dinamicamente (utilizza le lib classi condivise), stripped" significa ancora che alcune librerie incorporate o runtime mono mancano ancora?

È stato utile?

Soluzione

Ho creato una macchina virtuale con lo stesso sistema operativo del server Web, quando si esegue il bundle ho avuto 'Guasto di segmentazione (core dumpd)', che ha il codice di uscita '11'.Mkbundle non è un modo completamente compatibile per distribuire software scritto mono su macchine Linux.

Così alla fine ho installato Mono sulla macchina virtuale, compilato e mkbundle'd il codice e dopo aver caricato il file sul server Web è stato in grado di eseguirlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top