fix linker rpath for sdk binaries
v2 cover fix linker rpath for sdk binaries
From: Nitin A Kamble <[email protected]>
Also added rpath-link fix in v2.
Thanks,
Nitin
The following changes since commit 1c19181599c41d8f0bd7f06efc654fe61c3d0bb1:
iptables: fix build error against 3.2+ kernel headers (2012-03-24 00:12:05 +0000)
are available in the git repository at:
git://git.pokylinux.org/poky-contrib nitin/bugfix
http://git.pokylinux.org/cgit.cgi/poky-contrib/log/?h=nitin/bugfix
Nitin A Kamble (1):
bitbake.conf: fix rpath for sdk executables
meta/conf/bitbake.conf | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
Signature · 1 line
1.7.6.4
PATCH v2 1/1 bitbake.conf: fix rpath for sdk executables
From: Nitin A Kamble <[email protected]>
This makes the libraries located in places like this findable:/usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib
Which avoids linking sdk executables with host libraries like this:
$ ldd /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/bin/x86_64-oe-linux/x86_64-oe-linux-gdb
linux-vdso.so.1 => (0x00007fffb7fff000)
libreadline.so.6 => /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/x86_64-oe-linux/../libreadline.so.6 (0x00007fbfb5511000)
libdl.so.2 => /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/libdl.so.2 (0x00007fbfb530c000)
libncurses.so.5 => /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/libncurses.so.5 (0x00007fbfb50e9000)
libtinfo.so.5 => /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/libtinfo.so.5 (0x00007fbfb4ec2000)
libz.so.1 => /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/x86_64-oe-linux/../libz.so.1 (0x00007fbfb4cac000)
libm.so.6 => /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/libm.so.6 (0x00007fbfb4a2a000)
libpthread.so.0 => /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/libpthread.so.0 (0x00007fbfb480d000)
libutil.so.1 => /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/libutil.so.1 (0x00007fbfb4609000)
libexpat.so.1 => /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/x86_64-oe-linux/../libexpat.so.1 (0x00007fbfb43e0000)
libc.so.6 => /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/libc.so.6 (0x00007fbfb4059000)
/usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x0000003f05000000)--- meta/conf/bitbake.conf | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
meta/conf/bitbake.conf +2 -0
@@ -480,7 +480,9 @@ export BUILD_LDFLAGS = "-L${STAGING_LIBDIR_NATIVE} \ BUILDSDK_LDFLAGS = "-L${STAGING_LIBDIR} \ -Wl,-rpath-link,${STAGING_LIBDIR} \ + -Wl,-rpath-link,${STAGING_LIBDIR}/.. \ -Wl,-rpath,${libdir} -Wl,-O1 \ + -Wl,-rpath,${libdir}/.. -Wl,-O1 \ -L${STAGING_DIR_HOST}${base_libdir} \ -Wl,-rpath-link,${STAGING_DIR_HOST}${base_libdir} \ -Wl,-rpath,${base_libdir} -Wl,-O1"
Signature · 1 line
1.7.6.4
Re: [patch v2 1/1] bitbake.conf: fix rpath for sdk executables
Quoted 31 lines · On Fri, 2012-03-23 at 22:02 -0700, [email protected] wrote:
From: Nitin A Kamble <[email protected]>
This makes the libraries located in places like this findable:
/usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/libWhich avoids linking sdk executables with host libraries like this:
$ ldd /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/bin/x86_64-oe-linux/x86_64-oe-linux-gdb linux-vdso.so.1 => (0x00007fffb7fff000) libreadline.so.6 => /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/x86_64-oe-linux/../libreadline.so.6 (0x00007fbfb5511000) libdl.so.2 => /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/libdl.so.2 (0x00007fbfb530c000) libncurses.so.5 => /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/libncurses.so.5 (0x00007fbfb50e9000) libtinfo.so.5 => /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/libtinfo.so.5 (0x00007fbfb4ec2000) libz.so.1 => /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/x86_64-oe-linux/../libz.so.1 (0x00007fbfb4cac000) libm.so.6 => /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/libm.so.6 (0x00007fbfb4a2a000) libpthread.so.0 => /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/libpthread.so.0 (0x00007fbfb480d000) libutil.so.1 => /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/libutil.so.1 (0x00007fbfb4609000) libexpat.so.1 => /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/lib/x86_64-oe-linux/../libexpat.so.1 (0x00007fbfb43e0000) libc.so.6 => /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/libc.so.6 (0x00007fbfb4059000) /usr/local/oecore-x86_64/sysroots/x86_64-oesdk-linux/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x0000003f05000000)Signed-off-by Nitin A Kamble <[email protected]>--- meta/conf/bitbake.conf | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)meta/conf/bitbake.conf +0
-0
meta/conf/bitbake.conf export BUILD_LDFLAGS = "-L${STAGING_LIBDIR_NATIVE} \ · line 488
Quoted 9 lines
meta/conf/bitbake.conf +2
-0@@ -480,7 +480,9 @@ export BUILD_LDFLAGS = "-L${STAGING_LIBDIR_NATIVE} \ BUILDSDK_LDFLAGS = "-L${STAGING_LIBDIR} \ -Wl,-rpath-link,${STAGING_LIBDIR} \ + -Wl,-rpath-link,${STAGING_LIBDIR}/.. \ -Wl,-rpath,${libdir} -Wl,-O1 \ + -Wl,-rpath,${libdir}/.. -Wl,-O1 \ -L${STAGING_DIR_HOST}${base_libdir} \ -Wl,-rpath-link,${STAGING_DIR_HOST}${base_libdir} \ -Wl,-rpath,${base_libdir} -Wl,-O1"
From the description above it took me a long time to realise what you're referring to. The problem you're solving is specific to cross-canadian.bbclass which changes libdir to include a suffix.
Please append your two entries to this variable within cross-canadian.bbclass and then this makes a lot more sense! If you don't it will lead to strange RPATHs in parts of the system.
Technically this change shouldn't be necessary since we'd use our own dynamic loader within the SDK and it knows about the paths apart from the one with the suffix. We likely could therefore remove some of this but now isn't the time for that! If you used a cross-ldd for our SDK toolchain, you'd should see something different to the above.
Cheers,
Richard