[CMake] RPATH cross-compile issue with CHECK_*_EXISTS
Brad King
brad.king at kitware.com
Tue Feb 28 08:22:47 EST 2017
On 02/28/2017 05:25 AM, Jörg Krause wrote:
> Buildroot does not have any problems with searching for libraries in
> lib32. It does have a problem with having a host rpath used for linking
> with libraries.
>From your description we are not adding a host rpath. It's coming from
/sysroot/usr/lib32 which is converted to /usr/lib32 by stripping the
sysroot. If you were to run the binary purely in the target environment
then it would find the library in the target's /usr/lib32. It is not
clear to my how the binary is being run on the host, but doing so uses
the host's /usr/lib32 because the binary was built for the target.
> From my understanding, there are some possibilities to fix this issue:
> 1) Prefer to search in lib if FIND_LIBRARY_USE_LIB32_PATHS is enabled,
> and only search in lib32 in case the target is not found in lib.
The purpose of that features is so on a 64-bit system with 64-bit libs
in `lib` and 32-bit libs in `lib32` that we find the latter when the
target architecture is 32 bit.
> 2) Make sure, in case lib32 is a symlink, to follow the symlink.
I was thinking the same thing. The lib => lib32 search path conversion
should just be skipped if lib32 is a symlink back to lib.
> 3) Make sure, in case lib32 is a symlink to lib and is not included in
> the linker search paths, to add it to the implicit runtime search
> paths.
Yes, the issue I filed is about handling symlinks when comparing rpath
entries to the list of implicit directories.
I encourage you to sign up on gitlab.kitware.com to join discussion in
that issue.
Thanks,
-Brad
More information about the CMake
mailing list