Become a leader in the IoT community!
Join our community of embedded and IoT practitioners to contribute experience, learn new skills and collaborate with other developers with complementary skillsets.
Join our community of embedded and IoT practitioners to contribute experience, learn new skills and collaborate with other developers with complementary skillsets.
Why will there be issues while trying to build the Boot to Gecko (B2G) project on my x86-64 Ubuntu 12.10 system. The Gecko build fails when attempting to link `librt`, even though the library is present on my system.
When running the build command for Gecko:
$ ./build.sh -j1 gecko
The error occurs during the linking step:
TEST-PASS | check-sync-dirs.py | /home/user/src/MOZILLA/B2G/gecko/js/src/config <= /home/user/src/MOZILLA/B2G/gecko/config
/home/user/src/MOZILLA/B2G/prebuilt/linux-x86/toolchain/i686-android-linux-4.4.3/bin/../lib/gcc/i686-android-linux/4.4.3/../../../../i686-android-linux/bin/ld: cannot find -lrt
collect2: ld returned 1 exit status
I expected the build process to complete successfully, as the necessary libraries, including `librt`, are present on my system.
The linker (`ld`) fails to find `librt` despite the library being installed. The following command shows that `librt.so` exists in several locations:
$ locate librt.so
/home/user/src/MOZILLA/B2G/prebuilt/linux-x86/toolchain/i686-linux-glibc2.7-4.4.3/sysroot/usr/lib/librt.so
/home/user/src/MOZILLA/B2G/prebuilt/linux-x86/toolchain/i686-linux-glibc2.7-4.4.3/sysroot/usr/lib/librt.so.1
/home/user/src/MOZILLA/B2G/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6/sysroot/usr/lib/librt.so
/home/user/src/MOZILLA/B2G/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6/sysroot/usr/lib/librt.so
/lib/i386-linux-gnu/librt.so.1
/lib/x86_64-linux-gnu/librt.so.1
/usr/lib/x86_64-linux-gnu/librt.so
Despite the presence of the library in both `x86_64` and `i386` directories, the build fails to locate `librt`.
Just worried why the linker is unable to find `librt` even though it’s installed and located in the system, any help?
@marveeamasi The issue you’re facing is likely due to a mismatch between the 32-bit toolchain you’re using and the 64-bit libraries installed on your system. The build process is trying to link against `librt`, but it requires the 32-bit version, while your system likely has only the 64-bit version available.
To fix this, you need to install the 32-bit version of `librt` and its dependencies. You can do this by running:
“`
sudo apt-get install libc6:i386 lib32gcc1 lib32stdc++6 lib32rt1
“`
Afterward, ensure the 32-bit libraries are in the linker’s search path and then retry the build. This should resolve the issue and allow the build to proceed successfully.
It did ✅
CONTRIBUTE TO THIS THREAD