以下所有操作都在root权限下
ubuntu16.04安装Vivado 2016.4主要是Lib的问题,需要注意的是在安装的界面,别人已经给了提示,安装到ubuntu16.4需要相应的库支持,如果不安装就会导致冲突,程序闪退,SDK起不来等问题(我已经经历过)。那么如何确定需要安装那些库文件呢?见官方回答:https://www.xilinx.com/support/answers/66184.html
大概意思是,你先把vivado和perl语言解释器装好,然后下载一个指定的perl脚本,按照特定的格式执行perl脚本,他就会显示bin文件运行缺少的依赖库文件,不同的bin要分别查询,如下是所:
perl ldd-recursive.pl /opt/Xilinx/Vivado/2016.4/bin/unwrapped/lnx64.o/vivado -uniq
/lib64/ld-linux-x86-64.so.2
libtcmalloc.so.4 => not found
libboost_signals.so => not found
librdi_common.so => not found
/lib/x86_64-linux-gnu/libc.so.6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
linux-vdso.so.1
librdi_commonmain.so => not found
/lib/x86_64-linux-gnu/libgcc_s.so.1
/lib/x86_64-linux-gnu/libm.so.6
root@chun:~/Downloads# perl ldd-recursive.pl /opt/Xilinx/Vivado/2016.4/bin/unwrapped/lnx64.o/rdi_xsdb -uniq
linux-vdso.so.1
/lib64/ld-linux-x86-64.so.2
/lib/x86_64-linux-gnu/libc.so.6
libtcl8.5.so => not found
/lib/x86_64-linux-gnu/libpthread.so.0
root@chun:~/Downloads# perl ldd-recursive.pl /opt/Xilinx/Vivado/2016.4/bin/unwrapped/lnx64.o/xsim -uniq
/lib/x86_64-linux-gnu/libpthread.so.0
librdi_common.so => not found
libtcmalloc.so.4 => not found
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
/lib64/ld-linux-x86-64.so.2
libboost_filesystem.so => not found
linux-vdso.so.1
/lib/x86_64-linux-gnu/libgcc_s.so.1
libboost_signals.so => not found
libboost_system.so => not found
/lib/x86_64-linux-gnu/libc.so.6
librdi_commonmain.so => not found
/lib/x86_64-linux-gnu/libm.so.6
root@chun:~/Downloads# perl ldd-recursive.pl /opt/Xilinx/DocNav/docnav -uniq
/usr/lib/i386-linux-gnu/libXau.so.6
/usr/lib/i386-linux-gnu/libffi.so.6
/lib/i386-linux-gnu/libdl.so.2
/usr/lib/i386-linux-gnu/libgobject-2.0.so.0
/lib/i386-linux-gnu/libc.so.6
/usr/lib/i386-linux-gnu/libX11.so.6
/usr/lib/i386-linux-gnu/libXdmcp.so.6
libQtNetwork.so.4 => not found
/usr/lib/i386-linux-gnu/libgthread-2.0.so.0
linux-gate.so.1
/lib/i386-linux-gnu/libglib-2.0.so.0
/opt/Xilinx/DocNav/libQtGui.so.4
/lib/i386-linux-gnu/libpcre.so.3
/lib/i386-linux-gnu/libpthread.so.0
/usr/lib/i386-linux-gnu/libXrender.so.1
/lib/i386-linux-gnu/libm.so.6
/usr/lib/i386-linux-gnu/libxcb.so.1
/lib/i386-linux-gnu/librt.so.1
libQtCore.so.4 => not found
/usr/lib/i386-linux-gnu/libstdc++.so.6
/usr/lib/i386-linux-gnu/libXext.so.6
/opt/Xilinx/DocNav/libQtXml.so.4
/lib/i386-linux-gnu/libz.so.1
/opt/Xilinx/DocNav/libQtCore.so.4
/opt/Xilinx/DocNav/libQtWebKit.so.4
/usr/lib/i386-linux-gnu/libfreetype.so.6
/opt/Xilinx/DocNav/libQtNetwork.so.4
/usr/lib/i386-linux-gnu/libfontconfig.so.1
/lib/i386-linux-gnu/libpng12.so.0
libSM.so.6 => not found
/lib/i386-linux-gnu/libexpat.so.1
/lib/ld-linux.so.2
libICE.so.6 => not found
/lib/i386-linux-gnu/libgcc_s.so.1
libQtGui.so.4 => not found
提示not found就是需要安装的,用apt-cache search XXX 可以找到大部分,有一个库又额外关联了一个库,我找了好久:
apt-get install libgoogle-perftools-dev
到最后,有两个库(librdi_commonmain.so和librdi_common.so)始终找不到,见下图。看了官方论坛类似问题,该库文件存在于vivado的安装目录下,但是全局环境变量却找不到,在LD_LIBRARY_PATH中增加该路径又会引发其他问题,目前我还没找到解决方案。如果谁找到了,麻烦告知我一下!
Netfpga-sume开源工程中提到,vivado2016.4在vivado下存在bug,需要在启动时设置环境变量值,我是放在.bashrc里面。不知道跟这两个库是否有啥关联
export SWT_GTK3=0
增加了这个设置,虽然这两个库找不到,但是vivado是可以正常启动和编译的,不管是gui界面还是tcl后台运行。我已经编译了一个netFPGA-SUME的网卡工程,全程无任何问题。
额外需要说明的是最好把Ubuntu系统的休眠和锁屏设置关掉,这个在ubuntu14.04出现过问题,会直接导致机器重启,亲生经历过。
后续又遇到仿真导致机器重启的情况,参考https://blog.csdn.net/m0_37962316/article/details/78279936和https://blog.csdn.net/m0_37962316/article/details/78279936操作了一下,也不知道啥原因,暂时没啥问题了