Repository navigation
FPM ELF Dynamic Executable displaying Error #72
Copy link
Copy link
Open
Description
I was trying to solve Issue #44 but found this error-
SeaBIOS (version 1.16.1-3.fc38)
Booting from ROM..Powered by
o. .o _ _ __ _
Oo Oo ___ (_) | __ __ __ _ ' _) :_
oO oO ' _ `| | |/ / _)' _` | |_| _)
oOo oOO| | | | | (| | | (_) | _) :_
OoOoO ._, ._:_:_,\_._, .__,_:_, \___)
Prometheus 0.14.0~4cce8306-custom
[ 0.153581] ERR: [appelfloader] <elf_load.c @ 135> fpm: ELF executable is not position-independent!
[ 0.179544] ERR: [appelfloader] <elf_load.c @ 703> fpm: Parsing of ELF image failed: Exec format error (-8)
Steps to reproduce the error:
-
Make sure you have all the dependencies installed like
gcc-gfortranto run FPM. -
Build the Fortran package manager from the source by following the commands-
-
git clone https://github.com/fortran-lang/fpm -
cd fpm -
chmod +x install.sh -
./install.sh --prefix=/usr
-
-
Go to
dynamic-appsrepo and then create a folderfpmand inside that runsudo ../extract.sh /usr/bin/fpm
cp /usr/bin/fpm . -
Go to the
run-app-elfloaderrepository and use therun.sh scriptto run the application we just prepared:
sudo ./run.sh -r ../dynamic-apps/fpm/ /bin/fpm --help
I tried running it on Linux and it runs as expected without any errors.
Run on Linux: /usr/bin/fpm --help
NAME
fpm(1) - A Fortran package manager and build system
SYNOPSIS
fpm SUBCOMMAND [SUBCOMMAND_OPTIONS]
fpm --help|--version|--list
DESCRIPTION
fpm(1) is a package manager that helps you create Fortran projects
from source -- it automatically determines dependencies!
Most significantly fpm(1) lets you draw upon other fpm(1) packages
in distributed git(1) repositories as if the packages were a basic
part of your default programming environment, as well as letting
you share your projects with others in a similar manner.
All output goes into the directory "build/" which can generally be
removed and rebuilt if required. Note that if external packages are
being used you need network connectivity to rebuild from scratch.
SUBCOMMANDS
Valid fpm(1) subcommands are:
+ build Compile the packages into the "build/" directory.
+ new Create a new Fortran package directory with sample files.
+ update Update the project dependencies.
+ run Run the local package binaries. Defaults to all binaries
Metadata
Metadata
Assignees
Labels
No labels
Activity
StefanJum commentedon Sep 20, 2023
Hi @chococandy63, can you please run
file dynamic-apps/fpm/bin/fpm? It looks like the file is not compiled as position independent. The elfloader expects position independent executables (PIE), if thefpmdefault build does not compile it as PIE you might want to check thefpminstallation process, maybe you can modify it, add some custom cflags etc.b1shtream commentedon Sep 22, 2023
@StefanJum It is not PIE , I will check the
fpminstallation process.