O compilador GCC irá procurar cabeçalhos dependendo de como você declara o cabeçalho, então há duas possibilidades
Declarando o cabeçalho usando colchetes angulares < >
#include <math.h>
Neste caso, o compilador irá procurar nas localizações padrão do cabeçalho do sistema no Ubuntu, é
-
/usr/local/include
-
/usr/target/include
-
/usr/include
Portanto, se a sua biblioteca necessária tiver o arquivo de cabeçalho em um desses locais, o GCC deverá encontrá-lo por padrão.
Declarando o cabeçalho com ""
#include "myheader.h"
ou
#include "myheaders/header.h"
Neste caso, o compilador irá procurar no mesmo diretório que o seu arquivo .c, a menos que você diga ao gcc para procurar em outro lugar usando a opção -Idir
Mais informações podem ser encontradas neste artigo sobre Compilação, vinculação, Makefile, arquivos de cabeçalho em gribblelab.org