nospam wrote:
> I have written a C++ program 1.cpp
The code below is not a valid C++ program.
>
> #include <stdioh>
This should be
#include <stdio.h>
or
#include <cstdio>
>
> main() {
This should be
int main() {
> }
>
> then I compile with g++ 1.cpp, it generated a ./a.out.
>
> [root@backup-server tmp]# ldd ./a.out
> libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x40027000)
> libm.so.6 => /lib/tls/libm.so.6 (0x400da000)
> libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x400fc000)
> libc.so.6 => /lib/tls/libc.so.6 (0x42000000)
> /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
>
> [root@backup-server tmp]# objdump -x a.out | grep NEED
> NEEDED libstdc++.so.5
> NEEDED libm.so.6
> NEEDED libgcc_s.so.1
> NEEDED libc.so.6
> VERNEED 0x804822c
> VERNEEDNUM 0x1
>
> why is there libm.so.6??? I dont have any math function called?
That's compiler-specific. Apparently some kinds of objects declared
either in <stdio.h> or implicitly by the compiler require a whole bunch
of other libraries (possibly all being part of the standard library) to
resolve some other symbols they use. That is not defined by the language
itself. Actually, how libraries are presented at linking (and whether
there indeed is 'linking') is not specified.
>
> I need to modify an extremely complicated C++ project using only integer
> and I need to prove to my client that the project does not use libm. However
> seems I cannot get rid of libm. Could anyone help?
Somebody in a g++ newsgroup should be able to. Your question has really
nothing to do with the language and everything to do with a particular
compiler. Please refer to gnu.g++.help newsgroup.
Victor
|