Isso me parece um erro de linkagem, no comando
gcc -Wall -o arquivo_executavel arquivo_fonte.c 'pkg-config --cflags --libs cairo' 'cups-config --cflags --libs' O comando pkg-config é uma ferramenta de programação que auxilia o gcc a trabalhar
com bibliotecas e na linkagem , vc pode aprender mais aqui
http://en.wikipedia.org/wiki/Pkg-config e aqui
http://www.freedesktop.org/wiki/Software/pkg-config/ .
Quando você instala uma biblioteca (automaticamente através do uso do RPM, deb, ou outro sistema de empacotamento binário ou compilado através do arquivo fonte da biblioteca), um arquivo .pc deverá ser incluido em um diretório com outros arquivos .pc , o diretório exato depende do seu sistema.
Se você digitar locate pkgconfig no prompt do sistema você terá uma listagem completa da localização dos arquivos .pc, observe que deverá aparecer aqui a biblioteca cairo, no meu sistema (64 bits) a localização é
/usr/lib/x86_64-linux-gnu/pkgconfig/cairo.pc Já o comando cups-config --cflags --libs utiliza o cups-config que é um programa utilitário do CUPS. Ele auxilia o gcc na compilação e linkagem. No meu a saida do comando é :
-lcups -L/usr/lib/x86_64-linux-gnu -Wl,-Bsymbolic-functions -Wl,-z,relro -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err -lgnutls -L/lib/x86_64-linux-gnu -lgcrypt -lz -lpthread -lcrypt -lm Abraços