libtool
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Why --nostdlib is used for building shared library?


From: Mu Qiao
Subject: Why --nostdlib is used for building shared library?
Date: Sun, 15 May 2011 12:33:56 +0800

Hi,

I use libtool to manage the build of my C++ shared library. But I find
it passes --nostdlib to g++. It works fine in most cases but is not
working well with gcov.

This is the command for linking:

libtool: link: g++ -shared -nostdlib
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/../../../../lib64/crti.o
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/crtbeginS.o
src/.libs/libcppbash_la-libbash.o
src/.libs/libcppbash_la-cppbash_builtin.o
src/builtins/.libs/libcppbash_la-echo_builtin.o
src/builtins/.libs/libcppbash_la-source_builtin.o
src/builtins/.libs/libcppbash_la-return_builtin.o
src/builtins/.libs/libcppbash_la-inherit_builtin.o
.libs/libcppbash_la-libbashLexer.o .libs/libcppbash_la-libbashParser.o
src/core/.libs/libcppbash_la-interpreter.o
src/core/.libs/libcppbash_la-bash_ast.o  -Wl,--whole-archive
./.libs/libwalker.a -Wl,--no-whole-archive  -lantlr3c
-L/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2
-L/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/../../../../lib64
-L/lib/../lib64 -L/usr/lib/../lib64
-L/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/../../../../x86_64-pc-linux-gnu/lib
-L/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/../../.. -lstdc++ -lm -lc
-lgcc_s /usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/crtendS.o
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/../../../../lib64/crtn.o
--coverage   -Wl,-soname -Wl,libcppbash.so.0 -o
.libs/libcppbash.so.0.0.0

When I add "--coverage" to CXXFLAGS(I also added -g and -O0), the
project fails to compile on 64bit machines(on 32bit machines it's ok).
Here's the error message:

/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/../../../../x86_64-pc-linux-gnu/bin/ld:
.libs/variable_printer: hidden symbol `atexit' in
/usr/lib64/libc_nonshared.a(atexit.oS) is referenced by DSO
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/../../../../x86_64-pc-linux-gnu/bin/ld:
final link failed: Nonrepresentable section on output
collect2: ld returned 1 exit status
make[1]: *** [variable_printer] Error 1
make[1]: *** Waiting for unfinished jobs....
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/../../../../x86_64-pc-linux-gnu/bin/ld:
.libs/metadata_generator: hidden symbol `atexit' in
/usr/lib64/libc_nonshared.a(atexit.oS) is referenced by DSO
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.2/../../../../x86_64-pc-linux-gnu/bin/ld:
final link failed: Nonrepresentable section on output
collect2: ld returned 1 exit status

variable_printer and metadata_generator are two utilities that are
linked against the shared libraries.  Things work properly when I
reconfigure my project with --disable-shared.

-- 
Best wishes,
Mu Qiao
GnuPG fingerprint: 92B1 B0C4 8D14 F8C4 EFA5  3ACC 30B3 0DE4 17B1 57E9



reply via email to

[Prev in Thread] Current Thread [Next in Thread]