и ставить через них deb пакеты
у rpm-based в этом вопросе как-то уныло
gcc -o file1.o -c file1.c
gcc -o file2.o -c file2.c
gcc -o main.o -c main.c
gcc -o program file1.o file2.o main.o -lm -lawesomelib
// внутри файла foobar.h
#ifndef __FOOBAR_H
#define __FOOBAR_H
... содержимое...
#endif /* __FOOBAR_H */