web-dev-qa-db-fra.com

Octave - En-tête ELF non valide - Ubuntu 18.04

TLDR;

Je veux exécuter du code d'octave dans le terminal sans interface graphique, mais je suis confronté à une erreur d'en-tête ELF.

Question complète;

J'essaie d'exécuter un script d'octave de base, comme on peut le voir ici, qui est enregistré dans un fichier nommé testing.oct

x = 5
% This is just some silly comment to make minimum length. 

Mais, lorsque je mets octave testing.oct dans ma ligne de commande qui se trouve déjà dans ce répertoire avec ce fichier, le message d'erreur suivant s'affiche:

error: /home/user/programs/junk/testing.oct: failed to load: /home/user/programs/junk/testing.oct: invalid ELF header

Lancer cat testing.oct vérifie que je charge le fichier voulu.

J'utilise Ubuntu 18.04 que je viens de mettre à jour à partir de 16.04. Selon octave --version j'utilise 4.2.2. Auparavant (en 16.04), j’utilisais octave de cette manière avec la sortie "fenêtre de commande" apparaissant dans mon terminal et les fonctions de tracé/figure générées sous forme de petites fenêtres qui attendent patiemment que vous les fermiez pour que l’exécution puisse se poursuivre.

J'ai déjà essayé de suivre les conseils contenus ici pour réparer mon installation d'octave au cas où le problème se poserait, mais cela n'a pas corrigé mon problème.

Le chargement de l'interface graphique d'octave et le placement du script dans la fenêtre de commande génèrent la même erreur.

Toute information qui pourrait m'aider à utiliser octave de la ligne de commande de cette manière serait grandement appréciée.

Edit 1: En réponse à un commentaire demandant apt-cache policy octave:

octave:
  Installed: 4.2.2-1ubuntu1
  Candidate: 4.2.2-1ubuntu1
  Version table:
 *** 4.2.2-1ubuntu1 500
        500 http://us.archive.ubuntu.com/ubuntu bionic/universe AMD64 Packages
        100 /var/lib/dpkg/status

Edit 2: En réponse à un commentaire demandant dpkg -l | grep octave:

ii  liboctave4:AMD64  4.2.2-1ubuntu1  AMD64  shared libraries of the GNU Octave language
ii  octave            4.2.2-1ubuntu1  AMD64  GNU Octave language for numerical computations
ii  octave-common     4.2.2-1ubuntu1  all    architecture-independent files for octave
ii  octave-doc        4.2.2-1ubuntu1  all    documentation of the GNU Octave language
1
Ethan

Je pense que le problème ici est juste l'extension de fichier .oct que vous avez utilisée. L'extension .oct a une signification particulière pour octave et n'est pas censée être utilisée pour les fichiers de script d'octave. Il suffit de renommer le fichier de testing.oct en testing.m et d’essayer à nouveau, cela devrait alors fonctionner:

$ octave testing.oct 
error: /home/elias/slask/testing.oct: failed to load: /home/elias/slask/testing.oct: file too short
$ mv testing.oct testing.m
$ octave testing.m 
x =  5
1
Elias