SystemC 未定义架构符号 x86_64

SystemC undefined Symbol for architecture x86_64

我正在尝试 运行 SystemC on XCode on mac(使用标准的 Clang 编译器)。根据语言的方言,我会收到不同的错误消息。如果我使用 C++14,我会得到错误

No member named 'experimental' in namespace 'std'

如果我使用标准的 c++17,我会收到错误消息

Undefined symbols for architecture x86_64:
  "sc_core::sc_api_version_2_3_3_cxx201402L<&(sc_core::SC_DISABLE_VIRTUAL_BIND_UNDEFINED_)>::sc_api_version_2_3_3_cxx201402L(sc_core::sc_writer_policy)", referenced from:
      ___cxx_global_var_init in main.o
ld: symbol(s) not found for architecture x86_64

类似的问题已得到回答,但答案是 "One of the files didn't have cstdlib included as a header file",但没有指定该文件。有谁知道为什么会出现该错误或缺少 header 的文件是什么?

对于 SystemC,kernelmodel 需要在启用同一组现代 C++ 功能的情况下进行编译,请参阅 RELEASENOTESINSTALL 包中的文件。默认情况下,SystemC 使用当前选择的编译器 C++ 标准(即来自 -std=c++17)。

要构建 SystemC 以跨不同的 C++ 标准设置使用,请将预处理器标志 SC_CPLUSPLUS 显式定义为构建两者时所需的 最低 版本,内核 你的模特。

例如

  • 使用 -std=c++11(又名 SC_CPLUSPLUS=201103L)构建 SystemC
  • 根据需要使用更新的 C++ 标准构建模型,但将 -DSC_CPLUSPLUS=201103L 添加到编译器标志中。

SC_CPLUSPLUS 支持的值为:

  • 199711L (C++03, ISO/IEC 14882:1998, 14882:2003)
  • 201103L(C++11,ISO/IEC 14882:2011)
  • 201402L(C++14,ISO/IEC 14882:2014)
  • 201703L(C++17,ISO/IEC 14882:2017)

如果 SystemC 2.3.3 不能与某些 version/configuration 的 Xcode Clang 编译器一起使用,您可以考虑在 https://github.com/accellera-official/systemc.

提出问题