tags:

views:

43

answers:

2

I am using the CodeSorcery arm-eabi-gcc tool chain and I have a problem using ld separate from gcc

I can compile my simple program and link it, if I let gcc call the ld.

This works not problem

g++ test.cpp; # Works

This does not work because of missing symbols

g++ -c test.cpp

ld -o test crti.o crtbegin.o test.o crtend.o crtn.o -lgcc -lc -lstdc++; # Fails

Notice I am adding the gcc libraries to the ld command

What am I missing?

Also if there is a better way to make configuring ld to using the default gcc linking?

Thanks

+2  A: 

The easiest way is to have gcc/g++ drive a separate link:

g++ -c test.cpp      # compile
g++ -o test test.o   # separate link

If you need to pass linker options, you can use -Wl:

g++ -o test test.o -Wl,-somelinkeroption,arg
R Samuel Klatchko
+1  A: 

@R Samuel Klatchko has the best advice, but if you really want to see what gcc/g++ is linking in use the -v verbose option.

It displays the full directory paths used to search for header files and libraries, the predefined preprocessor symbols, and the object files and libraries used for linking.

zdav