C11编译 systemc 2.3.3 和 SCV 2.0.1

0、准备工作

0.1 库准备

     下载systemc 的库,下载scv的库。这些都可以去https://accellera.org/downloads/standards/systemc 下载

0.2 目录说明

      以下是我的目录说明,可以参考。

      库位置:systemc和scv的库分别在 ~/CLionProjects/systemc-2.3.3 和 ~/CLionProjects/syscv-2.0.1

      安装位置:systemc和scv安装位置分别在:~/CLionProjects/sc-2.3.3 和  ~/CLionProjects/scv-2.0.1 

      在systemc-2.3.3代码目录下新建一个build文件夹。

 

1、编译Systemc

1.1 进入0.2中建立的build文件夹,生成编译配置文件:../configure --prefix=/home/guyspring/CLionProjects/sc-2.3.3/ CXXFLAGS=-std=c++11 CFLAGS=-std=c11

//--prefix后面的路径是安装目录,不是当前存放目录,如果配置成一样的,可能会出错。

1.2 编译:make -j  //(-j全核多线程编译)

1.3 安装:make install

2、编译SCV

2.1 生成编译配置文件:  ../configure --prefix=/home/guyspring/CLionProjects/scv-2.0.1/ --with-systemc=/home/guyspring/CLionProjects/sc-2.3.3/ CXXFLAGS=-std=c++11 CFLAGS=-std=c11
 

2.2 编译:make -j

2.3 安装:make install   (就是将make好的内容拷贝到2.1的目标目录中)

 

cmake_minimum_required(VERSION 3.16)
project(test_sc)

set(CMAKE_CXX_STANDARD 11)
set(INC_DIR /home/guyspring/CLionProjects/sc-2.3.3/include)
set(LINK_DIR /home/guyspring/CLionProjects/sc-2.3.3/lib-linux64)
include_directories(${INC_DIR})
link_directories(${LINK_DIR})
link_libraries(${LINK_DIR}/libsystemc.so)

#find_package(SystemCLanguage CONFIG REQUIRED)
#set (CMAKE_CXX_STANDARD ${SystemC_CXX_STANDARD})

add_executable(test_sc main.cpp test_top.cpp test_top.h)
target_link_libraries(test_sc systemc)

 

set(INC_DIR /media/guy/data/software/systemc/systemc-2.3/include)
set(LINK_DIR /media/guy/data/software/systemc/systemc-2.3/lib-linux64)
set(INC_DIR_V /media/guy/data/software/systemc/scv-2.0/include)
set(LINK_DIR_V /media/guy/data/software/systemc/scv-2.0/lib-linux64)
include_directories(${INC_DIR} ${INC_DIR_V})
link_directories(${LINK_DIR} ${LINK_DIR_V})
#link_libraries(${LINK_DIR}/libsystemc.so )
link_libraries(${LINK_DIR}/libsystemc.so ${LINK_DIR_V}/libscv.so)

 

最终导致的编译问题。带着scv编译出错,单独sc没有问题。不知道怎么回事,百思不得其解。尝试找了很多网站也没有找到解决办法。

scv-2.0/lib-linux64/libscv.so:对‘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)’未定义的引用
collect2: error: ld returned 1 exit status

编译选项中 增加一个宏,可以让这个问题消失。

ADD_DEFINITIONS(-DSC_DISABLE_API_VERSION_CHECK)

 

静态库 link_libraries时,注意 systemc的库写在后面,scv的库放在前面。否则汇报undefined refrence to xxxx 找不到sc的数据结构等。

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值