UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Observer tas-genia
Observer
7,697 Views
Registered: ‎03-02-2015

Shared library missing with Vivado 2014.3 or 2014.4 on RHEL 6.6

Jump to solution

I'm having problems getting either 2014.3 or 2014.4 to work on a Red Hat machine. 2013.2 and 2014.1 are also installed, and they work fine. It's just the two most recent releases which fail.

 

The failure is a symbol lookup error. When I did some detective work, I found that the Xilinx setup script is correctly pointing $LD_LIBRARY_PATH at a directory where there is a library which defines the missing symbol, so somehow it's failing to find the symbol even though it should. Anyone know what's up?

 

[username@machine ~]$ source /home/username/Xilinx/Vivado/2014.4/settings64.sh

[username@machine ~]$ vivado
/home/username/Xilinx/Vivado/2014.4/bin/unwrapped/lnx64.o/vivado: symbol lookup error: /home/username/Xilinx/Vivado/2014.4/lib/lnx64.o/librdi_commonmain.so: undefined symbol: _ZN6XilReg13GetInitStringEv

[username@machine lnx64.o]$ echo $LD_LIBRARY_PATH 
/home/username/Xilinx/Vivado/2014.4/lib/lnx64.o

[username@machine lnx64.o]$ cd /home/username/Xilinx/Vivado/2014.4/bin/unwrapped/lnx64.o/

[username@machine lnx64.o]$ ldd vivado 
linux-vdso.so.1 => (0x00007fff36dff000)
libtcmalloc.so.4 => not found
libboost_signals.so => /usr/lib64/libboost_signals.so (0x00007f7934f1c000)
librdi_common.so => not found
librdi_commonmain.so => not found
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f7934c15000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f79349ff000)
libc.so.6 => /lib64/libc.so.6 (0x00007f793466b000)
libm.so.6 => /lib64/libm.so.6 (0x00007f79343e6000)
/lib64/ld-linux-x86-64.so.2 (0x00007f7935152000)

[username@machine ~]$ cd /home/username/Xilinx/Vivado/2014.4/lib/lnx64.o/

[username@machine lnx64.o]$ grep _ZN6XilReg13GetInitStringEv *
Binary file librdi_commonmain.so matches
Binary file librdi_commonxillic.so matches

[username@machine lnx64.o]$ readelf -Ws librdi_commonmain.so | grep _ZN6XilReg13GetInitStringEv
114: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _ZN6XilReg13GetInitStringEv

[username@machine lnx64.o]$ readelf -Ws librdi_commonxillic.so | grep _ZN6XilReg13GetInitStringEv
424: 000000000003ee30 57 FUNC GLOBAL DEFAULT 10 _ZN6XilReg13GetInitStringEv

[username@machine lnx64.o]$

 

0 Kudos
1 Solution

Accepted Solutions
Scholar dwisehart
Scholar
13,693 Views
Registered: ‎06-23-2013

Re: Shared library missing with Vivado 2014.3 or 2014.4 on RHEL 6.6

Jump to solution
Because ldd fails to find the two libraries:

libtcmalloc.so.4 => not found
librdi_common.so => not found
librdi_commonmain.so => not found

This means that the dynamic linker does not find these in the LD_LIBRARY_PATH, or the ones it finds are not the libraries it is looking for (32-bit vs 64-bit).

First try running 'file' on each of the missing libraries. If that does not show you anything, run:

strace -f -o /tmp/strace.out vivado

and then look through the output of strace. Search for where it looks for librdi_common, for instance. That will show you the LD_LIBRARY_PATH it is using.

Let us know what you find,
Daniel
0 Kudos
3 Replies
Scholar dwisehart
Scholar
13,694 Views
Registered: ‎06-23-2013

Re: Shared library missing with Vivado 2014.3 or 2014.4 on RHEL 6.6

Jump to solution
Because ldd fails to find the two libraries:

libtcmalloc.so.4 => not found
librdi_common.so => not found
librdi_commonmain.so => not found

This means that the dynamic linker does not find these in the LD_LIBRARY_PATH, or the ones it finds are not the libraries it is looking for (32-bit vs 64-bit).

First try running 'file' on each of the missing libraries. If that does not show you anything, run:

strace -f -o /tmp/strace.out vivado

and then look through the output of strace. Search for where it looks for librdi_common, for instance. That will show you the LD_LIBRARY_PATH it is using.

Let us know what you find,
Daniel
0 Kudos
Observer tas-genia
Observer
7,673 Views
Registered: ‎03-02-2015

Re: Shared library missing with Vivado 2014.3 or 2014.4 on RHEL 6.6

Jump to solution

Daniel, thanks for the suggestion of using strace. I was able to figure out what's happening by examining the log.

 

It turns out this machine had the AR #56630 tactical patch for 2013.2 installed. It appears that Vivado offers two paths for installing tactical patches: either overwrite original files with patched files, or point $MYVIVADO at the unpacked tactical patch directory. This machine had it installed via the latter method, and $MYVIVADO was getting set regardless of tool version. AR #56630 targeted 2013.2, and its versions of the libraries don't work with sufficiently recent Vivado versions.

 

"unset MYVIVADO ; vivado" got 2014.4 to launch. I'm going to re-do the tactical patch install by overwriting 2013.2 files so we don't have to set $MYVIVADO any more.

 

0 Kudos
Highlighted
Observer scy86dev
Observer
575 Views
Registered: ‎11-01-2018

Re: Shared library missing with Vivado 2014.3 or 2014.4 on RHEL 6.6

Jump to solution
What was the solution here? I've installed Vivado 2018 on CentOS 7 and I'm missing those same two libraries
librdi_common
librdi_commonmain

Any follow-up advice on what I can try would be appreciated.
0 Kudos