Default libraries linked in by gcc?

Let's say I have a very simple C file (called foo.c):

int main()
{
   printf("foo");
   return 0;
}

Now I call gcc:

gcc foo.c

When I call gcc (with no options, as in the above example), what libraries are linked in by default and where are they located? (On Mac OS X 10.7)

The -v option to gcc will cause it to dump information about the default options it will use including the library paths and default libraries and object files that will be linked in.

If you give the -Wl,--verbose option, gcc will pass the --verbose to the linker which will dump exactly where it's looking for libraries, including both failed and successful searches.

Combine both options, and you'll see exactly what libraries are linked in, and why they're being linked in.

gcc -v foo.c -Wl,--verbose

What default libraries are taken while compiling C project with GCC , After this step, the compile starts to link your program with libraries: /usr/libexec/ gcc/x86_64-redhat-linux/5.3.1/collect2 -lc Where collect2 is� The C standard library itself is stored in '/usr/lib/libc.a' and contains functions specified in the ANSI/ISO C standard, such as 'printf'---this library is linked by default for every C program. Here is an example program which makes a call to the external function sqrt in the math library 'libm.a':

ldd binary_name. http://www.opennet.ru/man.shtml?topic=ldd&category=1&russian=2

Link Options (Using the GNU Compiler Collection (GCC)), (Object files are distinguished from libraries by the linker according to the file contents.) During the incremental link (by -r ) the linker plugin defaults to rel . find that they are not always linked with the shared libgcc. If GCC finds, at its configuration time, that you have a non-GNU linker or a GNU linker that does not support option --eh-frame-hdr, it links the shared version of libgccinto shared libraries by default. Otherwise, it takes advantage of the linker and optimizes

The standard libraries are linked by default. they are located in /usr in linux machines

An Introduction to GCC - Linking with external libraries, The C standard library itself is stored in '/usr/lib/libc.a' and contains functions specified in the ANSI/ISO C standard, such as 'printf' ---this library is linked by default� Other libraries have to be dynamically linked, like fontconfig, because it relies on a cache file format and hard coded locations that may differ on each system. What are the command line options to do this? If I specify -static, then gcc will refuse to dynamically link any libraries at all.

An Introduction to GCC, An executable file linked against a shared library contains only a small table of of these advantages gcc compiles programs to use shared libraries by default� Shared libraries with GCC on Linux By anduril462 Libraries are an indispensable tool for any programmer. They are pre-existing code that is compiled and ready for you to use.

Shared libraries with GCC on Linux, How to create and use shared libraries with GCC/G++ on Linux. Linking: Here is where all of the object files and any libraries are linked together to make your GCC has a list of places it looks by default, but our directory is not in that list. As ephemient said, the C library libc is linked by default and this library contains the implementations of stdlib.h, stdio.h and several other standard header files. Just to add to it, according to "An Introduction to GCC" the linker command for a basic "Hello World" program in C is as below:

Chapter 16. Using Libraries with GCC Red Hat Enterprise Linux 7 , Dynamically linked libraries which provide ABI compatibility can be updated without changing gcc can be configured to use linkers other than the default ld. Where the source file bar.c has dependencies on the library archive libfoo.a, the command: $ gcc -lfoo bar.c. is incorrect, and will surely lead to "undefined reference" errors. The correct form for this command is: $ gcc bar.c -lfoo

Comments
  • On my mac, ld says that --verbose is an unrecognized option
  • @user1516425: oh - when I see gcc, I just assume that GNU ld is involved. Looking at some docs for the Xcode linker, developer.apple.com/library/mac/#documentation/Darwin/Reference/…, you might want to see if the -t linker option will do the trick. Some other options to consider can be found under the "Options for introspecting the linker" heading on that page.
  • Note he said Mac OS X 10.7, where there is no ldd. The equivalent is otool -L.