Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Gentoo: User

Compile program with older libraries

 

 

Gentoo user RSS feed   Index | Next | Previous | View Threaded


marko06 at gmail

May 24, 2012, 6:15 AM

Post #1 of 8 (762 views)
Permalink
Compile program with older libraries

Hi!

I have some program which I am using in a thin client which has Gentoo
stage 3 root fs (kernel 2.6.39.4),
lets call it system A.
I've also compiled that program chroot-ed in this stage 3 fs from my
personal computer.

I have an other thin clients which have older system (B) on it which is
older linux kernel 2.6.16.27.
Library version which are needed are of course different and for that
reason my program
can not be run in this sistem.

System A:
Linux redondo 2.6.39.4 #18 Mon Mar 19 13:14:32 CET 2012 i586 i586 i386
GNU/Linux
/lib/libc-2.12.2.so
gcc version 4.0.3

System B:
Linux carlos 2.6.16.27 #1 Sun Mar 25 11:09:40 CEST 2007 i586 i586 i386
GNU/Linux
/lib/libc-2.3.6.so
gcc version 4.0.3

Shared libraries that my binary uses are (in system A):
linux-gate.so.1 => (0xffffe000)
libpthread.so.0 => /lib/libpthread.so.0 (0xf76d6000)
libuuid.so.1 => /lib/libuuid.so.1 (0xf76d1000)
libstdc++.so.6 => /usr/lib/gcc/i486-pc-linux-gnu/4.4.5/libstdc++.so.6
(0xf75da000)
libm.so.6 => /lib/libm.so.6 (0xf75b2000)
libc.so.6 => /lib/libc.so.6 (0xf7468000)
/lib/ld-linux.so.2 (0xf76f3000)
libgcc_s.so.1 => /usr/lib/gcc/i486-pc-linux-gnu/4.4.5/libgcc_s.so.1
(0xf7449000)

If i try to compile my program using '-static' directive, I still have a
problem with 4 functions:
-initgroups,
-getpwnam,
-getaddrinfo,
-gethostbyname.

If I got that right, they use functions which are located in NSS shared
libraries.

I am looking for a way of compiling my program so that I can run it in
system B.
I have libraries available from system B and that is all that I have.

I need help on getting this done.
I guess gcc versions are the same and as well libgcc_s.so.1 shared library.

My questions are:
Can I pull those libraries from system B and use it in compilatin process?
Would that work?
I would still need to get include source files of that version, right?
Is there some archive site where I can find so old version of linux kernel
source?
One thing that pops in to my mind is also trying to find gentoo stage 3
tarball of the kernel version 2.6.16.27
and compile the program there...I tried to search that but no luck in
that...

Any help would be welcomed!


hwoarang at gentoo

May 24, 2012, 6:33 AM

Post #2 of 8 (731 views)
Permalink
Re: Compile program with older libraries [In reply to]

On Thu, May 24, 2012 at 2:15 PM, Marko Košmerl <marko06 [at] gmail> wrote:
> Hi!
>
> I have some program which I am using in a thin client  which has Gentoo
> stage 3 root fs (kernel 2.6.39.4),
> lets call it system A.
> I've also compiled that program chroot-ed in this stage 3 fs from my
> personal computer.
>
> I have an other thin clients which have older system (B) on it which is
> older linux kernel 2.6.16.27.
> Library version which are needed are of course different and for that reason
> my program
> can not be run in this sistem.
>
> System A:
> Linux redondo 2.6.39.4 #18 Mon Mar 19 13:14:32 CET 2012 i586 i586 i386
> GNU/Linux
> /lib/libc-2.12.2.so
> gcc version 4.0.3
>
> System B:
> Linux carlos  2.6.16.27 #1 Sun Mar 25 11:09:40 CEST 2007 i586 i586 i386
> GNU/Linux
> /lib/libc-2.3.6.so
> gcc version 4.0.3
>
> Shared libraries that my binary uses are (in system A):
> linux-gate.so.1 =>  (0xffffe000)
> libpthread.so.0 => /lib/libpthread.so.0 (0xf76d6000)
> libuuid.so.1 => /lib/libuuid.so.1 (0xf76d1000)
> libstdc++.so.6 => /usr/lib/gcc/i486-pc-linux-gnu/4.4.5/libstdc++.so.6
> (0xf75da000)
> libm.so.6 => /lib/libm.so.6 (0xf75b2000)
> libc.so.6 => /lib/libc.so.6 (0xf7468000)
> /lib/ld-linux.so.2 (0xf76f3000)
> libgcc_s.so.1 => /usr/lib/gcc/i486-pc-linux-gnu/4.4.5/libgcc_s.so.1
> (0xf7449000)
>
> If i try to compile my program using '-static' directive, I still have a
> problem with 4 functions:
> -initgroups,
> -getpwnam,
> -getaddrinfo,
> -gethostbyname.
>
> If I got that right, they use functions which are located in NSS shared
> libraries.
>
> I am looking for a way of compiling my program so that I can run it in
> system B.
> I have libraries available from system B and that is all that I have.
>
> I need help on getting this done.
> I guess gcc versions are the same and as well libgcc_s.so.1 shared library.
>
> My questions are:
> Can I pull those libraries from system B and use it in compilatin process?
> Would that work?
> I would still need to get include source files of that version, right?
> Is there some archive site where I can find so old version of linux kernel
> source?
> One thing that pops in to my mind is also trying to find gentoo stage 3
> tarball of the kernel version 2.6.16.27
> and compile the program there...I tried to search that but no luck in
> that...
>
> Any help would be welcomed!

You can statically compile your program on system A ( use gcc -static
-o test test.c for example ). Then you should be able to run it in
system B without any problem


marko06 at gmail

May 24, 2012, 6:58 AM

Post #3 of 8 (780 views)
Permalink
Re: Compile program with older libraries [In reply to]

On compile time I get warnings:
watcher.cpp:(.text+0x85): warning: Using 'initgroups' in statically linked
applications requires at runtime the shared libraries from the glibc
version used for linking
watcher.cpp:(.text+0x16f): warning: Using 'getpwnam' in statically linked
applications requires at runtime the shared libraries from the glibc
version used for linking
client.cpp:(.text+0xb1a): warning: Using 'getaddrinfo' in statically linked
applications requires at runtime the shared libraries from the glibc
version used for linking
reg.cpp:(.text+0x3d6): warning: Using 'gethostbyname' in statically linked
applications requires at runtime the shared libraries from the glibc
version used for linking

On running it:
./watcher: /lib/libuuid.so.1: no version information available (required by
./watcher)
./watcher: /lib/libc.so.6:e version `GLIBC_2.4' not found (required by
./watcher)
./watcher: /lib/libc.so.6: version `GLIBC_2.7' not found (required by
./watcher)
./watcher: /lib/libc.so.6: version `GLIBC_2.11' not found (required by
./watcher)

On Thu, May 24, 2012 at 3:33 PM, Markos Chandras <hwoarang [at] gentoo>wrote:

> On Thu, May 24, 2012 at 2:15 PM, Marko Košmerl <marko06 [at] gmail> wrote:
> > Hi!
> >
> > I have some program which I am using in a thin client which has Gentoo
> > stage 3 root fs (kernel 2.6.39.4),
> > lets call it system A.
> > I've also compiled that program chroot-ed in this stage 3 fs from my
> > personal computer.
> >
> > I have an other thin clients which have older system (B) on it which is
> > older linux kernel 2.6.16.27.
> > Library version which are needed are of course different and for that
> reason
> > my program
> > can not be run in this sistem.
> >
> > System A:
> > Linux redondo 2.6.39.4 #18 Mon Mar 19 13:14:32 CET 2012 i586 i586 i386
> > GNU/Linux
> > /lib/libc-2.12.2.so
> > gcc version 4.0.3
> >
> > System B:
> > Linux carlos 2.6.16.27 #1 Sun Mar 25 11:09:40 CEST 2007 i586 i586 i386
> > GNU/Linux
> > /lib/libc-2.3.6.so
> > gcc version 4.0.3
> >
> > Shared libraries that my binary uses are (in system A):
> > linux-gate.so.1 => (0xffffe000)
> > libpthread.so.0 => /lib/libpthread.so.0 (0xf76d6000)
> > libuuid.so.1 => /lib/libuuid.so.1 (0xf76d1000)
> > libstdc++.so.6 => /usr/lib/gcc/i486-pc-linux-gnu/4.4.5/libstdc++.so.6
> > (0xf75da000)
> > libm.so.6 => /lib/libm.so.6 (0xf75b2000)
> > libc.so.6 => /lib/libc.so.6 (0xf7468000)
> > /lib/ld-linux.so.2 (0xf76f3000)
> > libgcc_s.so.1 => /usr/lib/gcc/i486-pc-linux-gnu/4.4.5/libgcc_s.so.1
> > (0xf7449000)
> >
> > If i try to compile my program using '-static' directive, I still have a
> > problem with 4 functions:
> > -initgroups,
> > -getpwnam,
> > -getaddrinfo,
> > -gethostbyname.
> >
> > If I got that right, they use functions which are located in NSS shared
> > libraries.
> >
> > I am looking for a way of compiling my program so that I can run it in
> > system B.
> > I have libraries available from system B and that is all that I have.
> >
> > I need help on getting this done.
> > I guess gcc versions are the same and as well libgcc_s.so.1 shared
> library.
> >
> > My questions are:
> > Can I pull those libraries from system B and use it in compilatin
> process?
> > Would that work?
> > I would still need to get include source files of that version, right?
> > Is there some archive site where I can find so old version of linux
> kernel
> > source?
> > One thing that pops in to my mind is also trying to find gentoo stage 3
> > tarball of the kernel version 2.6.16.27
> > and compile the program there...I tried to search that but no luck in
> > that...
> >
> > Any help would be welcomed!
>
> You can statically compile your program on system A ( use gcc -static
> -o test test.c for example ). Then you should be able to run it in
> system B without any problem
>
>


hwoarang at gentoo

May 24, 2012, 7:10 AM

Post #4 of 8 (747 views)
Permalink
Re: Compile program with older libraries [In reply to]

On Thu, May 24, 2012 at 2:58 PM, Marko Košmerl <marko06 [at] gmail> wrote:
> On compile time I get warnings:
> watcher.cpp:(.text+0x85): warning: Using 'initgroups' in statically linked
> applications requires at runtime the shared libraries from the glibc version
> used for linking
> watcher.cpp:(.text+0x16f): warning: Using 'getpwnam' in statically linked
> applications requires at runtime the shared libraries from the glibc version
> used for linking
> client.cpp:(.text+0xb1a): warning: Using 'getaddrinfo' in statically linked
> applications requires at runtime the shared libraries from the glibc version
> used for linking
> reg.cpp:(.text+0x3d6): warning: Using 'gethostbyname' in statically linked
> applications requires at runtime the shared libraries from the glibc version
> used for linking
>
> On running it:
> ./watcher: /lib/libuuid.so.1: no version information available (required by
> ./watcher)
> ./watcher: /lib/libc.so.6:e version `GLIBC_2.4' not found (required by
> ./watcher)
> ./watcher: /lib/libc.so.6: version `GLIBC_2.7' not found (required by
> ./watcher)
> ./watcher: /lib/libc.so.6: version `GLIBC_2.11' not found (required by
> ./watcher)
>
>
> On Thu, May 24, 2012 at 3:33 PM, Markos Chandras <hwoarang [at] gentoo>
> wrote:
>>
>> On Thu, May 24, 2012 at 2:15 PM, Marko Košmerl <marko06 [at] gmail> wrote:
>> > Hi!
>> >
>> > I have some program which I am using in a thin client  which has Gentoo
>> > stage 3 root fs (kernel 2.6.39.4),
>> > lets call it system A.
>> > I've also compiled that program chroot-ed in this stage 3 fs from my
>> > personal computer.
>> >
>> > I have an other thin clients which have older system (B) on it which is
>> > older linux kernel 2.6.16.27.
>> > Library version which are needed are of course different and for that
>> > reason
>> > my program
>> > can not be run in this sistem.
>> >
>> > System A:
>> > Linux redondo 2.6.39.4 #18 Mon Mar 19 13:14:32 CET 2012 i586 i586 i386
>> > GNU/Linux
>> > /lib/libc-2.12.2.so
>> > gcc version 4.0.3
>> >
>> > System B:
>> > Linux carlos  2.6.16.27 #1 Sun Mar 25 11:09:40 CEST 2007 i586 i586 i386
>> > GNU/Linux
>> > /lib/libc-2.3.6.so
>> > gcc version 4.0.3
>> >
>> > Shared libraries that my binary uses are (in system A):
>> > linux-gate.so.1 =>  (0xffffe000)
>> > libpthread.so.0 => /lib/libpthread.so.0 (0xf76d6000)
>> > libuuid.so.1 => /lib/libuuid.so.1 (0xf76d1000)
>> > libstdc++.so.6 => /usr/lib/gcc/i486-pc-linux-gnu/4.4.5/libstdc++.so.6
>> > (0xf75da000)
>> > libm.so.6 => /lib/libm.so.6 (0xf75b2000)
>> > libc.so.6 => /lib/libc.so.6 (0xf7468000)
>> > /lib/ld-linux.so.2 (0xf76f3000)
>> > libgcc_s.so.1 => /usr/lib/gcc/i486-pc-linux-gnu/4.4.5/libgcc_s.so.1
>> > (0xf7449000)
>> >
>> > If i try to compile my program using '-static' directive, I still have a
>> > problem with 4 functions:
>> > -initgroups,
>> > -getpwnam,
>> > -getaddrinfo,
>> > -gethostbyname.
>> >
>> > If I got that right, they use functions which are located in NSS shared
>> > libraries.
>> >
>> > I am looking for a way of compiling my program so that I can run it in
>> > system B.
>> > I have libraries available from system B and that is all that I have.
>> >
>> > I need help on getting this done.
>> > I guess gcc versions are the same and as well libgcc_s.so.1 shared
>> > library.
>> >
>> > My questions are:
>> > Can I pull those libraries from system B and use it in compilatin
>> > process?
>> > Would that work?
>> > I would still need to get include source files of that version, right?
>> > Is there some archive site where I can find so old version of linux
>> > kernel
>> > source?
>> > One thing that pops in to my mind is also trying to find gentoo stage 3
>> > tarball of the kernel version 2.6.16.27
>> > and compile the program there...I tried to search that but no luck in
>> > that...
>> >
>> > Any help would be welcomed!
>>
>> You can statically compile your program on system A ( use gcc -static
>> -o test test.c for example ). Then you should be able to run it in
>> system B without any problem
>>
>

Why don't you want to compile the program in system B if you already
have the libraries around?


marko06 at gmail

May 24, 2012, 7:50 AM

Post #5 of 8 (734 views)
Permalink
Re: Compile program with older libraries [In reply to]

The following is the problem:
root [at] carlo:/tmp/temp# g++ hello.cc -o hello
g++: installation problem, cannot exec 'cc1plus': No such file or directory

Also there is no make tool in that system...


On Thu, May 24, 2012 at 4:10 PM, Markos Chandras <hwoarang [at] gentoo>wrote:

> On Thu, May 24, 2012 at 2:58 PM, Marko Košmerl <marko06 [at] gmail> wrote:
> > On compile time I get warnings:
> > watcher.cpp:(.text+0x85): warning: Using 'initgroups' in statically
> linked
> > applications requires at runtime the shared libraries from the glibc
> version
> > used for linking
> > watcher.cpp:(.text+0x16f): warning: Using 'getpwnam' in statically linked
> > applications requires at runtime the shared libraries from the glibc
> version
> > used for linking
> > client.cpp:(.text+0xb1a): warning: Using 'getaddrinfo' in statically
> linked
> > applications requires at runtime the shared libraries from the glibc
> version
> > used for linking
> > reg.cpp:(.text+0x3d6): warning: Using 'gethostbyname' in statically
> linked
> > applications requires at runtime the shared libraries from the glibc
> version
> > used for linking
> >
> > On running it:
> > ./watcher: /lib/libuuid.so.1: no version information available (required
> by
> > ./watcher)
> > ./watcher: /lib/libc.so.6:e version `GLIBC_2.4' not found (required by
> > ./watcher)
> > ./watcher: /lib/libc.so.6: version `GLIBC_2.7' not found (required by
> > ./watcher)
> > ./watcher: /lib/libc.so.6: version `GLIBC_2.11' not found (required by
> > ./watcher)
> >
> >
> > On Thu, May 24, 2012 at 3:33 PM, Markos Chandras <hwoarang [at] gentoo>
> > wrote:
> >>
> >> On Thu, May 24, 2012 at 2:15 PM, Marko Košmerl <marko06 [at] gmail>
> wrote:
> >> > Hi!
> >> >
> >> > I have some program which I am using in a thin client which has
> Gentoo
> >> > stage 3 root fs (kernel 2.6.39.4),
> >> > lets call it system A.
> >> > I've also compiled that program chroot-ed in this stage 3 fs from my
> >> > personal computer.
> >> >
> >> > I have an other thin clients which have older system (B) on it which
> is
> >> > older linux kernel 2.6.16.27.
> >> > Library version which are needed are of course different and for that
> >> > reason
> >> > my program
> >> > can not be run in this sistem.
> >> >
> >> > System A:
> >> > Linux redondo 2.6.39.4 #18 Mon Mar 19 13:14:32 CET 2012 i586 i586 i386
> >> > GNU/Linux
> >> > /lib/libc-2.12.2.so
> >> > gcc version 4.0.3
> >> >
> >> > System B:
> >> > Linux carlos 2.6.16.27 #1 Sun Mar 25 11:09:40 CEST 2007 i586 i586
> i386
> >> > GNU/Linux
> >> > /lib/libc-2.3.6.so
> >> > gcc version 4.0.3
> >> >
> >> > Shared libraries that my binary uses are (in system A):
> >> > linux-gate.so.1 => (0xffffe000)
> >> > libpthread.so.0 => /lib/libpthread.so.0 (0xf76d6000)
> >> > libuuid.so.1 => /lib/libuuid.so.1 (0xf76d1000)
> >> > libstdc++.so.6 => /usr/lib/gcc/i486-pc-linux-gnu/4.4.5/libstdc++.so.6
> >> > (0xf75da000)
> >> > libm.so.6 => /lib/libm.so.6 (0xf75b2000)
> >> > libc.so.6 => /lib/libc.so.6 (0xf7468000)
> >> > /lib/ld-linux.so.2 (0xf76f3000)
> >> > libgcc_s.so.1 => /usr/lib/gcc/i486-pc-linux-gnu/4.4.5/libgcc_s.so.1
> >> > (0xf7449000)
> >> >
> >> > If i try to compile my program using '-static' directive, I still
> have a
> >> > problem with 4 functions:
> >> > -initgroups,
> >> > -getpwnam,
> >> > -getaddrinfo,
> >> > -gethostbyname.
> >> >
> >> > If I got that right, they use functions which are located in NSS
> shared
> >> > libraries.
> >> >
> >> > I am looking for a way of compiling my program so that I can run it in
> >> > system B.
> >> > I have libraries available from system B and that is all that I have.
> >> >
> >> > I need help on getting this done.
> >> > I guess gcc versions are the same and as well libgcc_s.so.1 shared
> >> > library.
> >> >
> >> > My questions are:
> >> > Can I pull those libraries from system B and use it in compilatin
> >> > process?
> >> > Would that work?
> >> > I would still need to get include source files of that version, right?
> >> > Is there some archive site where I can find so old version of linux
> >> > kernel
> >> > source?
> >> > One thing that pops in to my mind is also trying to find gentoo stage
> 3
> >> > tarball of the kernel version 2.6.16.27
> >> > and compile the program there...I tried to search that but no luck in
> >> > that...
> >> >
> >> > Any help would be welcomed!
> >>
> >> You can statically compile your program on system A ( use gcc -static
> >> -o test test.c for example ). Then you should be able to run it in
> >> system B without any problem
> >>
> >
>
> Why don't you want to compile the program in system B if you already
> have the libraries around?
>
>


poisonbl at gmail

May 25, 2012, 3:55 AM

Post #6 of 8 (731 views)
Permalink
Re: Compile program with older libraries [In reply to]

On Thu, May 24, 2012 at 9:15 AM, Marko Košmerl <marko06 [at] gmail> wrote:
> Hi!
>
> I have some program which I am using in a thin client  which has Gentoo
> stage 3 root fs (kernel 2.6.39.4),
> lets call it system A.
> I've also compiled that program chroot-ed in this stage 3 fs from my
> personal computer.
>
> I have an other thin clients which have older system (B) on it which is
> older linux kernel 2.6.16.27.
> Library version which are needed are of course different and for that reason
> my program
> can not be run in this sistem.
>
> System A:
> Linux redondo 2.6.39.4 #18 Mon Mar 19 13:14:32 CET 2012 i586 i586 i386
> GNU/Linux
> /lib/libc-2.12.2.so
> gcc version 4.0.3
>
> System B:
> Linux carlos  2.6.16.27 #1 Sun Mar 25 11:09:40 CEST 2007 i586 i586 i386
> GNU/Linux
> /lib/libc-2.3.6.so
> gcc version 4.0.3
>
> Shared libraries that my binary uses are (in system A):
> linux-gate.so.1 =>  (0xffffe000)
> libpthread.so.0 => /lib/libpthread.so.0 (0xf76d6000)
> libuuid.so.1 => /lib/libuuid.so.1 (0xf76d1000)
> libstdc++.so.6 => /usr/lib/gcc/i486-pc-linux-gnu/4.4.5/libstdc++.so.6
> (0xf75da000)
> libm.so.6 => /lib/libm.so.6 (0xf75b2000)
> libc.so.6 => /lib/libc.so.6 (0xf7468000)
> /lib/ld-linux.so.2 (0xf76f3000)
> libgcc_s.so.1 => /usr/lib/gcc/i486-pc-linux-gnu/4.4.5/libgcc_s.so.1
> (0xf7449000)
>
> If i try to compile my program using '-static' directive, I still have a
> problem with 4 functions:
> -initgroups,
> -getpwnam,
> -getaddrinfo,
> -gethostbyname.
>
> If I got that right, they use functions which are located in NSS shared
> libraries.
>
> I am looking for a way of compiling my program so that I can run it in
> system B.
> I have libraries available from system B and that is all that I have.
>
> I need help on getting this done.
> I guess gcc versions are the same and as well libgcc_s.so.1 shared library.
>
> My questions are:
> Can I pull those libraries from system B and use it in compilatin process?
> Would that work?
> I would still need to get include source files of that version, right?
> Is there some archive site where I can find so old version of linux kernel
> source?
> One thing that pops in to my mind is also trying to find gentoo stage 3
> tarball of the kernel version 2.6.16.27
> and compile the program there...I tried to search that but no luck in
> that...
>
> Any help would be welcomed!

Well, you could use a chroot on system A to build it against an older
copy of the library. I can't find a stage3 with that range of glibc,
though if you can still track down sources to piece together a
toolchain, LFS 6.2 [1] is from right around that time frame (around
'06-'07). If anyone has a 2007.1 range stage3 laying around, though,
all the hard work's already done for setting up a perfect chroot as
long as it plays well with a newer kernel (or if you can do the build
in said chroot on system B), I've had issues with a too-new set of
libraries on older kernels more than once, not sure I've tried the
other direction.

[1] http://www.linuxfromscratch.org/lfs/view/6.2

--
Poison [BLX]
Joshua M. Murphy


marko06 at gmail

May 28, 2012, 4:16 AM

Post #7 of 8 (718 views)
Permalink
Re: Compile program with older libraries [In reply to]

I was able to find suitable gentoo stage 3 tarball:
http://88.191.254.16/gentoo/releases/x86/2007.0/stages/

Chrooted, compiled the source and tried to run binary it in old system. And
it worked!

On Fri, May 25, 2012 at 12:55 PM, Joshua Murphy <poisonbl [at] gmail> wrote:

> On Thu, May 24, 2012 at 9:15 AM, Marko Košmerl <marko06 [at] gmail> wrote:
> > Hi!
> >
> > I have some program which I am using in a thin client which has Gentoo
> > stage 3 root fs (kernel 2.6.39.4),
> > lets call it system A.
> > I've also compiled that program chroot-ed in this stage 3 fs from my
> > personal computer.
> >
> > I have an other thin clients which have older system (B) on it which is
> > older linux kernel 2.6.16.27.
> > Library version which are needed are of course different and for that
> reason
> > my program
> > can not be run in this sistem.
> >
> > System A:
> > Linux redondo 2.6.39.4 #18 Mon Mar 19 13:14:32 CET 2012 i586 i586 i386
> > GNU/Linux
> > /lib/libc-2.12.2.so
> > gcc version 4.0.3
> >
> > System B:
> > Linux carlos 2.6.16.27 #1 Sun Mar 25 11:09:40 CEST 2007 i586 i586 i386
> > GNU/Linux
> > /lib/libc-2.3.6.so
> > gcc version 4.0.3
> >
> > Shared libraries that my binary uses are (in system A):
> > linux-gate.so.1 => (0xffffe000)
> > libpthread.so.0 => /lib/libpthread.so.0 (0xf76d6000)
> > libuuid.so.1 => /lib/libuuid.so.1 (0xf76d1000)
> > libstdc++.so.6 => /usr/lib/gcc/i486-pc-linux-gnu/4.4.5/libstdc++.so.6
> > (0xf75da000)
> > libm.so.6 => /lib/libm.so.6 (0xf75b2000)
> > libc.so.6 => /lib/libc.so.6 (0xf7468000)
> > /lib/ld-linux.so.2 (0xf76f3000)
> > libgcc_s.so.1 => /usr/lib/gcc/i486-pc-linux-gnu/4.4.5/libgcc_s.so.1
> > (0xf7449000)
> >
> > If i try to compile my program using '-static' directive, I still have a
> > problem with 4 functions:
> > -initgroups,
> > -getpwnam,
> > -getaddrinfo,
> > -gethostbyname.
> >
> > If I got that right, they use functions which are located in NSS shared
> > libraries.
> >
> > I am looking for a way of compiling my program so that I can run it in
> > system B.
> > I have libraries available from system B and that is all that I have.
> >
> > I need help on getting this done.
> > I guess gcc versions are the same and as well libgcc_s.so.1 shared
> library.
> >
> > My questions are:
> > Can I pull those libraries from system B and use it in compilatin
> process?
> > Would that work?
> > I would still need to get include source files of that version, right?
> > Is there some archive site where I can find so old version of linux
> kernel
> > source?
> > One thing that pops in to my mind is also trying to find gentoo stage 3
> > tarball of the kernel version 2.6.16.27
> > and compile the program there...I tried to search that but no luck in
> > that...
> >
> > Any help would be welcomed!
>
> Well, you could use a chroot on system A to build it against an older
> copy of the library. I can't find a stage3 with that range of glibc,
> though if you can still track down sources to piece together a
> toolchain, LFS 6.2 [1] is from right around that time frame (around
> '06-'07). If anyone has a 2007.1 range stage3 laying around, though,
> all the hard work's already done for setting up a perfect chroot as
> long as it plays well with a newer kernel (or if you can do the build
> in said chroot on system B), I've had issues with a too-new set of
> libraries on older kernels more than once, not sure I've tried the
> other direction.
>
> [1] http://www.linuxfromscratch.org/lfs/view/6.2
>
> --
> Poison [BLX]
> Joshua M. Murphy
>
>


poisonbl at gmail

May 28, 2012, 11:29 PM

Post #8 of 8 (716 views)
Permalink
Re: Compile program with older libraries [In reply to]

On Mon, May 28, 2012 at 7:16 AM, Marko Košmerl <marko06 [at] gmail> wrote:
> I was able to find suitable gentoo stage 3 tarball:
> http://88.191.254.16/gentoo/releases/x86/2007.0/stages/
>
> Chrooted, compiled the source and tried to run binary it in old system. And
> it worked!
>
>

Glad you got it working! I was worried you might have to go the long
way around...

--
Poison [BLX]
Joshua M. Murphy

Gentoo user RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.