Re: [gentoo-user] Compile program with older libraries
On Mon, May 28, 2012 at 7:16 AM, Marko Košmerl mark...@gmail.com 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
Re: [gentoo-user] Compile program with older libraries
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 poiso...@gmail.com wrote: On Thu, May 24, 2012 at 9:15 AM, Marko Košmerl mark...@gmail.com 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 = (0xe000) 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
Re: [gentoo-user] Compile program with older libraries
On Thu, May 24, 2012 at 9:15 AM, Marko Košmerl mark...@gmail.com 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 = (0xe000) 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
Re: [gentoo-user] Compile program with older libraries
On Thu, May 24, 2012 at 2:15 PM, Marko Košmerl mark...@gmail.com 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 = (0xe000) 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
Re: [gentoo-user] Compile program with older libraries
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 hwoar...@gentoo.orgwrote: On Thu, May 24, 2012 at 2:15 PM, Marko Košmerl mark...@gmail.com 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 = (0xe000) 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
Re: [gentoo-user] Compile program with older libraries
On Thu, May 24, 2012 at 2:58 PM, Marko Košmerl mark...@gmail.com 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 hwoar...@gentoo.org wrote: On Thu, May 24, 2012 at 2:15 PM, Marko Košmerl mark...@gmail.com 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 = (0xe000) 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?
Re: [gentoo-user] Compile program with older libraries
The following is the problem: root@carlos:/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 hwoar...@gentoo.orgwrote: On Thu, May 24, 2012 at 2:58 PM, Marko Košmerl mark...@gmail.com 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 hwoar...@gentoo.org wrote: On Thu, May 24, 2012 at 2:15 PM, Marko Košmerl mark...@gmail.com 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 = (0xe000) 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?