Wind River Support Network

HomeDefectsLIN7-132
Fixed

LIN7-132 : /etc/ld.so.cache is empty for 64bit targets. (ldconfig is not looking in /lib64 and /usr/lib64)

Created: Jun 13, 2014    Updated: Mar 31, 2016
Resolved Date: Jun 24, 2014
Found In Version: 7.0
Fix Version: 7.0
Severity: Standard
Applicable for: Wind River Linux 7
Component/s: Build & Config

Description

As part of the "do_rootfs" step of an image build, ldconfig is run to update the /etc/ld.so.cache file.
This works good for a 32-bit build, but for a 64bit it produces an almost empty file.
This is because ldconfig is only looking in /lib and /usr/lib, but for 64bit builds the libraries are in /lib64 and /usr/lib64.

This causes problems for example when libraries or application uses dlopen.
libc is one such case that will fail in some cases when it cannot find a shared library.

For majority of programs this will not be noticed, but never the less it does cause problems.

( The code that calls ldconfig is in oe-core/meta/classes/image.bbclass)

Workaround

After booting the target a 'ldconfig' will correctly create the cache.

Steps to Reproduce

Build a 32bit image and look at the size of /etc/ld.so.cache (also see in the do_rootfs bitbake log file) to see that it indeed is looking good.
Do the same for a 64bit build and see that the file is more or less empty.
(Seen comparing inte-xeon-core to a p4080 32bit build, but also just comparing inte-xeon-core 32 <> 64bit)

Ex: 
configure --enable-board=intel-xeon-core --enable-kernel=standard --enable-rootfs=glibc_small
configure --enable-board=intel-xeon-core-32 --enable-kernel=standard --enable-rootfs=glibc_small
Live chat
Online