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
我正在尝试 运行 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