user163911
user163911

Reputation: 189

gcc object file linking

I'm learning C by rehashing some Project Euler problems, as I did for Python. In Python, I created a file of general mathematical utilities such as prime number checking, which I pulled functions out of as and when I needed them. I was wondering if there was a way to simply do a similar thing with C, other than compiling alongside the utilities file each time?

I'm running Linux and using gcc as my compiler, if that helps.

Upvotes: 0

Views: 6648

Answers (1)

chill
chill

Reputation: 16898

It looks like you need some basic knowledge about separate compilation and libraries(archives and shared libraries). You can read about it in chapter "2.3 Writing and Using Libraries" of

This book is also available as a PDF from http://www.advancedlinuxprogramming.com/ (although the site is down at the moment). Perhaps you can search for other places to legally download the PDF.

A crash course:

  • You create a number of object (*.o) files via

    gcc name.c -o name.o
    
  • Each file has a header that declares the functions in the source file. You might have several source files using a single header if the functions are related. The source files such as name.c include that header. Your code that uses those functions also includes that header.

  • You create a static library (archive) with ar

    ar ruv libXYZ.a name1.o name2.o ... nameN.o
    

    The prefix lib is important.

  • You link to the library with

    gcc prog.o -lXYZ -o prog
    

    This command will create an executable named prog from the object file prog.o and from object files, extracted from libXYZ.a, which are required to satisfy symbol references from prog.o.

Upvotes: 4

Related Questions