UVM-SystemC MACOSX 报错

UVM-SystemC MACOSX make error

我正在尝试 运行 macosx 上的 uvm-systemc。 Link 下载:http://accellera.org/images/downloads/drafts-review/uvm-systemc-1.0-alpha1.tar.gz

在安装流程中,../configure 工作正常,但在 make 时出现此错误:

Making all in macros
  CCLD   libmacros.la
ar: no archive members specified
usage:  ar -d [-TLsv] archive file ...
    ar -m [-TLsv] archive file ...
    ar -m [-abiTLsv] position archive file ...
    ar -p [-TLsv] archive [file ...]
    ar -q [-cTLsv] archive file ...
    ar -r [-cuTLsv] archive file ...
    ar -r [-abciuTLsv] position archive file ...
    ar -t [-TLsv] archive [file ...]
    ar -x [-ouTLsv] archive [file ...]
make[4]: *** [libmacros.la] Error 1
make[3]: *** [all-recursive] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all] Error 2
make: *** [all-recursive] Error 1

网上查了一下,好像是makefile的问题。然而,uvm-systemc makefile 对我来说太复杂了,无法理解问题可能出在哪里。关于为什么会发生这种情况的任何想法?

谢谢

问题是由于正在执行 libtool 以创建没有 cpp 文件的库文件。 tlm1 目录(和 macros 目录)没有任何 .cpp 文件,因此无需在各自的 makefile 中调用 libtool。

由于 Mac OS 的 UVM-SystemC 不在已测试列表中 OS 你可能 运行 还有一些问题。 我 运行 分为 3 期(包括上面提到的那期)。下面提供了解决方法。

安装完成的 OS 版本。

ProductName:    Mac OS X
ProductVersion: 10.11.4
BuildVersion:   15E65

1)

命令:

步骤 1

../configure --with-systemc=[systemC-Base]/systemc-2.3.1

第 2 步:

[基础]/uvm-systemc-1.0-alpha1/objdir/制作

错误:

Making all in macros
  CCLD   libmacros.la
ar: no archive members specified
usage:  ar -d [-TLsv] archive file ...
    ar -m [-TLsv] archive file ...
    ar -m [-abiTLsv] position archive file ...
    ar -p [-TLsv] archive [file ...]
    ar -q [-cTLsv] archive file ...
    ar -r [-cuTLsv] archive file ...
    ar -r [-abciuTLsv] position archive file ...
    ar -t [-TLsv] archive [file ...]
    ar -x [-ouTLsv] archive [file ...]
make[4]: *** [libmacros.la] Error 1
make[3]: *** [all-recursive] Error 1
make[2]: *** [all-recursive] Error 1
make[1]: *** [all] Error 2
make:  [all-recursive] Error 1

修复:


更改为 2 个文件

[ objdir - 是 运行 make 脚本的临时目录]

[base]/uvm-systemc-1.0-alpha1/objdir/src/uvmsc/tlm1/Makefile - 注释掉 libtool 运行.

第 314 行

#       $(AM_V_CCLD)$(LINK)  $(libtlm1_la_OBJECTS) $(libtlm1_la_LIBADD) $(LIBS)

[base]/uvm-systemc-1.0-alpha1/objdir/src/uvmsc/macros/Makefile

第 311 行

  #       $(AM_V_CCLD)$(LINK)  $(libmacros_la_OBJECTS) $(libmacros_la_LIBADD) $(LIBS)

  [ for this you have to re-run  
 ../configure --with-systemc=[systemC-Base]/systemc-2.3.1 
   so that it can recreated the 
 <base>/uvm-systemc-1.0-alpha1/objdir/src/uvmsc/tlm1/Makefile
 and the 
  [base]/uvm-systemc-1.0-alpha1/objdir/src/uvmsc/macros/Makefile ]

注释掉基础文件中的libtool 运行。

[基础]/uvm-systemc-1.0-alpha1/src/uvmsc/tlm1/Makefile.in

第 314 行

#       $(AM_V_CCLD)$(LINK)  $(libtlm1_la_OBJECTS) $(libtlm1_la_LIBADD) $(LIBS)

[基础]/uvm-systemc-1.0-alpha1/src/uvmsc/macros/Makefile

第 311 行

  #       $(AM_V_CCLD)$(LINK)  $(libmacros_la_OBJECTS) $(libmacros_la_LIBADD) $(LIBS)

————————————

2)

命令:
安装

错误:

/bin/sh: ../../../config/install-sh: 权限被拒绝

修复:

 [[base]/uvm-systemc-1.0-alpha1/objdir]  chmod +x   ../config/install-sh 

3)

命令:

检查

错误:

[systemC-base]/systemc-2.3.1/include/tlm_core/tlm_1/tlm_req_rsp/tlm_channels/tlm_req_rsp_channels/tlm_put_get_imp.h:32:3: 注意:这里受限于私有继承 私有虚拟 tlm_put_if< PUT_DATA > ,

[systemC-base]/systemc-2.3.1/include/tlm_core/tlm_1/tlm_req_rsp/tlm_channels/tlm_req_rsp_channels/tlm_put_get_imp.h:87:7: 错误:继承的虚拟基 class 'tlm_blocking_get_if' 具有私有析构函数 class tlm_master_imp :

[systemC-base]/systemc-2.3.1/include/tlm_core/tlm_1/tlm_req_rsp/tlm_channels/tlm_req_rsp_channels/tlm_put_get_imp.h:33:3: 注意:这里受限于私有继承 私人虚拟 tlm_get_peek_if< GET_DATA > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [systemc-base]/systemc-2.3.1/include/tlm_core/tlm_1/tlm_req_rsp/tlm_channels/tlm_req_rsp_channels/tlm_put_get_imp.h:87:7: 错误:继承的虚拟基 class 'tlm_nonblocking_get_if' 具有私有析构函数

——————————

修复:

————————————

这似乎是一个与编译器相关的问题。也许在某些平台上这没问题,但在这个平台上失败了。 要解决此问题,需要更新 systemC 安装的源文件。 您可以更新源文件并重新安装 - gmake install (systemC) 或者只更新包含文件。

[systemC-base]/systemc-2.3.1/src/tlm_core/tlm_1/tlm_req_rsp/tlm_channels/tlm_req_rsp_channels/tlm_put_get_imp.h

[systemC-Base]/obj/ - gmake 安装

[systemC-base]/systemc-2.3.1/include/tlm_core/tlm_1/tlm_req_rsp/tlm_channels/tlm_req_rsp_channels/tlm_put_get_imp.h

更改第 31,32 行

class tlm_put_get_imp :    
  private virtual tlm_put_if< PUT_DATA > ,    
  public  virtual tlm_get_peek_if< GET_DATA > // change from  private to public - private fails

更改行 86,87

class tlm_master_imp :
  private tlm_put_get_imp< REQ , RSP > ,
  public virtual tlm_master_if< REQ , RSP > // change from  private to public - private fails