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

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

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

 

你可能感兴趣的:(C11编译 systemc 2.3.3 和 SCV 2.0.1)