Re: eclipse-poky: Can't build from Eclipse, but command line build works


Bryan Evenson
 

-----Original Message-----
From: Minchev, Todor [mailto:todor.minchev@...]
Sent: Thursday, March 12, 2015 1:50 PM
To: Bryan Evenson
Cc: yocto@...
Subject: Re: [yocto] eclipse-poky: Can't build from Eclipse, but command line
build works

On Thu, 2015-03-12 at 13:43 +0000, Bryan Evenson wrote:
Todor,

It appears that your toolchain is configured properly, however the
GNU linker (ld) cannot find the libraries it needs to link the
binary.
I suspect that the culprit is "--sysroot=$SDKTARGETSYSROOT"
There should be an environment setup file

/<home_path>/poky/poky-build/tmp/environment-setup-XX

If you open it you will see SDKTARGETSYSROOT environment variable.
It most likely points to a different sysroot path.
Please change it to point to the directory where you extracted your
sysroot (/<home_path>/extracted_sysroot_1.6.2),
create a new project and see if that builds OK.
I've been having a few other issues with Eclipse (Install New Software
menu item disappearing, other plugins disappearing after restarting,
etc.), so I uninstalled eclipse, deleted my ~/.eclipse and workspace
directories and re-installed Eclipse. I need to run Eclipse Kepler
(another plugin I'm using isn't ready for Eclipse Luna), so I followed
these instructions for installing Eclipse by hand:
http://www.92wiki.com/en/blog/detail/install-eclipse-kepler-on-fedora-
17-18-19-centos-red-hat-rhel-5-6. I also edited my environment setup script
as suggested. I then reinstalled all necessary plugins as described in the ADT
manual. I pointed the toolchain to my build directory and the sysroot
location to my extracted sysroot. I then followed the steps in the ADT
manual to create a new Hello World Yocto ADT project. I verified the
SDKTARGETSYSROOT environment variable in the new project points to my
extracted sysroot. When I attempted to build, I get the following output:


Invoking autogen.sh in build
directory: /<home_path>/workspace/adt_test/

Command-line environment variables:
CFLAGS=" -g -O0
--sysroot=/<home_path>/extracted_sysroot_1.6.2" CXXFLAGS=" -g -O0
--sysroot=/<home_path>/extracted_sysroot_1.6.2" LDFLAGS="
--sysroot=/<home_path>/extracted_sysroot_1.6.2" CPPFLAGS="
--sysroot=/<home_path>/extracted_sysroot_1.6.2"

sh -c "/<home_path>/workspace/adt_test/autogen.sh
--with-libtool-sysroot=/<home_path>/extracted_sysroot_1.6.2
--target=arm-poky-linux-gnueabi --host=arm-poky-linux-gnueabi
--build=x86_64-linux
--with-libtool-sysroot=/<home_path>/extracted_sysroot_1.6.2"
aclocal: warning: couldn't open directory
'/<home_path>/extracted_sysroot_1.6.2/usr/share/aclocal': No such file
or directory
configure.ac:16: warning: AM_INIT_AUTOMAKE: two- and three-
arguments
forms are deprecated. For more info, see:
configure.ac:16:
http://www.gnu.org/software/automake/manual/automake.html#Moderni
ze-AM_005fINIT_005fAUTOMAKE-invocation
configure.ac:20: installing './compile'
configure.ac:20: installing './config.guess'
configure.ac:20: installing './config.sub'
configure.ac:16: installing './install-sh'
configure.ac:16: installing './missing'
src/Makefile.am: installing './depcomp'
configure: loading site
script /<home_path>/poky/meta/site/endian-little
configure: loading site script /<home_path>/poky/meta/site/arm-common
configure: loading site
script /<home_path>/poky/meta/site/common-linux
configure: loading site
script /<home_path>/poky/meta/site/common-glibc
configure: loading site script /<home_path>/poky/meta/site/arm-linux
configure: loading site script /<home_path>/poky/meta/site/common
configure: loading site
script /<home_path>/poky/meta-openembedded/meta-oe/site/endian-
little
configure: loading site
script /<home_path>/poky/poky-
build/tmp/sysroots/at91sam9x5ek/usr/share/arm-poky-linux-
gnueabi_config_site.d/ncurses_config
configure: loading site
script /<home_path>/poky/poky-
build/tmp/sysroots/at91sam9x5ek/usr/share/arm-poky-linux-
gnueabi_config_site.d/eglibc_config
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for arm-poky-linux-gnueabi-strip...
arm-poky-linux-gnueabi-strip
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... arm-poky-linux-gnueabi
checking how to print strings... printf
checking for style of include used by make... GNU
checking for arm-poky-linux-gnueabi-gcc... arm-poky-linux-gnueabi-gcc
-march=armv5te -marm -mthumb-interwork -mtune=arm926ej-s --
sysroot=
$SDKTARGETSYSROOT
checking whether the C compiler works... no
configure: error: in `/<home_path>/workspace/adt_test':
configure: error: in `/<home_path>/workspace/adt_test':
configure: error: C compiler cannot create executables
configure: error: C compiler cannot create executables
See `config.log' for more details
This is a different error. There seems to be a mismatch between your
toolchain and rootfs. Could you please share the full name of

my_built_image.tar.gz from

runqemu-extract-sdk <my_built_image.tar.gz>
<sysroot_destination_directory>"
core-image-my-minimal-at91sam9x5ek.tar.gz

It's the root filesystem that I built and runs on our target hardware. It's based on core-image-minimal with a few additional packages. Are there some additional (or some specific) packages that are needed for it to be a suitable rootfs for this purpose?

Thanks,
Bryan


Configuration failed with error

The bold lines are ones that I see as a potential problem. First, the
system couldn't find aclocal in my extracted sysroot. I took a look
in the directory listed, and aclocal is not in there. I think the
configure script also found the build system's install and mkdir
(/usr/bin/install and /usr/bin/mkdir). I don't know if there is
supposed to be one of these in the extracted sysroot or not, but I
thought it was worth noting.

On a possibly related topic, I noticed that the Eclipse Indexer is
using the build system's header files. For example, if I open the
main source file from the Hellow World application, place my cursor on
the line "#include <stdlib.h>" and hit F3, /usr/include/stdlib.h opens
up instead of stdlib.h from my toolchain. Under the Eclipse project,
for the listed Includes directories it has the following:

/usr/include
/usr/lib/gcc/x86_64-redhat-linux/4.9.2/include
/usr/local/include
Eclipse is showing the host headers, but it will use the headers from
your sysroot during the actual build.


Any thoughts on how to fix these issues?

Thanks,
Bryan

Join yocto@lists.yoctoproject.org to automatically receive all group messages.