概述
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的数据结构等。
最后
以上就是细心短靴为你收集整理的C11编译 systemc 2.3.3 和 SCV 2.0.1的全部内容,希望文章能够帮你解决C11编译 systemc 2.3.3 和 SCV 2.0.1所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复