[yocto] Is this a bug of binutils

Li Zhijian lizhijian at cn.fujitsu.com
Fri Sep 20 02:40:03 PDT 2013


at 2013-9-20 16:43, Laurentiu Palcu wrote:
> Hi,
>
> On Fri, Sep 20, 2013 at 02:45:24PM +0800, Li Zhijian wrote:
>> Hi,all
>>
>> I got a big problem when using the cross-toolchain to compile a simple C program.
>> This problem since 3ae71c74c71f13a390b21b4c3ead04e51aaa82b8
>> which is to upgrade the binutils from 2.22 to 2.23.1
>>
>> what I do is as follows, any help or ideas ?
>>
>> I) Build my cross-toolchain
>> # git clone http://git.yoctoproject.org/git/poky/.git
>> # cd poky
>> # git checkout 3ae71c74c71f13a390b21b4c3ead04e51aaa82b8 -b tcmode-default
>> ...skip some steps...
>> # bitbake meta-toolchain
>> Loading cache: 100% |############################################################################################| ETA: 00:00:00
>> Loaded 1122 entries from dependency cache.
>>
>> Build Configuration:
>> BB_VERSION = "1.17.0"
>> BUILD_SYS = "x86_64-linux"
>> NATIVELSBSTRING = "CentOS-6.3"
>> TARGET_SYS = "x86_64-poky-linux"
>> MACHINE = "qemux86-64"
>> DISTRO = "poky"
>> DISTRO_VERSION = "1.3+snapshot-20130912"
>> TUNE_FEATURES = "m64"
>> TARGET_FPU = ""
>> meta
>> meta-yocto
>> meta-yocto-bsp = "tcmode-default:3ae71c74c71f13a390b21b4c3ead04e51aaa82b8"
>>
>> ..cost a long time..
>> all of the build work successfully
>>
>> II) Install my cross-toolchain
>> # ./poky-eglibc-x86_64-x86_64-toolchain-1.3+snapshot-20130912.sh
>> Enter target directory for SDK (default: /opt/poky/1.3+snapshot): toolchain-1.3-tcmode-default
>>
>> III) compile a simple C program
>> # cat test.c
>> int main ()
>> {
>> printf("hello world\n");
>> return 0;
>> }
>> # source toolchain-1.3-tcmode-default/environment-setup-x86_64-poky-linux
>> # $CC -o test test.c -L tmp/sysroots/qemux86-64/usr/lib/ -lm
> Technically, for this simple program, it's enough to do:
>
> $CC -o test test.c
i know that is enough and it is compiled OK
but in the case with -L option ,it is failed


> The $CC contains the sysroot option and the linker will automatically
> prefix /lib and /usr/lib with the target sysroot. So, it should be able
> to compile just fine.

I haved source the toolchian environment which is installed by
./poky-eglibc-x86_64-x86_64-toolchain-1.3+snapshot-20130912.sh and i think
that would include all the correct environment value

# source toolchain-1.3-tcmode-default/environment-setup-x86_64-poky-linux
this file's detail is at the last of this thread

# echo $CC
x86_64-poky-linux-gcc -m64 --sysroot=/yocto/fnst/lizj/build_yocto/x86-64-yocto-1.3/toolchain-1.3-tcmode-default/sysroots/x86_64-poky-linux

the sysroot points to directory which is install by ./poky-eglibc-x86_64-x86_64-toolchain-1.3+snapshot-20130912.sh
this directory includes a basic target sysroot

>
> The -L option just adds another search path for libraries which will be
> searched before the default ones. So, it shouldn't be a problem.
>
> Somehow, it looks like it tries to link against the host's libraries.
yes, it seems that ld try to link to host's libraries
but i am not sure that if i had do some wrong steps



> Before compiling, do a 'echo $CC' and make sure the --sysroot points to
> the correct directory.
you means that i must make --sysroot points to the sysroot build by myself instead
of the sysroot provided by poky-eglibc-x86_64-x86_64-toolchain-1.3+snapshot-20130912.sh ??

-- 
Best regards.
Li Zhijian

>
> Laurentiu
>
>> test.c: In function 'main':
>> test.c:3:9: warning: incompatible implicit declaration of built-in function 'printf' [enabled by default]
>> /yocto/fnst/lizj/build_yocto/x86-64-yocto-1.3/toolchain-1.3-tcmode-default/sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-poky-linux/../../libexec/x86_64-poky-linux/gcc/x86_64-poky-linux/4.7.2/ld: skipping incompatible /lib/libc.so.6 when searching for /lib/libc.so.6
>> /yocto/fnst/lizj/build_yocto/x86-64-yocto-1.3/toolchain-1.3-tcmode-default/sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-poky-linux/../../libexec/x86_64-poky-linux/gcc/x86_64-poky-linux/4.7.2/ld: cannot find /lib/libc.so.6
>> /yocto/fnst/lizj/build_yocto/x86-64-yocto-1.3/toolchain-1.3-tcmode-default/sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-poky-linux/../../libexec/x86_64-poky-linux/gcc/x86_64-poky-linux/4.7.2/ld: skipping incompatible /usr/lib/libc_nonshared.a when searching for /usr/lib/libc_nonshared.a
>> /yocto/fnst/lizj/build_yocto/x86-64-yocto-1.3/toolchain-1.3-tcmode-default/sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-poky-linux/../../libexec/x86_64-poky-linux/gcc/x86_64-poky-linux/4.7.2/ld: cannot find /usr/lib/libc_nonshared.a
>> collect2: error: ld returned 1 exit status
>>
>>
>> #cat toolchain-1.3-tcmode-default/environment-setup-x86_64-poky-linux
>> export PATH=/yocto/fnst/lizj/build_yocto/x86-64-yocto-1.3/toolchain-1.3-tcmode-default/sysroots/x86_64-pokysdk-linux/usr/bin:/yocto/fnst/lizj/build_yocto/x86-64-yocto-1.3/toolchain-1.3-tcmode-default/sysroots/x86_64-pokysdk-linux/usr/bin/x86_64-poky-linux:$PATH
>> export PKG_CONFIG_SYSROOT_DIR=/yocto/fnst/lizj/build_yocto/x86-64-yocto-1.3/toolchain-1.3-tcmode-default/sysroots/x86_64-poky-linux
>> export PKG_CONFIG_PATH=/yocto/fnst/lizj/build_yocto/x86-64-yocto-1.3/toolchain-1.3-tcmode-default/sysroots/x86_64-poky-linux/usr/lib/pkgconfig
>> export CONFIG_SITE=/yocto/fnst/lizj/build_yocto/x86-64-yocto-1.3/toolchain-1.3-tcmode-default/site-config-x86_64-poky-linux
>> export CC="x86_64-poky-linux-gcc -m64 --sysroot=/yocto/fnst/lizj/build_yocto/x86-64-yocto-1.3/toolchain-1.3-tcmode-default/sysroots/x86_64-poky-linux"
>> export CXX="x86_64-poky-linux-g++ -m64 --sysroot=/yocto/fnst/lizj/build_yocto/x86-64-yocto-1.3/toolchain-1.3-tcmode-default/sysroots/x86_64-poky-linux"
>> export CPP="x86_64-poky-linux-gcc -E -m64 --sysroot=/yocto/fnst/lizj/build_yocto/x86-64-yocto-1.3/toolchain-1.3-tcmode-default/sysroots/x86_64-poky-linux"
>> export AS="x86_64-poky-linux-as "
>> export LD="x86_64-poky-linux-ld --sysroot=/yocto/fnst/lizj/build_yocto/x86-64-yocto-1.3/toolchain-1.3-tcmode-default/sysroots/x86_64-poky-linux"
>> export GDB=x86_64-poky-linux-gdb
>> export STRIP=x86_64-poky-linux-strip
>> export RANLIB=x86_64-poky-linux-ranlib
>> export OBJCOPY=x86_64-poky-linux-objcopy
>> export OBJDUMP=x86_64-poky-linux-objdump
>> export AR=x86_64-poky-linux-ar
>> export NM=x86_64-poky-linux-nm
>> export M4=m4
>> export TARGET_PREFIX=x86_64-poky-linux-
>> export CONFIGURE_FLAGS="--target=x86_64-poky-linux --host=x86_64-poky-linux --build=x86_64-linux --with-libtool-sysroot=/yocto/fnst/lizj/build_yocto/x86-64-yocto-1.3/toolchain-1.3-tcmode-default/sysroots/x86_64-poky-linux"
>> export CFLAGS=" -O2 -pipe -g -feliminate-unused-debug-types"
>> export CXXFLAGS=" -O2 -pipe -g -feliminate-unused-debug-types -fpermissive"
>> export LDFLAGS="-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed"
>> export CPPFLAGS=""
>> export OECORE_NATIVE_SYSROOT="/yocto/fnst/lizj/build_yocto/x86-64-yocto-1.3/toolchain-1.3-tcmode-default/sysroots/x86_64-pokysdk-linux"
>> export OECORE_TARGET_SYSROOT="/yocto/fnst/lizj/build_yocto/x86-64-yocto-1.3/toolchain-1.3-tcmode-default/sysroots/x86_64-poky-linux"
>> export OECORE_ACLOCAL_OPTS="-I /yocto/fnst/lizj/build_yocto/x86-64-yocto-1.3/toolchain-1.3-tcmode-default/sysroots/x86_64-pokysdk-linux/usr/share/aclocal"
>> export OECORE_DISTRO_VERSION="1.3+snapshot-20130912"
>> export OECORE_SDK_VERSION="1.3+snapshot"
>>
>> -- 
>> Best regards.
>> Li Zhijian (8555)
>>
>>
>> _______________________________________________
>> yocto mailing list
>> yocto at yoctoproject.org
>> https://lists.yoctoproject.org/listinfo/yocto
>






More information about the yocto mailing list