[Users] Error on the linking phase on compilation in a virtual environment
José Ferreira
jpmferreira at ua.pt
Wed Jun 12 09:51:13 CDT 2024
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.einsteintoolkit.org/pipermail/users/attachments/20240612/a89105e6/attachment-0001.htm>
-------------- next part --------------
!CRL_VERSION = 1.0
!DEFINE ROOT = Cactus
!DEFINE ARR = $ROOT/arrangements
!DEFINE COMPONENTLIST_TARGET = $ROOT/thornlists/
!DEFINE ET_RELEASE = ET_2023_05
-------------- next part --------------
# Cactus configuration for virtual environments managed by conda
# change libraries location to match your virtual environment below!
# list of conda packages installed from conda-forge:
# - binutils
# - libjpeg-turbo
# - gsl
# - hdf5
# - openmpi openmpi-mpicc openmpi-mpicxx openmpi-mpifort
# - gcc gxx gfortran
## Decide which flags will be used at compile-time
OPTIMISE = yes
WARN = yes
DEBUG = no
PROFILE = no
OPENMP = yes
## Preprocessors and Compilers
CPP = cpp
FPP = cpp
CC = gcc
CXX = g++
F77 = gfortran
F90 = gfortran
## Default flags
CPPFLAGS = -DMPICH_IGNORE_CXX_SEEK
FPPFLAGS = -traditional
CFLAGS = -g3 -march=native -std=gnu99
CXXFLAGS = -g3 -march=native -std=gnu++0x
F77FLAGS = -g3 -march=native -fcray-pointer -m128bit-long-double -ffixed-line-length-none -fno-range-check
F90FLAGS = -g3 -march=native -fcray-pointer -m128bit-long-double -ffixed-line-length-none -fno-range-check
LDFLAGS = -rdynamic
## Optimization flags
CPP_OPTIMISE_FLAGS = -DKRANC_VECTORS # -DCARPET_OPTIMISE -DNDEBUG
FPP_OPTIMISE_FLAGS = # -DCARPET_OPTIMISE -DNDEBUG
C_OPTIMISE_FLAGS = -Ofast
CXX_OPTIMISE_FLAGS = -Ofast
F77_OPTIMISE_FLAGS = -Ofast
F90_OPTIMISE_FLAGS = -Ofast
## Warning flags
CPP_WARN_FLAGS = -Wall
FPP_WARN_FLAGS = -Wall
C_WARN_FLAGS = -Wall
CXX_WARN_FLAGS = -Wall
F77_WARN_FLAGS = -Wall
F90_WARN_FLAGS = -Wall
## Debug flags
CPP_DEBUG_FLAGS = -DCARPET_DEBUG -fsanitize=undefined -fsanitize=thread
FPP_DEBUG_FLAGS = -DCARPET_DEBUG -fsanitize=undefined -fsanitize=thread
C_DEBUG_FLAGS = -O0 -fsanitize=undefined -fsanitize=thread
CXX_DEBUG_FLAGS = -O0 -fsanitize=undefined -fsanitize=thread
F77_DEBUG_FLAGS = -O0 -fsanitize=undefined -fsanitize=thread
F90_DEBUG_FLAGS = -O0 -fsanitize=undefined -fsanitize=thread
## Code profiling flags
CPP_PROFILE_FLAGS =
FPP_PROFILE_FLAGS =
C_PROFILE_FLAGS = -pg
CXX_PROFILE_FLAGS = -pg
F77_PROFILE_FLAGS = -pg
F90_PROFILE_FLAGS = -pg
## OpenMP
CPP_OPENMP_FLAGS = -fopenmp
FPP_OPENMP_FLAGS = -fopenmp
C_OPENMP_FLAGS = -fopenmp
CXX_OPENMP_FLAGS = -fopenmp
F77_OPENMP_FLAGS = -fopenmp
F90_OPENMP_FLAGS = -fopenmp
## Libraries location
LIBDIRS = # ?
MPI_DIR = /home/undercover/.micromamba/envs/phd/
HDF5_DIR = /home/undercover/.micromamba/envs/phd/
GSL_DIR = /home/undercover/.micromamba/envs/phd/
HWLOC_DIR = /home/undercover/.micromamba/envs/phd/
PTHREADS_DIR = /home/undercover/.micromamba/envs/phd/
LIBJPEG_DIR = /home/undercover/.micromamba/envs/phd/
LIBS = gfortran open-pal z # ?
C_LINE_DIRECTIVES = yes # ?
F_LINE_DIRECTIVES = yes # ?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cactus_empty.log
Type: text/x-log
Size: 10633 bytes
Desc: not available
URL: <http://lists.einsteintoolkit.org/pipermail/users/attachments/20240612/a89105e6/attachment-0001.bin>
More information about the Users
mailing list