Jesse Feng
Jesse Feng

Reputation: 161

Conda installed gfortran and gcc cannot compile executables

On Linux 64, after creating an environment, I installed gfortran with conda install conda-forge::gfortran. I see that it installed gfortran 14 and gcc 14. Then I installed openmpi with conda install openmpi, and it installed mpi-1.0.

Commands like which mpirun and which mpicc give the locations /bin/mpirun and /bin/mpicc. Looks normal to me.

But when trying to configure FFTW, it fails to compile executable. And I used the following example c code:

#include <stdio.h>
int main() {   
    int number;
   
    printf("Enter an integer: ");  
    
    // reads and stores input
    scanf("%d", &number);

    // displays output
    printf("You entered: %d", number);
    
    return 0;
}

and tried to compile something myself with mpicc printInteger.c, it gives the following output:

/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/13.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: warning: libstdc++.so.6, needed by /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73, not found (try using -rpath or -rpath-link)
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/13.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `__cxa_throw_bad_array_new_length@CXXABI_1.3.8'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/13.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `std::condition_variable::condition_variable()@GLIBCXX_3.4.11'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/13.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `std::__throw_system_error(int)@GLIBCXX_3.4.11'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/13.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `std::condition_variable::~condition_variable()@GLIBCXX_3.4.11'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/13.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `std::condition_variable::notify_all()@GLIBCXX_3.4.11'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/13.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `vtable for __cxxabiv1::__class_type_info@CXXABI_1.3'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/13.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `std::__once_call@GLIBCXX_3.4.11'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/13.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `std::condition_variable::wait(std::unique_lock<std::mutex>&)@GLIBCXX_3.4.11'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/13.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `std::__once_callable@GLIBCXX_3.4.11'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/13.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `__once_proxy@GLIBCXX_3.4.11'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/13.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `__gxx_personality_v0@CXXABI_1.3'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/13.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `__dynamic_cast@CXXABI_1.3'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/13.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `vtable for __cxxabiv1::__si_class_type_info@CXXABI_1.3'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/13.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `vtable for __cxxabiv1::__vmi_class_type_info@CXXABI_1.3'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/13.3.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `operator delete(void*, unsigned long)@CXXABI_1.3.9'
collect2: error: ld returned 1 exit status

The config.log of fftw has similar message when trying to compile a test c code:

configure:4496: mpicc    conftest.c  >&5
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/14.1.0/../../../../x86_64-conda-linux-gnu/bin/ld: warning: libstdc++.so.6, needed by /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73, not found (try using -rpath or -rpath-link)
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/14.1.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `__cxa_throw_bad_array_new_length@CXXABI_1.3.8'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/14.1.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `std::condition_variable::condition_variable()@GLIBCXX_3.4.11'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/14.1.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `std::__throw_system_error(int)@GLIBCXX_3.4.11'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/14.1.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `std::condition_variable::~condition_variable()@GLIBCXX_3.4.11'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/14.1.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `std::condition_variable::notify_all()@GLIBCXX_3.4.11'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/14.1.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `vtable for __cxxabiv1::__class_type_info@CXXABI_1.3'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/14.1.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `std::__once_call@GLIBCXX_3.4.11'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/14.1.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `std::condition_variable::wait(std::unique_lock<std::mutex>&)@GLIBCXX_3.4.11'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/14.1.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `std::__once_callable@GLIBCXX_3.4.11'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/14.1.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `__once_proxy@GLIBCXX_3.4.11'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/14.1.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `__gxx_personality_v0@CXXABI_1.3'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/14.1.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `__dynamic_cast@CXXABI_1.3'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/14.1.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `vtable for __cxxabiv1::__si_class_type_info@CXXABI_1.3'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/14.1.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `vtable for __cxxabiv1::__vmi_class_type_info@CXXABI_1.3'
/home/zhangxifen/miniconda3/envs/f2018/bin/../lib/gcc/x86_64-conda-linux-gnu/14.1.0/../../../../x86_64-conda-linux-gnu/bin/ld: /home/zhangxifen/miniconda3/envs/f2018/lib/./././libicuuc.so.73: undefined reference to `operator delete(void*, unsigned long)@CXXABI_1.3.9'

Reading a few posts here, I tried installing a different set of compilers with conda install conda-forge::compilers and it installed version 13 of gfortran and gcc, and I can verify that version 13 is currently active, but mpicc compilation still fails.

Anything else I can try? Did I install the wrong version of gfortran/gcc to work with openmpi?

Upvotes: 0

Views: 62

Answers (1)

Jesse Feng
Jesse Feng

Reputation: 161

The issue is gfortran and gcc version 14 is not compatible or something with FFTW 3.3.10. Downgrading both to version 12.1.0 worked fine.

Upvotes: 1

Related Questions