The release tarball ships its CMake package files under lib/, but onnxruntimeTargets.cmake resolves the library as <prefix>/lib64. Ubuntu is multiarch, so CMake does not search lib64 for packages and ld.so does not search /usr/local/lib64 at all, leaving find_package(onnxruntime) failing on a stock install. Keep the libraries in lib64, move only the package files to lib/cmake, and add lib64 to the linker path.
66 lines
2.8 KiB
Bash
Executable File
66 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Install build dependencies for dora-zed on Ubuntu 24.04 x86_64 (CUDA 12).
|
|
# Skips any component that is already installed.
|
|
# Uses aria2c for fast parallel downloads if available, otherwise falls back to wget.
|
|
# Downloads are placed in ./tmp relative to this script for inspection.
|
|
set -euo pipefail
|
|
|
|
ZED_VERSION="5.2"
|
|
ORT_VERSION="1.24.4"
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
TMP_DIR="${SCRIPT_DIR}/../tmp"
|
|
mkdir -p "$TMP_DIR"
|
|
|
|
download() {
|
|
local url="$1" dest="$2"
|
|
if command -v aria2c &>/dev/null; then
|
|
aria2c -x 16 -s 16 -d "$(dirname "$dest")" -o "$(basename "$dest")" "$url"
|
|
else
|
|
wget -O "$dest" "$url"
|
|
fi
|
|
}
|
|
|
|
# --- ZED SDK ---
|
|
if [ -d /usr/local/zed ]; then
|
|
echo ">>> ZED SDK already installed at /usr/local/zed — skipping."
|
|
else
|
|
echo ">>> Downloading ZED SDK ${ZED_VERSION} for Ubuntu 24.04 (CUDA 12)..."
|
|
download \
|
|
"https://download.stereolabs.com/zedsdk/${ZED_VERSION}/cu12/ubuntu24" \
|
|
"${TMP_DIR}/ZED_SDK.run"
|
|
chmod +x "${TMP_DIR}/ZED_SDK.run"
|
|
echo ">>> Installing ZED SDK (silent)..."
|
|
sudo "${TMP_DIR}/ZED_SDK.run" -- silent skip_python skip_tools
|
|
fi
|
|
|
|
# --- ONNX Runtime (C++ GPU, installs to /usr/local) ---
|
|
if [ -f /usr/local/lib64/libonnxruntime.so ] && [ -d /usr/local/lib/cmake/onnxruntime ]; then
|
|
echo ">>> ONNX Runtime already installed — skipping."
|
|
else
|
|
echo ">>> Downloading ONNX Runtime ${ORT_VERSION} GPU..."
|
|
download \
|
|
"https://github.com/microsoft/onnxruntime/releases/download/v${ORT_VERSION}/onnxruntime-linux-x64-gpu-${ORT_VERSION}.tgz" \
|
|
"${TMP_DIR}/onnxruntime-linux-x64-gpu-${ORT_VERSION}.tgz"
|
|
echo ">>> Extracting..."
|
|
tar -xzf "${TMP_DIR}/onnxruntime-linux-x64-gpu-${ORT_VERSION}.tgz" -C "${TMP_DIR}"
|
|
echo ">>> Installing ONNX Runtime to /usr/local..."
|
|
sudo mkdir -p /usr/local/include/onnxruntime
|
|
sudo cp -r "${TMP_DIR}/onnxruntime-linux-x64-gpu-${ORT_VERSION}/include/"* /usr/local/include/onnxruntime/
|
|
sudo mkdir -p /usr/local/lib64
|
|
sudo cp -r "${TMP_DIR}/onnxruntime-linux-x64-gpu-${ORT_VERSION}/lib/"* /usr/local/lib64/
|
|
# onnxruntimeTargets.cmake resolves the library as <prefix>/lib64, but Ubuntu
|
|
# is multiarch: CMake does not search lib64 for packages and ld.so does not
|
|
# search /usr/local/lib64 at all. Move only the package files to lib/cmake
|
|
# and put lib64 on the linker path.
|
|
sudo mkdir -p /usr/local/lib/cmake
|
|
sudo rm -rf /usr/local/lib/cmake/onnxruntime
|
|
sudo mv /usr/local/lib64/cmake/onnxruntime /usr/local/lib/cmake/
|
|
sudo rmdir /usr/local/lib64/cmake
|
|
echo /usr/local/lib64 | sudo tee /etc/ld.so.conf.d/onnxruntime.conf > /dev/null
|
|
sudo ldconfig
|
|
fi
|
|
|
|
echo ">>> Done. You can now run: mkdir -p build && cd build && cmake .. && make install"
|
|
echo ">>> Downloaded files are in ${TMP_DIR}"
|