[Trilinos-Users] wrong linking flags order in CMake fortran test
Denis Davydov
davydden at gmail.com
Mon Dec 14 09:18:54 EST 2015
Dear all,
On GCC 5.2. and 4.8.2 there is an issue while compiling libVerifyFortran.a during CMake configure step.
I would say -lgfortran is not in correct place. It should be further down the line to resolve those _gfortran_st_write and alike.
I have no idea how/why it worked before.
Below are the excerpts from gcc 5.2 on Ubuntu and gcc 4.8 on CentOS.
Kind regards,
Denis
=== GCC 5.2. Ubuntu ====
-- Fortran name mangling: LOWER UNDER
-- Detecting Fortran/C Interface
-- Detecting Fortran/C Interface - Found GLOBAL and MODULE mangling
-- Verifying Fortran/CXX Compiler Compatibility
-- Verifying Fortran/CXX Compiler Compatibility - Failed
CMake Error at /usr/share/cmake-3.2/Modules/FortranCInterface.cmake:332 (message):
The Fortran compiler:
/usr/bin/mpif90
and the CXX compiler:
/usr/bin/mpicxx
failed to compile a simple test project using both languages. The output
was:
Change Dir: /tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX
Run Build Command:"/usr/bin/make"
/usr/bin/cmake -H/usr/share/cmake-3.2/Modules/FortranCInterface/Verify -B/tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX/CMakeFiles /tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX/CMakeFiles/progress.marks
/usr/bin/make -f CMakeFiles/Makefile2 all
make[1]: Entering directory '/tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX'
/usr/bin/make -f CMakeFiles/VerifyFortran.dir/build.make CMakeFiles/VerifyFortran.dir/depend
make[2]: Entering directory '/tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX'
cd /tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /usr/share/cmake-3.2/Modules/FortranCInterface/Verify /usr/share/cmake-3.2/Modules/FortranCInterface/Verify /tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX /tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX /tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX/CMakeFiles/VerifyFortran.dir/DependInfo.cmake
Scanning dependencies of target VerifyFortran
make[2]: Leaving directory '/tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX'
/usr/bin/make -f CMakeFiles/VerifyFortran.dir/build.make CMakeFiles/VerifyFortran.dir/requires
make[2]: Entering directory '/tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX'
make[2]: Nothing to be done for 'CMakeFiles/VerifyFortran.dir/requires'.
make[2]: Leaving directory '/tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX'
/usr/bin/make -f CMakeFiles/VerifyFortran.dir/build.make CMakeFiles/VerifyFortran.dir/build
make[2]: Entering directory '/tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX'
/usr/bin/cmake -E cmake_progress_report /tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX/CMakeFiles 1
[ 25%] Building Fortran object CMakeFiles/VerifyFortran.dir/VerifyFortran.f.o
/usr/bin/mpif90 -DVERIFY_CXX -Os -w -pipe -march=core2 -O3 -I/tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX -c /usr/share/cmake-3.2/Modules/FortranCInterface/Verify/VerifyFortran.f -o CMakeFiles/VerifyFortran.dir/VerifyFortran.f.o
Linking Fortran static library libVerifyFortran.a
/usr/bin/cmake -P CMakeFiles/VerifyFortran.dir/cmake_clean_target.cmake
/usr/bin/cmake -E cmake_link_script CMakeFiles/VerifyFortran.dir/link.txt --verbose=1
/usr/bin/ar cq libVerifyFortran.a CMakeFiles/VerifyFortran.dir/VerifyFortran.f.o
/usr/bin/ranlib libVerifyFortran.a
make[2]: Leaving directory '/tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX'
/usr/bin/cmake -E cmake_progress_report /tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX/CMakeFiles 1
[ 25%] Built target VerifyFortran
/usr/bin/make -f CMakeFiles/VerifyFortranC.dir/build.make CMakeFiles/VerifyFortranC.dir/depend
make[2]: Entering directory '/tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX'
cd /tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /usr/share/cmake-3.2/Modules/FortranCInterface/Verify /usr/share/cmake-3.2/Modules/FortranCInterface/Verify /tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX /tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX /tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX/CMakeFiles/VerifyFortranC.dir/DependInfo.cmake
Scanning dependencies of target VerifyFortranC
make[2]: Leaving directory '/tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX'
/usr/bin/make -f CMakeFiles/VerifyFortranC.dir/build.make CMakeFiles/VerifyFortranC.dir/build
make[2]: Entering directory '/tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX'
/usr/bin/cmake -E cmake_progress_report /tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX/CMakeFiles 2
[ 50%] Building C object CMakeFiles/VerifyFortranC.dir/main.c.o
/usr/bin/mpicc -DVERIFY_CXX -Os -w -pipe -march=core2 -O3 -I/tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX -o CMakeFiles/VerifyFortranC.dir/main.c.o -c /usr/share/cmake-3.2/Modules/FortranCInterface/Verify/main.c
/usr/bin/cmake -E cmake_progress_report /tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX/CMakeFiles 3
[ 75%] Building C object CMakeFiles/VerifyFortranC.dir/VerifyC.c.o
/usr/bin/mpicc -DVERIFY_CXX -Os -w -pipe -march=core2 -O3 -I/tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX -o CMakeFiles/VerifyFortranC.dir/VerifyC.c.o -c /usr/share/cmake-3.2/Modules/FortranCInterface/Verify/VerifyC.c
/usr/bin/cmake -E cmake_progress_report /tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX/CMakeFiles 4
[100%] Building CXX object CMakeFiles/VerifyFortranC.dir/VerifyCXX.cxx.o
/usr/bin/mpicxx -DVERIFY_CXX -Os -w -pipe -march=core2 -O3 -I/tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX -o CMakeFiles/VerifyFortranC.dir/VerifyCXX.cxx.o -c /usr/share/cmake-3.2/Modules/FortranCInterface/Verify/VerifyCXX.cxx
Linking CXX executable VerifyFortranC
/usr/bin/cmake -E cmake_link_script CMakeFiles/VerifyFortranC.dir/link.txt --verbose=1
/usr/bin/mpicxx -Os -w -pipe -march=core2 -O3 -L/home/linuxbrew/.linuxbrew/lib -Wl,-rpath,/home/linuxbrew/.linuxbrew/lib -L/usr/lib/gcc/x86_64-linux-gnu/5 -lgfortran CMakeFiles/VerifyFortranC.dir/main.c.o CMakeFiles/VerifyFortranC.dir/VerifyC.c.o CMakeFiles/VerifyFortranC.dir/VerifyCXX.cxx.o -o VerifyFortranC -rdynamic libVerifyFortran.a -lmpi_f90 -lmpi_f77 -lquadmath
libVerifyFortran.a(VerifyFortran.f.o): In function `verifyfortran_':
VerifyFortran.f:(.text+0x2b): undefined reference to `_gfortran_st_write'
VerifyFortran.f:(.text+0x3d): undefined reference to `_gfortran_transfer_character_write'
VerifyFortran.f:(.text+0x45): undefined reference to `_gfortran_st_write_done'
collect2: error: ld returned 1 exit status
CMakeFiles/VerifyFortranC.dir/build.make:139: recipe for target 'VerifyFortranC' failed
make[2]: Leaving directory '/tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX'
make[2]: *** [VerifyFortranC] Error 1
CMakeFiles/Makefile2:99: recipe for target 'CMakeFiles/VerifyFortranC.dir/all' failed
make[1]: Leaving directory '/tmp/trilinos20151214-30361-1lzw0bv/trilinos-12.2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX'
Makefile:78: recipe for target 'all' failed
make[1]: *** [CMakeFiles/VerifyFortranC.dir/all] Error 2
make: *** [all] Error 2
Call Stack (most recent call first):
cmake/tribits/core/package_arch/TribitsFortranMangling.cmake:50 (FortranCInterface_VERIFY)
cmake/tribits/core/package_arch/TribitsGlobalMacros.cmake:1713 (INCLUDE)
cmake/tribits/core/package_arch/TribitsProjectImpl.cmake:188 (TRIBITS_SETUP_ENV)
cmake/tribits/core/package_arch/TribitsProject.cmake:93 (TRIBITS_PROJECT_IMPL)
CMakeLists.txt:89 (TRIBITS_PROJECT)
-- Configuring incomplete, errors occurred!
=== GCC 4.8 CentOS ===
/opt/openmpi/bin/mpicxx -Os -w -pipe -march=core2 -O3 -L/home/ praveen/.linuxbrew/lib -Wl,-rpath,/home/praveen/.linuxbrew/lib -L/opt/rh/ devtoolset-2/root/usr/lib/gcc/x86_64-redhat-linux/4.8.2 -lgfortran CMakeFiles/ VerifyFortranC.dir/main.c.o CMakeFiles/VerifyFortranC.dir/VerifyC.c.o CMakeFiles/VerifyFortranC.dir/VerifyCXX.cxx.o -o VerifyFortranC libVerifyFortran.a -lmpi_f90 -lmpi_f77 -lquadmath
libVerifyFortran.a(VerifyFortran.f.o): In function `verifyfortran_':
VerifyFortran.f:(.text+0x3d): undefined reference to `_gfortran_transfer_character_write'
collect2: error: ld returned 1 exit status
gmake[2]: *** [VerifyFortranC] Error 1
gmake[2]: Leaving directory `/tmp/trilinos20151212-8095-cal2og/trilinos-12. 2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX'
gmake[1]: *** [CMakeFiles/VerifyFortranC.dir/all] Error 2
gmake[1]: Leaving directory `/tmp/trilinos20151212-8095-cal2og/trilinos-12. 2.1-Source/build/CMakeFiles/FortranCInterface/VerifyCXX'
gmake: *** [all] Error 2
Call Stack (most recent call first):
cmake/tribits/core/package_arch/TribitsFortranMangling.cmake:50 (FortranCInterface_VERIFY)
cmake/tribits/core/package_arch/TribitsGlobalMacros.cmake:1713 (INCLUDE)
cmake/tribits/core/package_arch/TribitsProjectImpl.cmake:188 (TRIBITS_SETUP_ENV)
cmake/tribits/core/package_arch/TribitsProject.cmake:93 (TRIBITS_PROJECT_IMPL)
CMakeLists.txt:89 (TRIBITS_PROJECT)
More information about the Trilinos-Users
mailing list