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