Unpack the libcudnn deb archive and install the .so file to $(TARGET_DIR). libcudnn.so.8.0.0 was corrupted after target-finalize. I found it was caused by patchelf v0.9. After upgrading to patchelf v0.13,it worked. target-finalize log: ++ /home/gyd/work/hito_jetson/out/host/bin/patchelf --print-rpath /home/gyd/work/hito_jetson/out/target/usr/lib/aarch64-linux-gnu/libcudnn.so.8.0.0 + rpath='$ORIGIN' + test 0 -ne 0 ++ chmod -c u+w /home/gyd/work/hito_jetson/out/target/usr/lib/aarch64-linux-gnu/libcudnn.so.8.0.0 + changed= ++ echo '$ORIGIN' ++ sed 's@/home/gyd/work/hito_jetson/out/per-package/[^/]\+/host@/home/gyd/work/hito_jetson/out/host@' + changed_rpath='$ORIGIN' + test '$ORIGIN' '!=' '$ORIGIN' + /home/gyd/work/hito_jetson/out/host/bin/patchelf --make-rpath-relative /home/gyd/work/hito_jetson/out/target --no-standard-lib-dirs /home/gyd/work/hito_jetson/out/target/usr/lib/aarch64-linux-gnu /libcudnn.so.8.0.0 # ldconfig /sbin/ldconfig.real: file /usr/lib/aarch64-linux-gnu/libcudnn.so.8.0.0 is truncated
According to Fabrice Fontaine, the update to patchelf 0.13 fixes this. The update to patchelf 0.13 has been committed as of https://git.buildroot.org/buildroot/commit/?id=257881e6e99b766f2a9466c7713e48cbcb96161c.