Ubuntu 24.04 LTSへアップグレードとVivadoの対応

すごくひさびさにブログを書いています。 ここ数年はSNSへ細かく投稿してたのですがじょじょにブログへ戻していこうと思っています。

さてさて、4/25にUbuntu 24.04LTSがリリースされたので早速アップグレードしました。 Ubuntu 22.04LTSからのアップグレードを行ったのですがストレートに24.04LTSにアップグレードはできません。 これは7月にリリースされる24.04.1LTSで対応されるのだろうと思います。

そこで、まずは23.10にアップグレードしてから24.04LTSへアップグレードを行います。

/etc/update-manager/release-upgradesPrompt=ltsnormalに変更して23.10に、ltsに戻して24.04LTSへアップグレードします。 特に問題なくアップグレードが行えます。

Vivadoの対応

24.04LTSにすると問題が発生するかなと思ったら、XSIMでつぎのようなエラーが発生しました。

$ /opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/g++ -Wa,-W  -O -fPIC  -m64  -shared  -o "xsim.dir/work/xsc/dpi.so" "xsim.dir/work/xsc/sample.lnx64.o"     -L/opt/Xilinx/Vivado/2022.2/lib/lnx64.o -lrdi_simulator_kernel  -lrdi_xsim_systemc -std=c++11 -L/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/Default  -B/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ 
/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ld: /lib/x86_64-linux-gnu/libm.so.6: unknown type [0x13] section `.relr.dyn'
/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ld: skipping incompatible /lib/x86_64-linux-gnu/libm.so.6 when searching for /lib/x86_64-linux-gnu/libm.so.6
/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ld: cannot find /lib/x86_64-linux-gnu/libm.so.6
/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ld: /lib/x86_64-linux-gnu/libm.so.6: unknown type [0x13] section `.relr.dyn'
/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ld: skipping incompatible /lib/x86_64-linux-gnu/libm.so.6 when searching for /lib/x86_64-linux-gnu/libm.so.6
/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ld: /lib/x86_64-linux-gnu/libmvec.so.1: unknown type [0x13] section `.relr.dyn'
/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ld: skipping incompatible /lib/x86_64-linux-gnu/libmvec.so.1 when searching for /lib/x86_64-linux-gnu/libmvec.so.1
/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ld: cannot find /lib/x86_64-linux-gnu/libmvec.so.1
/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ld: /lib/x86_64-linux-gnu/libmvec.so.1: unknown type [0x13] section `.relr.dyn'
/opt/Xilinx/Vivado/2022.2/lib/lnx64.o/../../tps/lnx64/gcc-6.2.0/bin/../../binutils-2.37/bin/ld: skipping incompatible /lib/x86_64-linux-gnu/libmvec.so.1 when searching for /lib/x86_64-linux-gnu/libmvec.so.1
collect2: error: ld returned 1 exit status

Vivadoはbinutilsの2.37をかならず要求するようです。 Ubuntu 24.04LTSのbinutilsは2.42です。 そこでVivadoのbinutilsを2.42に入れ替えてしまいます。

$ wget http://ftp.gnu.org/gnu/binutils/binutils-2.42.tar.bz2
$ tar xvf binutils-2.42.tar.bz2
$ cd binutils-2.42
$ ./configure --prefix=/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.42/
$ make
$ make install

$ cd /opt/Xilinx/Vivado/2022.2/tps/lnx64
$ sudo mv binutils-2.37 binutils-2.37.org
$ sudo mv binutils-2.42 binutils-2.37

または

$ cd /opt/Xilinx/Vivado/2022.2/tps/lnx64
$ sudo mv binutils-2.37 binutils-2.37.org

$ wget http://ftp.gnu.org/gnu/binutils/binutils-2.42.tar.bz2
$ tar xvf binutils-2.42.tar.bz2
$ cd binutils-2.42
$ ./configure --prefix=/opt/Xilinx/Vivado/2022.2/tps/lnx64/binutils-2.37/
$ make
$ make install

これでXSIMが正常にコンパイルできシミュレーションが実行できます。

write: 2024/05/01/ 00:00:00