Dear toolkit users and developers,
With the latest update of GCC to version 14, there is a known error that
prevents the compilation from taking place, preventing me from compiling
the toolkit.
I’ve been trying to do something which I probably should have some time
ago to avoid this kind of issues, while also granting some portability
between machines, which is to setup a virtual environment using Conda to
compile the toolkit.
I am sending you this e-mail because I’ve failed to compile the toolkit
in a virtual environment, where I am currently stuck with an error
during the linking phase. Before the update to GCC 14, and without the
virtual environment, I was able of compiling the toolkit without any issue.
Here are the steps that I have performed:
1.
Activate an empty virtual environment managed by a conda (or a
drop-in replacement) with the conda-forge repository configured
2.
|conda install gcc gxx gfortran openmpi openmpi-mpicc openmpi-mpicxx
openmpi-mpifort binutils|
3.
Compile the toolkit with an empty thornlist, attached in |empty.th|,
and an option file that points towards the virtual environment that
is activated, attached in |venv.cfg|
4.
Get the following error from |ld| (the full log for making the
config and the binary are attached in |cactus_empty.log|)
|Creating cactus_empty in /home/undercover/projects/cactus/exe from
/home/undercover/.micromamba/envs/phd/bin/x86_64-conda-linux-gnu-ld:
unrecognised emulation mode: arch=native Supported emulations:
elf_x86_64 elf32_x86_64 elf_i386 elf_iamcu make[1]: ***
[/home/undercover/projects/cactus/lib/make/make.configuration:150:
/home/undercover/projects/cactus/exe/cactus_empty] Error 1 make: ***
[Makefile:265: empty] Error 2 |
To me, the previous error indicates that something is passing the wrong
flags to |ld|, because even if the emulation mode was not recognized it
should give the error |ld: unrecognised emulation mode: <something>|
instead of |ld: unrecognised emulation mode: arch=<something>|.
Removing the flag |-march=native| from the compilers confirms my guess
by revealing a different error at the same stage
|Creating cactus_empty in /home/undercover/projects/cactus/exe from
/home/undercover/.micromamba/envs/phd/bin/x86_64-conda-linux-gnu-ld:
unrecognized option '-DMPICH_IGNORE_CXX_SEEK'
/home/undercover/.micromamba/envs/phd/bin/x86_64-conda-linux-gnu-ld: use
the --help option for usage information make[1]: ***
[/home/undercover/projects/cactus/lib/make/make.configuration:150:
/home/undercover/projects/cactus/exe/cactus_empty] Error 1 make: ***
[Makefile:265: empty] Error 2 |
and if I were to remove the corresponding flag in the config file, |ld|
will complain about something else.
It really seems like something is passing the flags onto |ld| where it
shouldn’t, but I cannot tell who and where.
I should note that compiling very basic programs in C in the virtual
environment doesn’t raise any issues, although I haven’t tested it very
thoroughly.
Please do let me know if you have any issues in rendering this e-mail!
Best regards,
José Ferreira