Linux, Centos 5.2 (RHEL 5), compiling live555 for X-Linux embedded, c++: Incompatable libraries

My current setup looks like this.....

   : Dell D800 1.7GHZ with Centos 5.2 which is equivalent with RHEL 5.
   : Your Developer's manual indicates to install Red Hat, Mandrake, or SUSE.  Centos is made from same source as RHEL.

   : Vortex86SX with 2GB DOM
   : X-Linux from DMP vi GHOST

I have a program that I compiled on the Host with following ldd program: => /usr/lib/ (0x00235000)        Actual version: => /lib/ (0x007a0000)                              Actual version: => /lib/ (0x00a9c000)                Actual version: => /lib/ (0x00655000)                                Actual version:
        /lib/ (0x00633000)                                             Actual version:

So I copied...over libstdc++ and libgcc over to the Target via ftp, following the Install your program instructions.  When I run the program on the target, I get:
/usr/bin/program: error while loading shard libraries: cannot handle TLS data

In investigating, I found that the other libraries in the ldd are symmlinks to different versions of the libraries...for instance
   Target: =>
   Host: =>

The Targets versions look like this: => /usr/lib/ (0x00235000)        Not there....copied => /lib/ (0x007a0000)                              Actual version: => /lib/ (0x00a9c000)                Not there...copied => /lib/ (0x00655000)                                Actual version:
        /lib/ (0x00633000)                                             Actual version:

I am pretty sure that just copying these other libraries will fix the problem with the program I wrote, but won't it break the programs on the target?  I don't want to break them...

Recall the target is running X-Linux 2.54 so I can't really upgrade this so I will have to find a way to compile on the Centos Host machine and then transfer exe to the Target.

How do I get the appropriate and that match up with the already existing other libraries on the Target.  How do I compile against these libraries...I don't want to break the Host either by "downgrading".  I am pretty sure the Host machine would become unusable with all those old versions.

Thanks in advance.
Who is Participating?
javatexanConnect With a Mentor Author Commented:
I found an answer.  First off I had to find a distro that was binary compatable.  I had to find a version of Centos that had closer versions of the common libraries, if not older than the X-Linux had.  After installing Centos version 4 and 3 on two separate VMs, I found Centos 3.9 to be slightly older than the target.  In fact it was one rev older on each of the common libraries.  

Then I recompiled my code in Centos 3.9 and hoped that it did not rely upon newer features of C++ and such...I lucked out.  Then I copied the binaries and libraries over to the target and voila.  Working system.

The boss didn't like using a really old version b/c of security fixes now I have to figure out how to cross compile and create a host/target system, building kernels and the whole nine yards :P.
Hi :-)

I know this problem, but from another direction - when I try to ship a glibc along with the executable and redirect the library using LD_LIBRARY_PATH .
tls is threading method introduced by later GCCs. GCC can compile and/or link against the TLS version of glibc or the non-tls version. LD also has to be able to link to the proper version on the other side.
Using CentOS 4, your GCC is 4 . If sending a glibc would not work then you can either make GCC not compile tls code for you (man gcc ?) .
I googled and saw some references to a GCC bug. Here is the one I think is most relevant:

Hope this helps
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.