尝试在 mac 安装 systemC,可能因为有安装 gem5 的经历,导致对 mac 完全不是 linux 这件事有了深刻的心理阴影。所以在安装 systemC 的时候潜意识也会觉得有一堆问题甚至到最后发现完全不能安装(为此可能也潜意识放弃了很多尝试解决的办法)。今天意外安装成功了,特此记录一下。
CXX 环境问题
其实最关键的原因就是 mac 默认的 C 编译环境是 clang (无论是输入 gcc
还是 clang
结果都是使用 clang
,如果要用 brew
安装的 gcc
,具体需要用 g++-10
之类的命令)
安装 systemc
安装 gcc
环境
我此时的版本是 gcc version 10.2.0 (Homebrew GCC 10.2.0_4)
但是我觉得应该各个版本都可以
1 | brew install gcc |
但是注意这个时候输入 gcc
或者 g++
都还是 clang
,要想使用 gcc
应该用 gcc-10
或者 g++-10
然后设置 make
中的 CXX
环境
1 | export CXX=g++-10 |
官网下载 systemc 安装包
https://www.accellera.org/downloads/standards/systemc
我下载的是 SystemC 2.3.3 (Includes TLM),其中的 zip 和 tar.gz 都可以。
然后解压缩到以后都会保存到的位置,比如我个人习惯在
1 | /Users/luolie/Documents/systemc-2.3.3 |
新建配置目录
进入相关目录下 (systemc-2.3.3)
1 | cd systemc-2.3.3 |
新建配置临时目录
1 | mkdir objdir |
进行相关配置
主要是配置 ../configure [option]
这里的 [option]
建议加
-
--with-arch-suffix=
: 要不然生成的文件会是lib-macosx64
这样的,如果加上这个参数,则直接就是lib
- 还可以设置一下以下参数
1 | --disable-shared do not build shared library (libsystemc.so) |
make
然后 make
就好啦,中间会有一些 c 文件的问题,但是不是 error。
1 | make |
然后可以 rm -rf objdir
移除临时目录,但个人建议不要,这个可以留着以后 make uninstall
自己测试一下
编写代码
随便找个位置(不一定在 systemc 目录)编写如下代码
1 | // hello.h |
1 | // hello.cpp |
特别注意,这里主程序虽然和 C++ 的
main
函数的输入参数相同,一般main
我们会省略这两个参数,但是这里这两个参数不能省略!!!
即不能int sc_mian() {...}
不然会报错
测试
- 首先添加一个
bash
的全局环境变量$SYSTEMC_HOME
(这里用export
但实际使用建议写入 bash)
1 | # export SYSTEMC_HOME=path/to/systemc-2.3.3 |
- 编译(后面可以为此做一个 make 或者 scons)
1 | g++-10 hello.cpp -o hello.o -L $SYSTEMC_HOME/lib -I $SYSTEMC_HOME/include -l systemc |
这里逐个参数讲解一下
g++-10
: 使用g++
version10 作为编译器hello.cpp
: 编译的主文件-o hello.o
: 输出文件名-L $SYSTEMC_HOME/lib
: 第一个寻找的库文件目录-I $SYSTEMC_HOME/include
: 第一个寻找的头文件目录-l systemc
: 在上面库文件寻找名叫libsystemc.a
的动态库文件
- 运行一下
1 | ./hello.o |
输出
1 | SystemC 2.3.3-Accellera --- Apr 26 2021 16:46:59 |
耶!
参考文献
https://github.com/accellera-official/systemc/blob/master/INSTALL.md
https://stackoverflow.com/questions/25961573/how-to-use-and-install-systemc-in-terminal-mac-os-x