su2code/SU2

Failure to link Python Bindings

ludgerpaehler opened this issue · 1 comments

Hi,

I've been trying to build SU2 with its Python bindings, but have sadly been unable to link the targets SU2_PY/pySU2/_pysu2.so and SU2_PY/pySU2/_pysu2ad.so. I have attempted the compilation & linking from both the master branch, and the latest release with the same result. The steps I followed here were:

  1. Meson configuration:
./meson.py build -Denable-autodiff=true -Denable-pywrapper=true -Dwith-mpi=enabled --prefix=/local/temp/DifferentiableProgramming/SU2/python-build --optimization=3 --buildtype=release
  1. Building with ninja:
cd build && ninja
  1. Getting an error at the linking stage (the full command is at the bottom of the issue):4.
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libz.a(zutil.o): warning: relocation against `z_errmsg' in read-only section `.text'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libz.a(deflate.o): relocation R_X86_64_PC32 against symbol `z_errmsg' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: bad value

But looking at the linking command -fPIC is already used, so I am a little lost for advice here.

Does anyone have any intuition or suggestions what this could be due to?

Desktop:

  • OS: Ubuntu 22.04
  • C++ compiler and version: g++ 11.2.0
  • MPI implementation and version: OpenMPI v4.1.4
  • SU2 Version: master & v7.3.1

Full linking command

Linking target SU2_PY/pySU2/_pysu2ad.so
FAILED: SU2_PY/pySU2/_pysu2ad.so 
g++  -o SU2_PY/pySU2/_pysu2ad.so SU2_PY/pySU2/_pysu2ad.so.p/meson-generated_pySU2ad.cxx.o SU2_CFD/src/libSU2core_AD.a.p/definition_structure.cpp.o SU2_CFD/src/libSU2core_AD.a.p/python_wrapper_structure.cpp.o SU2_CFD/src/libSU2core_AD.a.p/CMarkerProfileReaderFVM.cpp.o SU2_CFD/src/libSU2core_AD.a.p/fluid_CFluidModel.cpp.o SU2_CFD/src/libSU2core_AD.a.p/fluid_CIdealGas.cpp.o SU2_CFD/src/libSU2core_AD.a.p/fluid_CPengRobinson.cpp.o SU2_CFD/src/libSU2core_AD.a.p/fluid_CVanDerWaalsGas.cpp.o SU2_CFD/src/libSU2core_AD.a.p/fluid_CNEMOGas.cpp.o SU2_CFD/src/libSU2core_AD.a.p/fluid_CMutationTCLib.cpp.o SU2_CFD/src/libSU2core_AD.a.p/fluid_CSU2TCLib.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_COutputFactory.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_CAdjElasticityOutput.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_CAdjFlowOutput.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_CAdjFlowCompOutput.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_CAdjFlowIncOutput.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_CAdjHeatOutput.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_CBaselineOutput.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_CMultizoneOutput.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_CElasticityOutput.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_CFlowCompOutput.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_CFlowCompFEMOutput.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_CFVMOutput.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_CFlowOutput.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_CFlowIncOutput.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_CHeatOutput.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_CMeshOutput.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_CNEMOCompOutput.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_output_physics.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_COutput.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_output_structure_legacy.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_filewriter_CParallelDataSorter.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_filewriter_CFVMDataSorter.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_filewriter_CFEMDataSorter.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_filewriter_CSurfaceFEMDataSorter.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_filewriter_CSurfaceFVMDataSorter.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_filewriter_CParallelFileWriter.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_filewriter_CParaviewFileWriter.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_filewriter_CParaviewBinaryFileWriter.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_filewriter_CTecplotFileWriter.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_filewriter_CTecplotBinaryFileWriter.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_filewriter_CCSVFileWriter.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_filewriter_CSTLFileWriter.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_filewriter_CSU2FileWriter.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_filewriter_CSU2BinaryFileWriter.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_filewriter_CParaviewXMLFileWriter.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_filewriter_CParaviewVTMFileWriter.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_filewriter_CSU2MeshFileWriter.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_filewriter_CCGNSFileWriter.cpp.o SU2_CFD/src/libSU2core_AD.a.p/output_tools_CWindowingTools.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CIncNSVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CTransLMVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CAdjEulerVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CHeatVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CTurbVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CScalarVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CSpeciesVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CAdjNSVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CBaselineVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CDiscAdjFEABoundVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CDiscAdjMeshBoundVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CFEABoundVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CDiscAdjVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CTurbSAVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CFEAVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CMeshVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CMeshBoundVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CMeshElement.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CRadVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CRadP1Variable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CTurbSSTVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CNSVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CAdjTurbVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CFlowVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CIncEulerVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CEulerVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CNEMOEulerVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CNEMONSVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/variables_CSobolevSmoothingVariable.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CSolverFactory.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CAdjEulerSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CAdjNSSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CAdjTurbSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CBaselineSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CBaselineSolver_FEM.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CDiscAdjFEASolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CDiscAdjMeshSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CRadSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CRadP1Solver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CDiscAdjSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CEulerSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CFEASolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CFEM_DG_EulerSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CFEM_DG_NSSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CHeatSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CIncEulerSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CIncNSSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CMeshSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CNEMOEulerSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CNEMONSSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CNSSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CTemplateSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CSpeciesSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CTransLMSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CTurbSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CTurbSASolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CTurbSSTSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CFEASolverBase.cpp.o SU2_CFD/src/libSU2core_AD.a.p/solvers_CGradientSmoothingSolver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_CNumerics.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_template.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_transition.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_heat.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_radiation.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_flow_convection_roe.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_flow_convection_fds.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_flow_convection_fvs.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_flow_convection_cusp.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_flow_convection_hllc.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_flow_convection_ausm_slau.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_flow_convection_centered.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_flow_flow_diffusion.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_flow_flow_sources.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_NEMO_CNEMONumerics.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_NEMO_convection_lax.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_NEMO_convection_roe.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_NEMO_convection_ausm.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_NEMO_convection_ausmplusup2.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_NEMO_convection_ausmpwplus.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_NEMO_convection_msw.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_NEMO_NEMO_diffusion.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_NEMO_NEMO_sources.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_continuous_adjoint_adj_convection.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_continuous_adjoint_adj_diffusion.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_continuous_adjoint_adj_sources.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_scalar_scalar_sources.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_species_species_sources.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_elasticity_CFEAElasticity.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_elasticity_CFEALinearElasticity.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_elasticity_CFEANonlinearElasticity.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_elasticity_nonlinear_models.cpp.o SU2_CFD/src/libSU2core_AD.a.p/numerics_CGradSmoothing.cpp.o SU2_CFD/src/libSU2core_AD.a.p/.._include_numerics_simd_CNumericsSIMD.cpp.o SU2_CFD/src/libSU2core_AD.a.p/interfaces_CInterface.cpp.o SU2_CFD/src/libSU2core_AD.a.p/interfaces_cfd_CConservativeVarsInterface.cpp.o SU2_CFD/src/libSU2core_AD.a.p/interfaces_cfd_CMixingPlaneInterface.cpp.o SU2_CFD/src/libSU2core_AD.a.p/interfaces_cfd_CSlidingInterface.cpp.o SU2_CFD/src/libSU2core_AD.a.p/interfaces_cht_CConjugateHeatInterface.cpp.o SU2_CFD/src/libSU2core_AD.a.p/interfaces_fsi_CDisplacementsInterface.cpp.o SU2_CFD/src/libSU2core_AD.a.p/interfaces_fsi_CFlowTractionInterface.cpp.o SU2_CFD/src/libSU2core_AD.a.p/interfaces_fsi_CDiscAdjFlowTractionInterface.cpp.o SU2_CFD/src/libSU2core_AD.a.p/drivers_CDriver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/drivers_CMultizoneDriver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/drivers_CSinglezoneDriver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/drivers_CDiscAdjMultizoneDriver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/drivers_CDiscAdjSinglezoneDriver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/drivers_CDummyDriver.cpp.o SU2_CFD/src/libSU2core_AD.a.p/integration_CIntegration.cpp.o SU2_CFD/src/libSU2core_AD.a.p/integration_CIntegrationFactory.cpp.o SU2_CFD/src/libSU2core_AD.a.p/integration_CSingleGridIntegration.cpp.o SU2_CFD/src/libSU2core_AD.a.p/integration_CMultiGridIntegration.cpp.o SU2_CFD/src/libSU2core_AD.a.p/integration_CNewtonIntegration.cpp.o SU2_CFD/src/libSU2core_AD.a.p/integration_CStructuralIntegration.cpp.o SU2_CFD/src/libSU2core_AD.a.p/integration_CFEM_DG_Integration.cpp.o SU2_CFD/src/libSU2core_AD.a.p/iteration_CIteration.cpp.o SU2_CFD/src/libSU2core_AD.a.p/iteration_CIterationFactory.cpp.o SU2_CFD/src/libSU2core_AD.a.p/iteration_CAdjFluidIteration.cpp.o SU2_CFD/src/libSU2core_AD.a.p/iteration_CDiscAdjFluidIteration.cpp.o SU2_CFD/src/libSU2core_AD.a.p/iteration_CDiscAdjHeatIteration.cpp.o SU2_CFD/src/libSU2core_AD.a.p/iteration_CDiscAdjFEAIteration.cpp.o SU2_CFD/src/libSU2core_AD.a.p/iteration_CFEAIteration.cpp.o SU2_CFD/src/libSU2core_AD.a.p/iteration_CFEMFluidIteration.cpp.o SU2_CFD/src/libSU2core_AD.a.p/iteration_CFluidIteration.cpp.o SU2_CFD/src/libSU2core_AD.a.p/iteration_CHeatIteration.cpp.o SU2_CFD/src/libSU2core_AD.a.p/iteration_CTurboIteration.cpp.o SU2_CFD/src/libSU2core_AD.a.p/limiters_CLimiterDetails.cpp.o -Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -shared -fPIC -Wl,--start-group -Wl,-soname,_pysu2ad.so -fPIC -Wl,-rpath,/usr/local/lib -Wl,-rpath-link,/usr/local/lib Common/src/libSU2CommonAD.a externals/cgns/libcgns.a externals/cgns/hdf5/libsu2hdf5.a externals/metis/libmetis.a externals/parmetis/libparmetis.a externals/tecio/teciompisrc/libteciompi.a /usr/lib/x86_64-linux-gnu/libpython3.9.so /usr/lib/x86_64-linux-gnu/libz.a -lm -ldl -Wl,-rpath -Wl,/usr/local/lib -Wl,--enable-new-dtags /usr/local/lib/libmpi.so -Wl,--end-group -Wl,-rpath -Wl,/usr/local/lib -Wl,--enable-new-dtags -Wl,-rpath -Wl,/usr/local/lib -Wl,--enable-new-dtags -Wl,-rpath -Wl,/usr/local/lib -Wl,--enable-new-dtags -Wl,-rpath -Wl,/usr/local/lib -Wl,--enable-new-dtags -Wl,-rpath -Wl,/usr/local/lib -Wl,--enable-new-dtags -Wl,-rpath -Wl,/usr/local/lib -Wl,--enable-new-dtags -Wl,-rpath -Wl,/usr/local/lib -Wl,--enable-new-dtags -Wl,-rpath -Wl,/usr/local/lib -Wl,--enable-new-dtags -Wl,-rpath -Wl,/usr/local/lib -Wl,--enable-new-dtags -Wl,-rpath -Wl,/usr/local/lib -Wl,--enable-new-dtags -Wl,-rpath -Wl,/usr/local/lib -Wl,--enable-new-dtags
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libz.a(zutil.o): warning: relocation against `z_errmsg' in read-only section `.text'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libz.a(deflate.o): relocation R_X86_64_PC32 against symbol `z_errmsg' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

Duplicate of #1568, still seems to be an issue on the main branch though, even after #1636 got merged into the main branch.