ytrembla
9/30/2008 4:00:00 PM
This is off topic for this newsgroup. There are GNu newsgroups and Linux
development newsgroup where this would be more appropriate.
However, what you are trying to do is not quite simple nor totally reliable.
As you can see by the output of ldd, you have moved from .5 to .6 for
libstcdc++but the other libraries are also of a different version.
As an alternative, you could instead make a virtual machine on your dev
machine that is similar to the build machine. It might save you a lot of
hassle.
In article <6a70cf83-46e0-4605-ae88-62e5ac34a9dc@k13g2000hse.googlegroups.com>,
Alexander Dong Back Kim <alexdbkim@gmail.com> wrote:
>Dear all members,
>
>First of all, I apologize I posted such a topic which is not purely
>related with this group. The reason why I posted this is I hope some
>of members this group knows about g++ and they have better idea about
>my problem so please forgive my post.
>
>I have this problem that development machine's default C++ library is
>libstdc++.so.6. of course the OS is linux. However, the target machine
>has libstdc++.so.5 so I copied the library file to dev machine.
>
>Therefore, the dev machine has both version 5 and 6 of libstdc++
>whereas the target machine has only version 5. I wrote and tested the
>following application (not really an application) on the target
>machine.
>
>#include <iostream>
>using namespace std;
>int main() { cout << "hello" << endl; return 0; }
>
>I compile the code with...
>
>target $ g++ main.cpp
>
>It, of course, produces "a.out". I did "ldd" to see what shared (or
>dynamic) library the application links and the result was...
>
> libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x00c25000)
> libm.so.6 => /lib/tls/libm.so.6 (0x00951000)
> libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x006af000)
> libc.so.6 => /lib/tls/libc.so.6 (0x0026c000)
> /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00a42000)
>
>Now I compiled the same application on the dev machine and did the
>same command and the result is...
>
> libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x005e8000)
> libm.so.6 => /lib/tls/libm.so.6 (0x00372000)
> libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00555000)
> libc.so.6 => /lib/tls/libc.so.6 (0x0023e000)
> /lib/ld-linux.so.2 (0x00224000)
>
>If I run the application, which was compiled on the dev machine, on
>the target machine it says an error message...
>
>./a.out: error while loading shared libraries: libstdc++.so.6: cannot
>open shared object file: No such file or directory
>
>This totally makes sense because the target machine doesn't have the
>library "libstdc++.so.6". I did "ldd" and it shows more specific
>reason.
>
> libstdc++.so.6 => not found
> libm.so.6 => /lib/tls/libm.so.6 (0x0079b000)
> libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00689000)
> libc.so.6 => /lib/tls/libc.so.6 (0x00111000)
> /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x0046c000)
>
>Now, I start falling in a panic because I have so many questions about
>next step. I simply thought I might be able to copy the lib file
>"libstdc++.so.6" from dev machine to target machine. However, I'm
>wornding whether this is right thing to do. Is this problem that
>simple? Would it cause some weird problems when a application needs to
>use such thing like RTTI or exception handling? Because of these many
>doubt, I slightly think about another way of doing this. What about
>using "libstdc++.so.5" when I compile the application on the dev
>machine?
>
>Now. How can I do this? I have no idea how I can force g++ choose
>libstdc++.so.5 instead of libstdc++.so.6? Moreover, I'm also worrying
>about whether it is right thing...
>
>or is whole my idea just crap? Please give me any suggestion or idea
>before I knock the door of hell...
>
>regards,
>Alex Kim