O Xcode e o Fink | Homebrew | MacPorts no Mac OS X têm essas complicações (eles apenas o escondem de você). Existem dois aspectos para esse problema, compilar e executar. A compilação exigirá uma variedade de detalhes para qualquer biblioteca instalada em um caminho personalizado. Esta informação para algumas bibliotecas pode ser fornecida por pkg-config
, por ex. por um pequeno depósito de software que mantenho sob o meu diretório pessoal:
$ ls ~/usr/rhel6-x86_64/lib/pkgconfig/
goptfoo.pc jkiss.pc libsodium.pc
$ echo $PKG_CONFIG_PATH
/homes/jdoe/usr/rhel6-x86_64/lib/pkgconfig
$ pkg-config --libs --cflags libsodium
-I/homes/jdoe/usr/rhel6-x86_64/include -L/homes/jdoe/usr/rhel6-x86_64/lib -lsodium
$
Essas sequências de caracteres mágicas devem ser inseridas no processo de compilação de qualquer software que esteja sendo construído em bibliotecas na árvore de instalação personalizada. Os detalhes variam dependendo se Makefile
ou autotools
ou cmake
ou assim por diante. Uma maneira fácil é definir CFLAGS
para conter a saída pkg-config
ou apenas incluir a saída na linha de construção:
mkpwhash: mkpwhash.c
gcc -std=gnu99 'pkg-config --cflags --libs libsodium' -lcrypt -Werror -Wall -Wextra -Wundef -ftrapv -fstack-protector-all -pedantic -pipe -o mkpwhash mkpwhash.c
Para autotools
ou cmake
, você precisará pesquisar para ver como eles anexam essa cebola específica ao cinto, por exemplo, estudar as configurações configure.ac
existentes dos pacotes que usam autotools
, etc.
Para executar algo que tenha sido compilado para usar uma biblioteca compartilhada do caminho personalizado, a configuração LD_LIBRARY_PATH
provavelmente será suficiente (ou, em todo o sistema, mexer com ld.so.conf
):
$ unset LD_LIBRARY_PATH
$ ldd ~/usr/rhel6-x86_64/bin/mkpwhash | grep sodium
libsodium.so.13 => not found
$ exec $SHELL
$ echo $LD_LIBRARY_PATH
/homes/jdoe/usr/rhel6-x86_64/lib
$ ldd ~/usr/rhel6-x86_64/bin/mkpwhash | grep sodium
libsodium.so.13 => /homes/jdoe/usr/rhel6-x86_64/lib/libsodium.so.13 (0x00007e5c12ca7000)
$
(Sendo este unix, há várias maneiras de esfoliar o Bos grunniens , daí o "pelo menos um dos ..." conselhos de sua saída do processo de construção. Depósitos de software mais complicados provavelmente usarão stow
ou similar, dependendo da quantidade de corda (e, portanto, dores de cabeça) que você deseja se dar.)