Apparently it installed in /usr/local/lib which is a non-standard place?
É um local padrão, mas às vezes os sistemas são configurados presumindo que você não vai instalar nada, e por isso é deixado de fora do caminho do cache do vinculador.
Where and how do I install my C libs? (Perhaps the same place yum installs them?)
Isso geralmente é uma má ideia, esp. se houver pacotes de distribuição potencialmente - agora, ou abaixo da linha - que entrem em conflito. Fique com / usr / local.
Verifique se /usr/local/lib
está em ld.so.cache executando ldconfig -v 2>&1 | grep /usr/local
. Se você não obtiver nenhuma saída, crie um arquivo /etc/ld.so.conf.d/local.conf
com uma linha:
/usr/local/lib
Execute essa ldconfig
linha novamente e, desta vez, você deverá vê-la. Você precisa executar ldconfig toda vez que construir e instalar uma biblioteca a partir do código-fonte .
I can't manage to compile a simple program that uses this library
Porque você precisa passar os parâmetros pkg-config
para o compilador. Primeiro, você precisa encontrar o gsl.pc
real.
find /usr/local -name gsl.pc
Acho mais provável que seja em /usr/local/lib/pkgconfig
e não em /usr/local/pkgconfig
, como você diz. Experimente pkg-config --list-all | grep gsl
e veja se ele foi encontrado. Se não for export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
(ou qualquer que seja o diretório com gsl.pc) e tente novamente. Quando você acertar, você pode querer adicioná-lo em algum lugar, por exemplo, /etc/profile.d
.
Agora, para realmente compilar:
gcc gsl_erf.c -o gsl 'pkg-config --libs --cflags gsl'
Você não precisa incluir -I
e -L
você mesmo; é para isso que serve pkg-config
, embora tudo o que você provavelmente estava faltando antes fosse -lgsl
.