c++ - Mac OS X 10.9.5 上的 HealPix C++ 链接错误

标签 c++ macos x86-64 ld

我已经在运行 OS X 10.9.5 的 Linux 和 MacBookPro 上成功安装并测试了 HealPix 3.11。在 Mac OS 上编译 healpix 库时,在配置脚本中我选择了“cxx”和“osx”。 注意:在 linux 系统上它工作得很好。

但是,在我的 OS X 系统上,当我尝试将它用于我自己的简单 healpix 示例时,它可以编译但无法正确链接。以下是我收到的链接错误:

    Scanning dependencies of target garage-diff-sphericaldomain-demo1
[100%] Building CXX object CMakeFiles/bin/garage-diff-sphericaldomain-demo1.dir/src/demos/fft-demos/diff-sphericaldomain-demo1.cxx.o
Linking CXX executable bin/garage-diff-sphericaldomain-demo1
Undefined symbols for architecture x86_64:
  "std::string::find_last_not_of(char const*, unsigned long, unsigned long) const", referenced from:
      trim(std::string const&) in libcxxsupport.a(string_utils.o)
  "std::string::find_first_not_of(char const*, unsigned long, unsigned long) const", referenced from:
      trim(std::string const&) in libcxxsupport.a(string_utils.o)
  "std::string::find(char const*, unsigned long, unsigned long) const", referenced from:
      parse_file(std::string const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >&) in libcxxsupport.a(string_utils.o)
      parse_cmdline_equalsign(int, char const**, std::vector<std::string, std::allocator<std::string> > const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >&) in libcxxsupport.a(string_utils.o)
  "std::string::compare(char const*) const", referenced from:
      planck_failure__(char const*, int, char const*, std::string const&) in libcxxsupport.a(error_handling.o)
      parse_file(std::string const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >&) in libcxxsupport.a(string_utils.o)
      parse_cmdline_equalsign(int, char const**, std::vector<std::string, std::allocator<std::string> > const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >&) in libcxxsupport.a(string_utils.o)
      parse_words_from_file(std::string const&, std::vector<std::string, std::allocator<std::string> >&) in libcxxsupport.a(string_utils.o)
  "std::ctype<char>::_M_widen_init() const", referenced from:
      planck_failure__(char const*, int, char const*, std::string const&) in libcxxsupport.a(error_handling.o)
      operator<<(std::ostream&, pointing const&) in libcxxsupport.a(pointing.o)
      parse_file(std::string const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >&) in libcxxsupport.a(string_utils.o)
      parse_cmdline_equalsign(int, char const**, std::vector<std::string, std::allocator<std::string> > const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >&) in libcxxsupport.a(string_utils.o)
      intToString(long, unsigned long) in libcxxsupport.a(string_utils.o)
  "std::istream& std::istream::_M_extract<double>(double&)", referenced from:
      void stringToData<double>(std::string const&, double&) in libcxxsupport.a(string_utils.o)
  "std::istream& std::istream::_M_extract<long double>(long double&)", referenced from:
      void stringToData<long double>(std::string const&, long double&) in libcxxsupport.a(string_utils.o)
  "std::istream& std::istream::_M_extract<float>(float&)", referenced from:
      void stringToData<float>(std::string const&, float&) in libcxxsupport.a(string_utils.o)
  "std::istream& std::istream::_M_extract<unsigned int>(unsigned int&)", referenced from:
      void stringToData<unsigned int>(std::string const&, unsigned int&) in libcxxsupport.a(string_utils.o)
  "std::istream& std::istream::_M_extract<long>(long&)", referenced from:
      void stringToData<long>(std::string const&, long&) in libcxxsupport.a(string_utils.o)
  "std::istream& std::istream::_M_extract<unsigned long>(unsigned long&)", referenced from:
      void stringToData<unsigned long>(std::string const&, unsigned long&) in libcxxsupport.a(string_utils.o)
  "std::istream& std::istream::_M_extract<unsigned short>(unsigned short&)", referenced from:
      void stringToData<unsigned short>(std::string const&, unsigned short&) in libcxxsupport.a(string_utils.o)
  "std::istream& std::istream::_M_extract<long long>(long long&)", referenced from:
      void stringToData<long long>(std::string const&, long long&) in libcxxsupport.a(string_utils.o)
  "std::istream& std::istream::_M_extract<unsigned long long>(unsigned long long&)", referenced from:
      void stringToData<unsigned long long>(std::string const&, unsigned long long&) in libcxxsupport.a(string_utils.o)
  "std::istream::operator>>(int&)", referenced from:
      void stringToData<int>(std::string const&, int&) in libcxxsupport.a(string_utils.o)
  "std::istream::operator>>(short&)", referenced from:
      void stringToData<short>(std::string const&, short&) in libcxxsupport.a(string_utils.o)
  "std::ostream::put(char)", referenced from:
      planck_failure__(char const*, int, char const*, std::string const&) in libcxxsupport.a(error_handling.o)
      operator<<(std::ostream&, pointing const&) in libcxxsupport.a(pointing.o)
      parse_file(std::string const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >&) in libcxxsupport.a(string_utils.o)
      parse_cmdline_equalsign(int, char const**, std::vector<std::string, std::allocator<std::string> > const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >&) in libcxxsupport.a(string_utils.o)
  "std::ostream::flush()", referenced from:
      planck_failure__(char const*, int, char const*, std::string const&) in libcxxsupport.a(error_handling.o)
      operator<<(std::ostream&, pointing const&) in libcxxsupport.a(pointing.o)
      parse_file(std::string const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >&) in libcxxsupport.a(string_utils.o)
      parse_cmdline_equalsign(int, char const**, std::vector<std::string, std::allocator<std::string> > const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >&) in libcxxsupport.a(string_utils.o)
  "std::ostream& std::ostream::_M_insert<double>(double)", referenced from:
      operator<<(std::ostream&, pointing const&) in libcxxsupport.a(pointing.o)
      std::string dataToString<double>(double const&) in libcxxsupport.a(string_utils.o)
      std::string dataToString<float>(float const&) in libcxxsupport.a(string_utils.o)
  "std::ostream& std::ostream::_M_insert<long double>(long double)", referenced from:
      std::string dataToString<long double>(long double const&) in libcxxsupport.a(string_utils.o)
  "std::ostream& std::ostream::_M_insert<long>(long)", referenced from:
      intToString(long, unsigned long) in libcxxsupport.a(string_utils.o)
      std::string dataToString<long>(long const&) in libcxxsupport.a(string_utils.o)
  "std::ostream& std::ostream::_M_insert<unsigned long>(unsigned long)", referenced from:
      std::string dataToString<unsigned long>(unsigned long const&) in libcxxsupport.a(string_utils.o)
      std::string dataToString<unsigned short>(unsigned short const&) in libcxxsupport.a(string_utils.o)
      std::string dataToString<unsigned int>(unsigned int const&) in libcxxsupport.a(string_utils.o)
  "std::ostream& std::ostream::_M_insert<long long>(long long)", referenced from:
      std::string dataToString<long long>(long long const&) in libcxxsupport.a(string_utils.o)
  "std::ostream& std::ostream::_M_insert<unsigned long long>(unsigned long long)", referenced from:
      std::string dataToString<unsigned long long>(unsigned long long const&) in libcxxsupport.a(string_utils.o)
  "std::ostream::operator<<(int)", referenced from:
      planck_failure__(char const*, int, char const*, std::string const&) in libcxxsupport.a(error_handling.o)
      parse_file(std::string const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >&) in libcxxsupport.a(string_utils.o)
      std::string dataToString<int>(int const&) in libcxxsupport.a(string_utils.o)
  "std::ostream::operator<<(short)", referenced from:
      std::string dataToString<short>(short const&) in libcxxsupport.a(string_utils.o)
  "std::string::_M_leak_hard()", referenced from:
      tolower(std::string const&) in libcxxsupport.a(string_utils.o)
  "std::string::_Rep::_M_destroy(std::allocator<char> const&)", referenced from:
      PlanckError::~PlanckError() in libcxxsupport.a(error_handling.o)
      PlanckError::~PlanckError() in libcxxsupport.a(error_handling.o)
      planck_failure__(char const*, int, char const*, char const*) in libcxxsupport.a(error_handling.o)
      string2HealpixScheme(std::string const&) in libhealpix_cxx.a(healpix_tables.o)
      (anonymous namespace)::end_stringToData(std::string const&, char const*, std::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >&) in libcxxsupport.a(string_utils.o)
      void stringToData<std::string>(std::string const&, std::string&) in libcxxsupport.a(string_utils.o)
      void stringToData<bool>(std::string const&, bool&) in libcxxsupport.a(string_utils.o)
      ...
  "std::string::_Rep::_S_empty_rep_storage", referenced from:
      PlanckError::~PlanckError() in libcxxsupport.a(error_handling.o)
      PlanckError::~PlanckError() in libcxxsupport.a(error_handling.o)
      planck_failure__(char const*, int, char const*, char const*) in libcxxsupport.a(error_handling.o)
      string2HealpixScheme(std::string const&) in libhealpix_cxx.a(healpix_tables.o)
      std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in libhealpix_cxx.a(healpix_tables.o)
      (anonymous namespace)::end_stringToData(std::string const&, char const*, std::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >&) in libcxxsupport.a(string_utils.o)
      void stringToData<std::string>(std::string const&, std::string&) in libcxxsupport.a(string_utils.o)
      ...
  "std::string::_Rep::_S_create(unsigned long, unsigned long, std::allocator<char> const&)", referenced from:
      char* std::string::_S_construct<char*>(char*, char*, std::allocator<char> const&, std::forward_iterator_tag) in libcxxsupport.a(string_utils.o)
  "std::string::append(char const*, unsigned long)", referenced from:
      std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in libhealpix_cxx.a(healpix_tables.o)
      std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*) in libhealpix_cxx.a(healpix_tables.o)
      (anonymous namespace)::end_stringToData(std::string const&, char const*, std::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >&) in libcxxsupport.a(string_utils.o)
      void stringToData<bool>(std::string const&, bool&) in libcxxsupport.a(string_utils.o)
      void split<float>(std::string const&, std::vector<float, std::allocator<float> >&) in libcxxsupport.a(string_utils.o)
      void split<double>(std::string const&, std::vector<double, std::allocator<double> >&) in libcxxsupport.a(string_utils.o)
      void split<int>(std::string const&, std::vector<int, std::allocator<int> >&) in libcxxsupport.a(string_utils.o)
      ...
  "std::string::append(std::string const&)", referenced from:
      std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in libhealpix_cxx.a(healpix_tables.o)
      (anonymous namespace)::end_stringToData(std::string const&, char const*, std::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >&) in libcxxsupport.a(string_utils.o)
      std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) in libcxxsupport.a(string_utils.o)
  "std::string::assign(char const*, unsigned long)", referenced from:
      parse_cmdline_classic(int, char const**, std::vector<std::string, std::allocator<std::string> > const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >&) in libcxxsupport.a(string_utils.o)
      parse_cmdline_equalsign(int, char const**, std::vector<std::string, std::allocator<std::string> > const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >&) in libcxxsupport.a(string_utils.o)
  "std::string::assign(std::string const&)", referenced from:
      void stringToData<std::string>(std::string const&, std::string&) in libcxxsupport.a(string_utils.o)

  "VTT for std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >", referenced from:
      std::string dataToString<short>(short const&) in libcxxsupport.a(string_utils.o)
      std::string dataToString<double>(double const&) in libcxxsupport.a(string_utils.o)
      std::string dataToString<long long>(long long const&) in libcxxsupport.a(string_utils.o)
      std::string dataToString<long double>(long double const&) in libcxxsupport.a(string_utils.o)
      std::string dataToString<unsigned long>(unsigned long const&) in libcxxsupport.a(string_utils.o)
      intToString(long, unsigned long) in libcxxsupport.a(string_utils.o)
      std::string dataToString<long>(long const&) in libcxxsupport.a(string_utils.o)
      ...
  "vtable for std::basic_filebuf<char, std::char_traits<char> >", referenced from:
      parse_file(std::string const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >&) in libcxxsupport.a(string_utils.o)
      parse_words_from_file(std::string const&, std::vector<std::string, std::allocator<std::string> >&) in libcxxsupport.a(string_utils.o)
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "vtable for std::basic_ifstream<char, std::char_traits<char> >", referenced from:
      parse_file(std::string const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > >&) in libcxxsupport.a(string_utils.o)
      parse_words_from_file(std::string const&, std::vector<std::string, std::allocator<std::string> >&) in libcxxsupport.a(string_utils.o)
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "vtable for std::basic_streambuf<char, std::char_traits<char> >", referenced from:
      void stringToData<long double>(std::string const&, long double&) in libcxxsupport.a(string_utils.o)
      void stringToData<double>(std::string const&, double&) in libcxxsupport.a(string_utils.o)
      void stringToData<float>(std::string const&, float&) in libcxxsupport.a(string_utils.o)
      void stringToData<unsigned long long>(std::string const&, unsigned long long&) in libcxxsupport.a(string_utils.o)
      void stringToData<long long>(std::string const&, long long&) in libcxxsupport.a(string_utils.o)
      void stringToData<unsigned long>(std::string const&, unsigned long&) in libcxxsupport.a(string_utils.o)
      void stringToData<long>(std::string const&, long&) in libcxxsupport.a(string_utils.o)
      ...
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "vtable for std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >", referenced from:
      void stringToData<long double>(std::string const&, long double&) in libcxxsupport.a(string_utils.o)
      void stringToData<double>(std::string const&, double&) in libcxxsupport.a(string_utils.o)
      void stringToData<float>(std::string const&, float&) in libcxxsupport.a(string_utils.o)
      void stringToData<unsigned long long>(std::string const&, unsigned long long&) in libcxxsupport.a(string_utils.o)
      void stringToData<long long>(std::string const&, long long&) in libcxxsupport.a(string_utils.o)
      void stringToData<unsigned long>(std::string const&, unsigned long&) in libcxxsupport.a(string_utils.o)
      void stringToData<long>(std::string const&, long&) in libcxxsupport.a(string_utils.o)
      ...
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "vtable for std::basic_istringstream<char, std::char_traits<char>, std::allocator<char> >", referenced from:
      void stringToData<long double>(std::string const&, long double&) in libcxxsupport.a(string_utils.o)
      void stringToData<double>(std::string const&, double&) in libcxxsupport.a(string_utils.o)
      void stringToData<float>(std::string const&, float&) in libcxxsupport.a(string_utils.o)
      void stringToData<unsigned long long>(std::string const&, unsigned long long&) in libcxxsupport.a(string_utils.o)
      void stringToData<long long>(std::string const&, long long&) in libcxxsupport.a(string_utils.o)
      void stringToData<unsigned long>(std::string const&, unsigned long&) in libcxxsupport.a(string_utils.o)
      void stringToData<long>(std::string const&, long&) in libcxxsupport.a(string_utils.o)
      ...
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "vtable for std::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >", referenced from:
      std::string dataToString<short>(short const&) in libcxxsupport.a(string_utils.o)
      std::string dataToString<double>(double const&) in libcxxsupport.a(string_utils.o)
      std::string dataToString<long long>(long long const&) in libcxxsupport.a(string_utils.o)
      std::string dataToString<long double>(long double const&) in libcxxsupport.a(string_utils.o)
      std::string dataToString<unsigned long>(unsigned long const&) in libcxxsupport.a(string_utils.o)
      intToString(long, unsigned long) in libcxxsupport.a(string_utils.o)
      std::string dataToString<long>(long const&) in libcxxsupport.a(string_utils.o)
      ...
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "vtable for std::basic_ios<char, std::char_traits<char> >", referenced from:
      void stringToData<long double>(std::string const&, long double&) in libcxxsupport.a(string_utils.o)
      void stringToData<double>(std::string const&, double&) in libcxxsupport.a(string_utils.o)
      void stringToData<float>(std::string const&, float&) in libcxxsupport.a(string_utils.o)
      void stringToData<unsigned long long>(std::string const&, unsigned long long&) in libcxxsupport.a(string_utils.o)
      void stringToData<long long>(std::string const&, long long&) in libcxxsupport.a(string_utils.o)
      void stringToData<unsigned long>(std::string const&, unsigned long&) in libcxxsupport.a(string_utils.o)
      void stringToData<long>(std::string const&, long&) in libcxxsupport.a(string_utils.o)
      ...
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
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]: *** [bin/garage-diff-sphericaldomain-demo1] Error 1
make[1]: *** [CMakeFiles/bin/garage-diff-sphericaldomain-demo1.dir/all] Error 2
make: *** [all] Error 2

此错误仅来自 libcxxsupport.a 链接静态库,这非常奇怪。

这是 FindHealPix.cmake 的链接我用来编译程序的文件。如前所述,我已经在linux ubuntu 14.04版本的机器上编译链接没有问题。

最佳答案

最后我找到了让它工作的方法。

由于在 Healpix_3.11 库中使用了 OpenMP,我开始收到其他类型的错误,我不明白这是为什么。这个错误看起来像这样:

    Undefined symbols for architecture x86_64:
      "_GOMP_critical_end", referenced from:
          _sharp_execute_job._omp_fn.0 in libsharp.a(sharp.o)
      "_GOMP_critical_start", referenced from:
          _sharp_execute_job._omp_fn.0 in libsharp.a(sharp.o)
      "_GOMP_loop_dynamic_next", referenced from:
          _sharp_execute_job._omp_fn.0 in libsharp.a(sharp.o)
          _phase2map._omp_fn.2 in libsharp.a(sharp.o)
          _map2phase._omp_fn.1 in libsharp.a(sharp.o)
          _gauss_legendre_tbl._omp_fn.0 in libsharp.a(sharp_geomhelpers.o)
      "_GOMP_loop_dynamic_start", referenced from:
          _sharp_execute_job._omp_fn.0 in libsharp.a(sharp.o)
          _phase2map._omp_fn.2 in libsharp.a(sharp.o)
          _map2phase._omp_fn.1 in libsharp.a(sharp.o)
          _gauss_legendre_tbl._omp_fn.0 in libsharp.a(sharp_geomhelpers.o)
      "_GOMP_loop_end", referenced from:
          _sharp_execute_job._omp_fn.0 in libsharp.a(sharp.o)
          _phase2map._omp_fn.2 in libsharp.a(sharp.o)
          _map2phase._omp_fn.1 in libsharp.a(sharp.o)
      "_GOMP_loop_end_nowait", referenced from:
          _gauss_legendre_tbl._omp_fn.0 in libsharp.a(sharp_geomhelpers.o)
      "_GOMP_parallel_end", referenced from:
...

但在谷歌搜索后我发现这个错误是因为 Clang APPLE 编译器不允许使用 -fopenmp 标志。因此,我必须找到一种方法来强制我的 CMakeLists.txt 在我的项目中使用 gcc 和 g++。

所以,问题出在 Clang Mac OS X 10.9.5 编译器上。以下是分步快速回答:

  1. 确保您的gccg++ 编译器位于/usr/bin/usr/local/bin分别链接到 gcc-49g++-4.9Check here for help.
  2. 确保您的 CMake 正在调用 g++gcc 编译器,而不是 APPLE Clang 编译器。如果您在运行 cmake 时收到以下消息。 这意味着您的 cmake 正在调用 Clang。

-- The C compiler identification is AppleClang 5.1.0.5030040

-- The CXX compiler identification is AppleClang 5.1.0.5030040

  1. 您可以通过在 CMakeLists.txt 中的 project() 行上方声明以下行来轻松更改上述行为。在我看来是这样的:
 ...
 if(APPLE)
 SET(CMAKE_C_COMPILER_INIT gcc)
 SET(CMAKE_CXX_COMPILER_INIT g++)
 endif(APPLE)

 project(Healpix)
 ...

有关 CMake 编译器结帐的更多帮助 another stackoverflow answerChange CMake compiler/tools .

编辑:

运行一个测试例子,比如this one ,您可以使用终端命令行:

g++ healpix-demo1.cxx -I/usr/local/opt/cfitsio/include -I/Users/gsingh/Programming/garage/third-party/Healpix_3.11/src/cxx/c_utils -I/Users/gsingh/Programming/garage/third-party/Healpix_3.11/src/cxx/libfftpack -I/Users/gsingh/Programming/garage/third-party/Healpix_3.11/src/cxx/libsharp -I/Users/gsingh/Programming/garage/third-party/Healpix_3.11/src/cxx/cxxsupport -I/Users/gsingh/Programming/garage/third-party/Healpix_3.11/src/cxx/Healpix_cxx -L. -L/Users/gsingh/Programming/garage/third-party/Healpix_3.11/src/cxx/osx/lib -fopenmp -fPIC -O2 -ffast-math -fomit-frame-pointer /Users/gsingh/Programming/garage/third-party/Healpix_3.11/src/cxx/osx/lib/libhealpix_cxx.a /Users/gsingh/Programming/garage/third-party/Healpix_3.11/src/cxx/osx/lib/libcxxsupport.a /Users/gsingh/Programming/garage/third-party/Healpix_3.11/src/cxx/osx/lib/libsharp.a /Users/gsingh/Programming/garage/third-party/Healpix_3.11/src/cxx/osx/lib/libfftpack.a /Users/gsingh/Programming/garage/third-party/Healpix_3.11/src/cxx/osx/lib/libc_utils.a -L/usr/local/opt/cfitsio/lib -lcfitsio

关于c++ - Mac OS X 10.9.5 上的 HealPix C++ 链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26662757/

相关文章:

assembly - 我可以将 64 位常量添加到 64 位寄存器吗?

c++ - OpenMP 原子和非原子读/写在 x86_64 上产生相同的指令

swift - 重新激活 NSApplication 并取消隐藏 NSWindow 作为 Swift 中的菜单栏应用程序?

xcode - Mac 上的 Flutter 项目(从 Windows 复制过来的)

assembly - ".align"指令在 x86-64 汇编中意味着什么?

c++ - 这个特定代码的时间复杂度是多少?

macos - 没有这样的小桶 :/usr/local/Cellar/git

c++ - 在qt c++中替换编码字符串的 "="

c++ - 使用 continue 无限循环

c++ - 友元函数默认模板 : Intel ICPC warning