Just to make sure: did you copy the CodeSourcery libstdc++ into
your /usr/lib directory on the Beagle?
Laurent
Running apps built with one toolchain on a machine with a rootfs using
a different toolchain is a recipe for disaster. Well, at least some
painful debugging sessions.
Philip
>
> Robert
>
> >
>
Right :) The alternative is to copy these libraries in a separate
directory and play with LD_LIBRARY_PATH.
But Philip has the right solution: use the target libraries, not the
ones provided with CSL gcc.
Laurent
Sounds like this is worth adding to wiki/FAQ ;)
Dirk
2008/10/9 John Beetem <johnb...@yahoo.com>:
> Here's what I do to link BeagleBoard applications programs on my host
> machine...
I am still struggling with this problem.
I thought that when I am using Angstrom and CS2007q3 as compiler I do
not have this problem because Angstrom is build with CS2007q3 and so
when I use CS2007q3 too I link against the same libs?!?
Does Angstrom uses the CS2007q3 libs or does Angstrom compiles its own
libraries? How can I solve this when using linux? Is it the same like
on windows?
Thanks for any help or tips - Robert
I tried that without success. This is what I did:
* Install OE following the instructions from
http://elinux.org/BeagleBoardAndOpenEmbeddedGit
* changed PATH:
~/oe$ echo $PATH
/home/developer/oe/tmp/cross/armv7a/bin:/bin:/usr/bin
* Compiled qtopia for arm
* boot the beagle with the Angstrom-image
* try to execute a example program:
root@beagleboard:/usr/local/Trolltech/QtEmbedded-4.4.3-arm/examples/dialogs/findfiles#
./findfiles -qws
./findfiles: error while loading shared libraries: libstdc++.so.6:
cannot open shared object file: No such file or directory
My questions:
How can I solve this?
How can I build the Angstrom-X11-image?
Is there somewhere a description how to make a
cross-plattform-build-system for beginners like me?
Thankfull for any help - Robert
Try to add the directory containing the .so files to your LD_LIBRARY_PATH
environment variable on your Beagle.
Laurent
Sorry, forget to mention that:
root@beagleboard:/# find . -name libstdc,,*
root@beagleboard:/#
The Angstrom-consle-image does not contain this file (at least on my system).
Now I try to build a Angstrom-X11-Image. Is it correct that therefore
I have to change the line
DISTRO = "angstrom-2008.1"
in $OE_HOME/beagleboard/beagleboard/conf to something else?
Robert
> Why aren't you using the qtembedded 4.4.3 from OE?
Cause I want to test if my cross plattform compile setup is correct
and working. qtopia was only an example.
Robert
> Now I try to build a Angstrom-X11-Image. Is it correct that therefore
> I have to change the line
> DISTRO = "angstrom-2008.1"
> in $OE_HOME/beagleboard/beagleboard/conf to something else?
Okay, I found
bitbake x11-image
...
Robert
I believe you should not mix the kernel on the one hand and the
Linux-images on the other side.
You can use TI's omap3-kernel or the git kernel with angstrom - as you
like it. (I think so, I used both without any problem).
The problem here is how to cross compile on a x86-linux-machine for
the beagleboard.
Robert
Okay, now I was able to try that. I compiled qtopai this way. Then I
execute a sampel qt-application on Angstrom and I get:
root@beagleboard:/usr/local/Trolltech/QtEmbedded-4.4.3-arm/examples/dialogs/findfiles#
./findfiles -qws
./findfiles: /usr/lib/libstdc++.so.6: no version information available
(required by ./findfiles)
./findfiles: /usr/lib/libstdc++.so.6: no version information available
(required by ./findfiles)
I have no glue. Does this error message really indicates that I am
using different toolchains?
Robert
>> The problem here is how to cross compile on a x86-linux-machine for
>> the beagleboard.
>
> And that's where you make a mistake. There's no such thing as "cross-
> compiling for beagle". ARM has at least 10 different ABIs that can't
> mixed (e.g. softfpa OABI, hardfpa OABI, EABI, etc). You need to
> crosscompile things for the distribution you are running on a device,
> not for the device itself.
Hmm, okay, you're right. This is what I meant.
I installed OE on a Ubuntu machine as described on elinux.org. Then I
set the path to
PATH=$(HOME)/oe/tmp/cross/armv7a/bin/
Now when I compile I use the binaries in the path
(arm-angstrom-linux-gnueabi-*):
developer@ubuntu:~/oe/tmp/cross/armv7a/bin$ which
arm-angstrom-linux-gnueabi-gcc
/home/developer/oe/tmp/cross/armv7a/bin/arm-angstrom-linux-gnueabi-gcc
So I use Angstrom on the BB and I use the Angstrom toolchain. But I
get these error messages:
/usr/lib/libstdc++.so.6: no version information available
Robert
Philip
On my ubuntu x86-machine
developer@ubuntu:~$ echo $PATH
/home/developer/oe/tmp/cross/armv7a/bin:/bin:/usr/bin
developer@ubuntu:~$ echo $PATH
/home/developer/oe/tmp/cross/armv7a/bin:/bin:/usr/bin
developer@ubuntu:~$ cat main.c
#include <stdio.h>
int main(void)
{
printf("Hello, world!\n");
return 1;
}
developer@ubuntu:~$ arm-angstrom-linux-gnueabi-g++ main.c
developer@ubuntu:~$ file a.out
a.out: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for
GNU/Linux 2.6.14, dynamically linked (uses shared libs), not stripped
on the BB:
root@beagleboard:/media/sda1# ./a.out
Hello, world!
root@beagleboard:/media/sda1#
Robert
JFTR:
The qt-executable:
root@beagleboard:/usr/local/Trolltech/QtEmbedded-4.4.3-arm/examples/dialogs/findfiles#
file findfiles
findfiles: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for
GNU/Linux 2.6.14, dynamically linked (uses shared libs), stripped
Robert
Philip
I used the Angstrom-X11-images (with libstdc++) and got the same warnings.
Robert
> + has a tendency to break every other months with gcc, so if you want
> to compile c++ apps, use the exact same toolchain and options that
> your target was built with,
JFTR: the exact same toolchain. The exact one.
I used the Angstrom image from your website together with a local
OE-toolchain. It seems that this was the problem.
Once I use the image from my local toolchain
(Angstrom-x11-image-glibc-ipk-2008.1-test-20081023-beagleboard.rootfs.tar)
my apps run without any warnings about "version information".
Robert