UVM-SystemC MACOSX出错

时间:2016-06-14 14:16:45

标签: macos makefile uvm systemc

我正在尝试在macosx上运行uvm-systemc。链接下载: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是让我理解问题可能存在的地方的复杂方法。关于为什么会发生这种情况的任何想法?

由于

1 个答案:

答案 0 :(得分:0)

问题是由于执行了libtool来创建没有cpp文件的库文件。 tlm1目录(和宏目录)没有任何.cpp文件,因此无需在相应的makefile中调用libtool。

由于Mac OS的UVM-SystemC不在经过测试的操作系统列表中,因此您可能会遇到更多问题。 我遇到了3个问题(包括上面提到的问题)。下面提供了解决方法。

安装完成的操作系统版本。

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

1)

命令:

第1步

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

第2步:

[base] /uvm-systemc-1.0-alpha1/objdir/ 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

修复:

更改为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)

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

第311行

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

OR

  [ 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)

命令:
   make install

错误:

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

修复:

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

3)

命令:

进行检查

错误:

[SystemC的基] /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:注意:通过这里私有继承约束   private virtual tlm_put_if&lt; PUT_DATA&gt; ,

[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:错误:继承的虚拟基类'tlm_blocking_get_if'有私有析构函数 class tlm_master_imp:

[SystemC的基] /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:注意:通过这里私有继承约束   private virtual tlm_get_peek_if&lt; GET_DATA&gt;   ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [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:错误:继承的虚拟基类'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 install

OR

[SystemC的基] /systemc-2.3.1/的包含 /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