System学习笔记 - MacOs编译环境配置(一)

前言

好几年没有记录过东西,一是确实很忙,二是人也变懒了。新年开个新的学习计划,希望能坚持下去。

SystemC

简介

SystemC是一个建模语言,其本质是一个C++的库,一般用于SoC建模,具体介绍不赘述,百度都可以搜到,这里只讲怎么使用配置

代码下载

可以去systemc.org下载,也可以直接从github.com下载。我使用的是git@github.com:accellera-official/systemc.git

INSTALL

下载下来后,systemc目录下就有一个INSTALL.md描述如何编译安装SystemC,以下的内容其实也就是在复述整个过程。

编译环境

使用的是Macos的Clang作为Systemc的编译器,CPU ARCH是X86

复制代码
Apple clang version 14.0.3 (clang-1403.0.22.14.1)
Target: x86_64-apple-darwin22.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

1

配置CXX环境变量

2

在systemc目录下输入./config/bootstrap生成配置文件

3

在systemc目录下创建编译文件夹objdir,并切到该文件夹下

4

在objdir目录下,使用.../configure 'CXXFLAGS=-std=c++17' --prefix=XXXXXX来生成configure配置,其中CXXFLAGS是指定c++17,这是systemc要求的。prefix是指定systemc的安装目录。

5

make即可完成安装

复制代码
make
make check
make install

6

验证example下的内容

6.1

修改配置文件,主要修改的是Makefile.config中的配置。

Makefile.rules中的SYSTEMC_LDFLAGS暂时没看懂LD的啥,先删掉,不然报错

复制代码
diff --git a/examples/build-unix/Makefile.config b/examples/build-unix/Makefile.config
index a4643291..d0d4635f 100644
--- a/examples/build-unix/Makefile.config
+++ b/examples/build-unix/Makefile.config
@@ -34,13 +34,13 @@
 ## guess config from environment

 ## Variable that points to SystemC installation path
-SYSTEMC_HOME?=../../../..
+SYSTEMC_HOME?=/Users/XXXX/Tools/systemc

 ## Select the target architecture
-#TARGET_ARCH = linux
+TARGET_ARCH = macosx64

 ## Select the architecture suffix, if necessary
-#ARCH_SUFFIX = -$(TARGET_ARCH)
+ARCH_SUFFIX = -$(TARGET_ARCH)

 ## How to instruct the dynamic linker to locate the SystemC library
 #LDFLAG_RPATH = -Wl,-rpath=
@@ -49,18 +49,19 @@ SYSTEMC_HOME?=../../../..
 FLAGS_COMMON = -g -Wall
 FLAGS_STRICT = -pedantic -Wno-long-long
 FLAGS_WERROR = -Werror
+FLAGS_COMPILER = -std=c++17

 # combined flags
-#SYSTEMC_CXXFLAGS = $(FLAGS_COMMON) $(FLAGS_STRICT) $(FLAGS_WERROR)
+SYSTEMC_CXXFLAGS = $(FLAGS_COMMON) $(FLAGS_STRICT) $(FLAGS_WERROR) $(FLAGS_COMPILER)

 # Additional preprocessor symbols
 #SYSTEMC_DEFINES =

 # Explicit location of the SystemC headers
-#SYSTEMC_INC_DIR = $(SYSTEMC_HOME)/include
+SYSTEMC_INC_DIR = $(SYSTEMC_HOME)/include

 # Explicit location if the SystenC library
-#SYSTEMC_LIB_DIR = $(SYSTEMC_HOME)/lib$(ARCH_SUFFIX)
+SYSTEMC_LIB_DIR = $(SYSTEMC_HOME)/lib$(ARCH_SUFFIX)

 # Run with valgrind
 #VALGRIND=valgrind --log-file-exactly=valgrind.log
diff --git a/examples/build-unix/Makefile.rules b/examples/build-unix/Makefile.rules
index d5ac2271..45cd25ac 100644
--- a/examples/build-unix/Makefile.rules
+++ b/examples/build-unix/Makefile.rules
@@ -59,8 +59,7 @@ SYSTEMC_LIB_DIR  ?= $(SYSTEMC_HOME)/lib$(ARCH_SUFFIX)

 SYSTEMC_DEFINES  ?=
 SYSTEMC_CXXFLAGS ?= $(FLAGS_COMMON) $(FLAGS_STRICT) $(FLAGS_WERROR)
-SYSTEMC_LDFLAGS  ?= -L $(SYSTEMC_LIB_DIR) \
-                    $(LDFLAG_RPATH)$(SYSTEMC_LIB_DIR)
+SYSTEMC_LDFLAGS  ?= -L $(SYSTEMC_LIB_DIR)
 SYSTEMC_LIBS     ?= -lsystemc -lm

 ## Add 'PTHREADS=1' to command line for a pthreads build
6.2

编译example,以FFT里的FLPT为例子,进入对应文件夹,直接make,如下图,没有报错,会在该目录下生成fft_flpt.x

执行.x文件,即可看到simulation输出

Linux

Linux下的安装应该可以参考下面的链接:

https://blog.sina.com.cn/s/blog_8346031301010jh9.html

相关推荐
摇滚侠4 小时前
零基础小白自学 Git_Github 教程,解决分支合并冲突,笔记14
笔记·git·github
c***21294 小时前
Springboot3学习(5、Druid使用及配置)
android·学习
GISer_Jing5 小时前
jx前端架构学习
前端·学习·架构
初级炼丹师(爱说实话版)5 小时前
JAVA泛型作用域与静态方法泛型使用笔记
java·开发语言·笔记
遇到困难睡大觉哈哈6 小时前
Harmony os——ArkTS 语言笔记(六):模块、导入导出与 `this` 关键字
笔记·harmonyos·鸿蒙
Zeku6 小时前
20251125 - 韦东山Linux第三篇笔记【上】
linux·笔记·单片机
灰灰勇闯IT6 小时前
隐语MOOC三期学习感悟:解锁数据要素流通的“三维认知”与落地逻辑
笔记·学习
好奇龙猫6 小时前
日语学习-日语知识点小记-构建基础-JLPT-N3阶段-二阶段(25):语法和单词 第5-6课
学习
calvinpaean6 小时前
VGGT 论文学习
学习
毕设源码-邱学长6 小时前
【开题答辩全过程】以 基于Java的公职备考在线学习系统的设计与实现为例,包含答辩的问题和答案
java·开发语言·学习