我正在尝试在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是让我理解问题可能存在的地方的复杂方法。关于为什么会发生这种情况的任何想法?
由于
答案 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