Why will there be issues while trying to build the Boot to Gecko (B2G) project on my x86-64 Ubuntu

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
$ ./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
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
$ 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?
2 Replies
Enthernet Code
Enthernet Code3mo ago
@Marvee Amasi 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
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.
Marvee Amasi
Marvee Amasi3mo ago
It did ✅
Want results from more Discord servers?
Add your server