Skip to content

RaiSim 2.4.2 binaries are not compatible with Ubuntu 22.04 #3

@hajicastle

Description

@hajicastle

Ubuntu 22.04 build fails because RaiSim 2.4.2 binaries require GLIBC 2.38 and GLIBCXX 3.4.32

Description

I am trying to build RaiSim2 on Ubuntu 22.04, which is listed in the installation documentation as a supported platform:

Linux: Ubuntu 22.04 or newer is recommended. x86 builds require AVX2.

However, the current RaiSim 2.4.2 prebuilt libraries appear to require newer GLIBC and libstdc++ symbols that are not available on a standard Ubuntu 22.04 installation.

The build reaches the linking stage, but fails with references to GLIBC_2.38, GLIBCXX_3.4.31, and GLIBCXX_3.4.32.

Environment

  • OS: Ubuntu 22.04 LTS
  • Architecture: x86_64
  • CPU AVX2 support: Yes
  • Python: 3.10
  • RaiSim version: 2.4.2
  • Compiler: GCC/G++ from the standard Ubuntu 22.04 repositories
  • GLIBC version: 2.35
  • Build type: Release
  • Repository: raisimTech/raisim2Lib
  • Commit: <paste output of git rev-parse HEAD>

Steps to reproduce

git clone https://github.com/raisimTech/raisim2Lib.git
cd raisim2Lib

git submodule update --init --recursive

source ./raisim_env.sh

rm -rf build

cmake -S . -B build \
  -DCMAKE_BUILD_TYPE=Release \
  -DRAISIM_EXAMPLE=ON \
  -DRAISIM_PY=ON

cmake --build build -j2

Actual result

The compilation succeeds, but linking the examples fails:

/usr/bin/ld: ../../raisim/lib/libassimpd.so.6.0.2: undefined reference to `__isoc23_strtoull@GLIBC_2.38'
/usr/bin/ld: ../../raisim/lib/libraisimd.so.2.4.2: undefined reference to `__isoc23_sscanf@GLIBC_2.38'
/usr/bin/ld: ../../raisim/lib/libraisimd.so.2.4.2: undefined reference to `__isoc23_strtoul@GLIBC_2.38'
/usr/bin/ld: ../../raisim/lib/libraisimd.so.2.4.2: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace_cold(char*, unsigned long, char const*, unsigned long, unsigned long)@GLIBCXX_3.4.31'
/usr/bin/ld: ../../raisim/lib/openusd/libusd_gf.so: undefined reference to `fmodf@GLIBC_2.38'
/usr/bin/ld: ../../raisim/lib/libraisimd.so.2.4.2: undefined reference to `std::ios_base_library_init()@GLIBCXX_3.4.32'
/usr/bin/ld: ../../raisim/lib/libraisimd.so.2.4.2: undefined reference to `__isoc23_strtol@GLIBC_2.38'
/usr/bin/ld: ../../raisim/lib/libraisimd.so.2.4.2: undefined reference to `fmod@GLIBC_2.38'
collect2: error: ld returned 1 exit status

The same issue occurs while linking both sphere_drop and primitive_grid.

Expected result

The examples should build successfully on a standard Ubuntu 22.04 installation, because Ubuntu 22.04 is listed as a recommended supported platform.

Additional checks

Ubuntu version:

cat /etc/os-release

GLIBC version:

ldd --version | head -n 1

AVX2 support:

grep -m1 -o avx2 /proc/cpuinfo

Required symbol versions in the provided RaiSim libraries can also be checked with:

readelf --version-info raisim/lib/libraisim.so.2.4.2 \
  | grep -E 'GLIBC_2.38|GLIBCXX_3.4.3[12]'

readelf --version-info raisim/lib/libraisimd.so.2.4.2 \
  | grep -E 'GLIBC_2.38|GLIBCXX_3.4.3[12]'

Possible cause

It appears that the distributed Linux binaries may have been built on a newer Linux environment, possibly one providing GLIBC 2.38 and GCC/libstdc++ symbols up to GLIBCXX 3.4.32.

Ubuntu 22.04 normally provides GLIBC 2.35, so binaries that directly depend on GLIBC 2.38 cannot be linked or executed there.

Could you please confirm whether the current RaiSim 2.4.2 Linux binaries are intended to support Ubuntu 22.04?

If Ubuntu 22.04 is still supported, could you provide binaries built against the Ubuntu 22.04 toolchain or an older compatible GLIBC version?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions