[OE-core] [PATCH v2] cross-canadian/libgcc: fix aarch64's multilib SDK

Robert Yang liezhi.yang at windriver.com
Wed Jul 25 08:04:46 UTC 2018


Hi Maohui,

Thanks for sending it, I do think that oe-core needs this patch.

// Robert

On 06/26/2018 06:27 AM, Lei Maohui wrote:
> The arm toolchain has a "-gnueabi" suffix, but aarch64 doesn't,
> this makes multilib sdk doesn't work, there will be error as following:
> 
> .../usr/libexec/armeb-poky-linux-gux-linux-gnueabi/7.3.0/real-ld: cannot find crtbeginS.o: No such file or directo
> .../usr/libexec/armeb-poky-linux-gux-linux-gnueabi/7.3.0/real-ld: cannot find -lgcc
> .../usr/libexec/armeb-poky-linux-gux-linux-gnueabi/7.3.0/real-ld: cannot find -lgcc
> collect2: error: ld returned 1 exit status
> 
> Signed-off-by: Robert Yang <liezhi.yang at windriver.com>
> Signed-off-by: Lei Maohui <leimaohui at cn.fujitsu.com>
> ---
>   meta/recipes-devtools/gcc/libgcc-common.inc | 23 +++++++++++++++++------
>   1 file changed, 17 insertions(+), 6 deletions(-)
> 
> diff --git a/meta/recipes-devtools/gcc/libgcc-common.inc b/meta/recipes-devtools/gcc/libgcc-common.inc
> index 848a476..a49fc98 100644
> --- a/meta/recipes-devtools/gcc/libgcc-common.inc
> +++ b/meta/recipes-devtools/gcc/libgcc-common.inc
> @@ -145,11 +145,22 @@ fakeroot python do_extra_symlinks() {
>       if bb.data.inherits_class('nativesdk', d):
>           return
>   
> -    targetsys = d.getVar('BASETARGET_SYS')
> +    base_targetsys = d.getVar('BASETARGET_SYS')
> +    targetsys = d.getVar('TARGET_SYS')
> +
> +    if base_targetsys != targetsys:
> +        dest = d.getVar('D') + d.getVar('libdir') + '/' + base_targetsys
> +        dest_list = [dest]
> +        # For multilib like aarch64 + arm, need 2 symlinks:
> +        # 1) BASETARGET_SYS as usual
> +        # 2) BASETARGET_SYS + "-gnueabi" for multilib
> +        libce = d.getVar('LIBCEXTENSION')
> +        abie = d.getVar('ABIEXTENSION')
> +        if abie and libce and targetsys.endswith(libce + abie):
> +            dest_list.append(dest + libce + abie)
> +        src = targetsys
> +        for dir in dest_list:
> +            if not os.path.lexists(dir) and os.path.lexists(d.getVar('D', True) + d.getVar('libdir', True)):
> +                os.symlink(src, dir)
>   
> -    if targetsys != d.getVar('TARGET_SYS'):
> -        dest = d.getVar('D') + d.getVar('libdir') + '/' + targetsys
> -        src = d.getVar('TARGET_SYS')
> -        if not os.path.lexists(dest) and os.path.lexists(d.getVar('D') + d.getVar('libdir')):
> -            os.symlink(src, dest)
>   }
> 



More information about the Openembedded-core mailing list