解决VCS运行及makefile问题:libelf.so.1;undefined reference to ‘xxx‘;recipe for target ‘product timestamp‘等

关于本文

从零开始学习VCS,之前手打命令成功跑过vcs仿真,这次希望通过makefile实现自动化,遇到了许多问题,花了三四个小时熬到凌晨3点才解决,记录一下我的感想。
接下来这些问题如果你在网上搜一下会发现很多都有被讨论过,甚至有些十分幼稚,类似于码农“debug两小时发现是一个分号用了全角”的这类令人啼笑皆非的错误,这里也记录下来。

环境

Ubuntu16.04;
vcs2016;
已将 gcc 和 g++ 降级为 4.8。这一点还挺关键,可以避免后面的许多问题。

进击的调试之路

第一版makefile

超级简陋的makefile
会这么写显然是没先去网上找找别人的脚本,不过找到了也看不懂那一堆命令是啥意思。如此简陋的makefile能运行才怪了。
注意如果直接在终端输入:

vcs -f filelist +v2k -debug_all

是可以正常运行的,但如果想make com就会看到下面这个错误:
在这里插入图片描述
这是关于共享库文件 libelf.so.1 文件的错误,在网上搜索后发现许多程序编译也会出现这类错误,包括各种 libxxx.so.x 等的错误。最开始我查到应当要找到 libelf.so.1 文件的位置并添加到 ld.so.conf里去:

echo "/usr/.../libelf.so.1">>/etc/ld.so.conf
ldconfig

失败了,然后认为是vcs需要32位的 libelf.so.1 的问题,就去安装各种32位的共享库文件,比如这样:

apt-get install libelf-dev:i386

或者是去解决 gcc、g++ 版本兼容性的问题:

apt-get install gcc-multilib g++-multilib

还真有效果,不过是头痛医头,脚痛医脚的效果,因为后来又出现了一堆 libgcclibstdc++ 等各种文件的错误。

最后,解决方案十分简单,只需要加上一条这样的命令:

-full64

在这里插入图片描述

第二版makefile

加上了-full64
一劳永逸地解决了libxxx.x文件的问题。虽然仅这么一个问题折磨了我两个多小时,
然后是一番震撼的景象:
在这里插入图片描述
在这里插入图片描述
这两个问题在网上都有人提出过,解决方案是加上下面的命令:

-cpp g++-4.8
-cc gcc-4.8
-LDFLAGS -Wl,--no-as-needed

具体的原因我没有去深究,但总之和 gcc、g++ 版本有关。所以安装vcs之前就请先把 gcc 和 g++ 的版本降下来。

最终版makefile

最终版makefile
就这些问题让我熬到凌晨3点,想想挺无语的。最后这版只要环境没问题我想应该可以拿去直接用了吧,配合dve可以看到波形了,随便仿了个状态机。

make com
make sim

在这里插入图片描述

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值