elastix icon indicating copy to clipboard operation
elastix copied to clipboard

Non-standard build

Open mboisson opened this issue 4 years ago • 3 comments

Hi, I built version 5.0.1 from source, and it produced a bunch of static libraries, but no executable. How do we get the executables to build ? I could not find installation instructions anywhere in the repository.

Here is what it built and installed:

ls /cvmfs/soft.computecanada.ca/easybuild/software/2020/avx2/Compiler/gcc9/elastix/5.0.1/*
/cvmfs/soft.computecanada.ca/easybuild/software/2020/avx2/Compiler/gcc9/elastix/5.0.1/include:
Common  Components  Core  elxInstallComponentFunctionCalls.h  elxInstallComponentFunctionDeclarations.h  elxSupportedImageTypes.h  itkImageIOFactoryRegisterManager.h  itkTransformIOFactoryRegisterManager.h

/cvmfs/soft.computecanada.ca/easybuild/software/2020/avx2/Compiler/gcc9/elastix/5.0.1/lib:
libAdaGrad-5.0.a                                    libANNlib-5.0.so                                     libelxCommon-5.0.a                        libGridSampler-5.0.a                             libMultiResolutionRegistration-5.0.a              libRandomCoordinateSampler-5.0.a                      libSumSquaredTissueVolumeDifferenceMetric-5.0.a
libAdaptiveStochasticGradientDescent-5.0.a          libANNlib-5.0.so.1                                   libelxCore-5.0.a                          libKNNGraphAlphaMutualInformationMetric-5.0.a    libMultiResolutionRegistrationWithFeatures-5.0.a  libRandomSampler-5.0.a                                libTransformBendingEnergyPenalty-5.0.a
libAdaptiveStochasticLBFGS-5.0.a                    libBSplineInterpolator-5.0.a                         libEulerStackTransform-5.0.a              libKNNlib-5.0.a                                  libMyStandardResampler-5.0.a                      libRandomSamplerSparseMask-5.0.a                      libtransformix-5.0.a
libAdaptiveStochasticVarianceReducedGradient-5.0.a  libBSplineResampleInterpolator-5.0.a                 libEulerTransformElastix-5.0.a            libLinearInterpolator-5.0.a                      libNormalizedMutualInformationMetric-5.0.a        libRecursiveBSplineTransform-5.0.a                    libTransformRigidityPenalty-5.0.a
libAdvancedAffineTransformElastix-5.0.a             libBSplineStackTransform-5.0.a                       libFiniteDifferenceGradientDescent-5.0.a  libmevisdcmtiff-5.0.a                            libparam-5.0.a                                    libReducedDimensionBSplineInterpolator-5.0.a          libTranslationStackTransform-5.0.a
libAdvancedBSplineTransform-5.0.a                   libConjugateGradient-5.0.a                           libFixedGenericPyramid-5.0.a              libMovingGenericPyramid-5.0.a                    libPCAMetric2-5.0.a                               libReducedDimensionBSplineResampleInterpolator-5.0.a  libTranslationTransformElastix-5.0.a
libAdvancedMattesMutualInformationMetric-5.0.a      libCorrespondingPointsEuclideanDistanceMetric-5.0.a  libFixedRecursivePyramid-5.0.a            libMovingRecursivePyramid-5.0.a                  libPCAMetric-5.0.a                                libRegularStepGradientDescent-5.0.a                   libVarianceOverLastDimensionMetric-5.0.a
libAdvancedMeanSquaresMetric-5.0.a                  libDeformationFieldTransform-5.0.a                   libFixedSmoothingPyramid-5.0.a            libMovingSmoothingPyramid-5.0.a                  libPowell-5.0.a                                   libSplineKernelTransform-5.0.a                        libxoutlib-5.0.a
libAdvancedNormalizedCorrelationMetric-5.0.a        libDistancePreservingRigidityPenalty-5.0.a           libFullSampler-5.0.a                      libMultiInputRandomCoordinateSampler-5.0.a       libPreconditionedStochasticGradientDescent-5.0.a  libStandardGradientDescent-5.0.a
libAffineLogStackTransform-5.0.a                    libelastix-5.0.a                                     libFullSearch-5.0.a                       libMultiMetricMultiResolutionRegistration-5.0.a  libQuasiNewtonLBFGS-5.0.a                         libSumOfPairwiseCorrelationCoefficientsMetric-5.0.a

/cvmfs/soft.computecanada.ca/easybuild/software/2020/avx2/Compiler/gcc9/elastix/5.0.1/lib64:
libAdaGrad-5.0.a                                    libANNlib-5.0.so                                     libelxCommon-5.0.a                        libGridSampler-5.0.a                             libMultiResolutionRegistration-5.0.a              libRandomCoordinateSampler-5.0.a                      libSumSquaredTissueVolumeDifferenceMetric-5.0.a
libAdaptiveStochasticGradientDescent-5.0.a          libANNlib-5.0.so.1                                   libelxCore-5.0.a                          libKNNGraphAlphaMutualInformationMetric-5.0.a    libMultiResolutionRegistrationWithFeatures-5.0.a  libRandomSampler-5.0.a                                libTransformBendingEnergyPenalty-5.0.a
libAdaptiveStochasticLBFGS-5.0.a                    libBSplineInterpolator-5.0.a                         libEulerStackTransform-5.0.a              libKNNlib-5.0.a                                  libMyStandardResampler-5.0.a                      libRandomSamplerSparseMask-5.0.a                      libtransformix-5.0.a
libAdaptiveStochasticVarianceReducedGradient-5.0.a  libBSplineResampleInterpolator-5.0.a                 libEulerTransformElastix-5.0.a            libLinearInterpolator-5.0.a                      libNormalizedMutualInformationMetric-5.0.a        libRecursiveBSplineTransform-5.0.a                    libTransformRigidityPenalty-5.0.a
libAdvancedAffineTransformElastix-5.0.a             libBSplineStackTransform-5.0.a                       libFiniteDifferenceGradientDescent-5.0.a  libmevisdcmtiff-5.0.a                            libparam-5.0.a                                    libReducedDimensionBSplineInterpolator-5.0.a          libTranslationStackTransform-5.0.a
libAdvancedBSplineTransform-5.0.a                   libConjugateGradient-5.0.a                           libFixedGenericPyramid-5.0.a              libMovingGenericPyramid-5.0.a                    libPCAMetric2-5.0.a                               libReducedDimensionBSplineResampleInterpolator-5.0.a  libTranslationTransformElastix-5.0.a
libAdvancedMattesMutualInformationMetric-5.0.a      libCorrespondingPointsEuclideanDistanceMetric-5.0.a  libFixedRecursivePyramid-5.0.a            libMovingRecursivePyramid-5.0.a                  libPCAMetric-5.0.a                                libRegularStepGradientDescent-5.0.a                   libVarianceOverLastDimensionMetric-5.0.a
libAdvancedMeanSquaresMetric-5.0.a                  libDeformationFieldTransform-5.0.a                   libFixedSmoothingPyramid-5.0.a            libMovingSmoothingPyramid-5.0.a                  libPowell-5.0.a                                   libSplineKernelTransform-5.0.a                        libxoutlib-5.0.a
libAdvancedNormalizedCorrelationMetric-5.0.a        libDistancePreservingRigidityPenalty-5.0.a           libFullSampler-5.0.a                      libMultiInputRandomCoordinateSampler-5.0.a       libPreconditionedStochasticGradientDescent-5.0.a  libStandardGradientDescent-5.0.a
libAffineLogStackTransform-5.0.a                    libelastix-5.0.a                                     libFullSearch-5.0.a                       libMultiMetricMultiResolutionRegistration-5.0.a  libQuasiNewtonLBFGS-5.0.a                         libSumOfPairwiseCorrelationCoefficientsMetric-5.0.a

mboisson avatar Aug 05 '21 20:08 mboisson

Also, it seems to not produce shared libraries, and the usual CMake -DBUILD_SHARED_LIBS=ON gives an error, saying that this is not supported, why is that ? 🤔

mboisson avatar Aug 05 '21 20:08 mboisson

I see the initial issue is a duplicate of https://github.com/SuperElastix/elastix/issues/305 and fixed by commit ed4f1b1a0

any plan on making a fixed release ?

mboisson avatar Aug 06 '21 14:08 mboisson

And I see shared libraries were explicitly disabled here (https://github.com/SuperElastix/elastix/issues/202)

This is rather unfortunate. It looks to me like this https://github.com/SuperElastix/elastix/pull/145 in addition to building with position-independent-code is all that is really needed.

We explicitly always build everything with shared libraries at our site. Building with static libraries yields increased storage usage.

mboisson avatar Aug 06 '21 14:08 mboisson

Thanks for bringing this up. I'm sorry there are no plans to support building shared elastix libraries. The executables should be built though, and placed in the "bin" directory. Hereby closing, please reopen if you still haven't found the executables.

N-Dekker avatar Jan 13 '23 16:01 N-Dekker

For what it is worth, here is the patch needed to support shared libraries: https://github.com/ComputeCanada/easybuild-easyconfigs/blob/computecanada-main/easybuild/easyconfigs/e/elastix/elastix-5.0.1-fix-cmake-shared-libraries.patch

We have applied that in our build.

mboisson avatar Jan 13 '23 16:01 mboisson