CRPropa / CRPropa3

CRPropa is a public astrophysical simulation framework for propagating extraterrestrial ultra-high energy particles. https://crpropa.github.io/CRPropa3/
https://crpropa.desy.de
GNU General Public License v3.0
70 stars 68 forks source link

Problem with make:"ld: symbol(s) not found for architecture arm64" #504

Open l-sulfone opened 1 month ago

l-sulfone commented 1 month ago

Dear developers,

I have problems installing CRPropa on my system System Information: (Please fill out the following information)

Did you install CRPropa from git or download a release? I installed version [3.2.1] from the releases.

Things that I tried before asking for help: I read and followed the installation instructions at https://crpropa.github.io/CRPropa3/ . Before writing this request I also checked previous installation issues at https://github.com/CRPropa/CRPropa3/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3Ainstallation+ . However, this did not work. I receive the following output after cmake and when I do make:

ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

I found someone had mentioned this before, but solved this problem without methods.

Thanks for your help again.

ArmelleJB commented 2 weeks ago

Hi, I've spent a lot of time trying to install crpropa either directly on my laptop or using a virtual python environment, and I have a very similar issue, something to do with the architecture (although not identical - please let me know if I should open a new issue). I am on MacOS Ventura 13.1, python 3.10.8 with numpy 1.26.4, swig 4.2.1, Cmake version: 3.30.4, Build Type: Release CRPropa version: 3.2.1-167-g61a6257e. I've got this error when doing make:

[ 70%] Linking CXX shared library libcrpropa.dylib
ld: warning: could not create compact unwind for _lustrf_: stack subq instruction is too different from dwarf stack size
ld: warning: could not create compact unwind for _lushow_: stack subq instruction is too different from dwarf stack size
Undefined symbols for architecture x86_64:
  "___kmpc_critical", referenced from:
      crpropa::getDataPath(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in Common.cpp.o
      crpropa::EmissionMap::load(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in EmissionMap.cpp.o
      _.omp_outlined. in ModuleList.cpp.o
      _.omp_outlined..6 in ModuleList.cpp.o
      crpropa::nuclearMass(int, int) in ParticleMass.cpp.o
      crpropa::TabularPhotonField::getPhotonDensity(double, double) const in PhotonBackground.cpp.o
      crpropa::SourceMassDistribution::setMaximalDensity(double) in Source.cpp.o
      ...
  "___kmpc_end_critical", referenced from:
      crpropa::getDataPath(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in Common.cpp.o
      crpropa::EmissionMap::load(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in EmissionMap.cpp.o
      _.omp_outlined. in ModuleList.cpp.o
      _.omp_outlined..6 in ModuleList.cpp.o
      crpropa::nuclearMass(int, int) in ParticleMass.cpp.o
      crpropa::TabularPhotonField::getPhotonDensity(double, double) const in PhotonBackground.cpp.o
      crpropa::SourceMassDistribution::setMaximalDensity(double) in Source.cpp.o
      ...
  "___kmpc_for_static_fini", referenced from:
      _.omp_outlined. in ModuleList.cpp.o
      _.omp_outlined..6 in ModuleList.cpp.o
  "___kmpc_for_static_init_8u", referenced from:
      _.omp_outlined. in ModuleList.cpp.o
      _.omp_outlined..6 in ModuleList.cpp.o
  "___kmpc_fork_call", referenced from:
      crpropa::ModuleList::run(std::__1::vector<crpropa::ref_ptr<crpropa::Candidate>, std::__1::allocator<crpropa::ref_ptr<crpropa::Candidate> > > const*, bool, bool) in ModuleList.cpp.o
      crpropa::ModuleList::run(crpropa::SourceInterface*, unsigned long, bool, bool) in ModuleList.cpp.o
  "___kmpc_global_thread_num", referenced from:
      crpropa::getDataPath(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) in Common.cpp.o
      crpropa::EmissionMap::load(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in EmissionMap.cpp.o
      crpropa::nuclearMass(int, int) in ParticleMass.cpp.o
      crpropa::TabularPhotonField::getPhotonDensity(double, double) const in PhotonBackground.cpp.o
      crpropa::SourceMassDistribution::setMaximalDensity(double) in Source.cpp.o
      crpropa::SourceMassDistribution::setXrange(double, double) in Source.cpp.o
      crpropa::SourceMassDistribution::setYrange(double, double) in Source.cpp.o
      ...
  "_omp_get_max_threads", referenced from:
      crpropa::ModuleList::run(std::__1::vector<crpropa::ref_ptr<crpropa::Candidate>, std::__1::allocator<crpropa::ref_ptr<crpropa::Candidate> > > const*, bool, bool) in ModuleList.cpp.o
      crpropa::ModuleList::run(crpropa::SourceInterface*, unsigned long, bool, bool) in ModuleList.cpp.o
  "_omp_get_num_threads", referenced from:
      crpropa::Random::getSeedThreads() in Random.cpp.o
  "_omp_get_thread_num", referenced from:
      crpropa::Clock::getInstance() in Clock.cpp.o
      crpropa::Random::instance() in Random.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [libcrpropa.dylib] Error 1
make[1]: *** [CMakeFiles/crpropa.dir/all] Error 2
make: *** [all] Error 2

Thanks in advance for your advice.

ArmelleJB commented 2 weeks ago

I managed to shut this error down by adding -DENABLE_OPENMP=OFF to disable omp, however I end up with the 4 SEGFAULF after the make test that I have seen in other issues, but still don't know how to solve...