Como instalar uma biblioteca GMP personalizada para apenas um usuário?

2
Estou fazendo uma grande quantidade de dados em um sistema e gostaria de compilar (e aperfeiçoar) um GMP customizado 6.1.0 para o usuário que está iniciando a computação de processamento de números. Anteriormente, eu tinha um sistema Debian wheezy (7.6) no qual eu instalava uma biblioteca GMP customizada enquanto era root e modificava as coisas deixadas e deixadas no sistema de arquivos (porque eu não sabia de nada). Acabou funcionando: minha biblioteca GMP personalizada estava processando números 15% mais rápido do que o estoque de GMP.

Agora eu instalei um novo Debian (Jessie 8.3) naquele computador com o GMP "stock" (aquele que vem com o Debian Jessie):

# gcc --version
gcc (Debian 4.9.2-10) 4.9.2

# apt-get install libgmp10
# apt-get install libgmp-dev

Qual é aparentemente GMP 6.0.0.

Estou compilando meu programa de processamento de números:

$ gcc crunch.c -o crunch.o -L/gmp_install/lib -lgmp

(Eu sei que provavelmente poderia ganhar alguns mexendo com alguns parâmetros passados para o GCC, mas o grande problema aqui é a "lentidão" do GMP não customizado).

Eu, então, invoco ./crunch.o e ele funciona, mas é 15% mais lento do que meu GMP de compilação personalizado no meu sistema antigo (usando exatamente o mesmo comando de compilação gcc colado acima exatamente no mesmo computador).

Eu gostaria agora de compilar um GMP customizado 6.1.0 novamente, mas acessível apenas para o usuário executando a computação pesada.

Em outras palavras: eu gostaria de instalar um GMP customizado de forma limpa em vez de mexer (sendo root) com todo o sistema de arquivos.

Mas eu não entendo o que -L / gmp_install / lib se refere, nem o que -lgmp faz.

Eu entendo que os primeiros passos que preciso fazer são:

  • vá para o link
  • faça o download do gmp-6.1.0.tar.bz2
  • untar
  • ???

Então, como eu posso compilar um GMP personalizado para uma conta de usuário (não raiz) e como eu iria então compilar meu programa crunch.c?

    
por Cedric Martin 23.02.2016 / 16:09

1 resposta

2

Você pode usar as etapas a seguir como usuário normal

tar xvjf gmp-6.1.0.tar.bz2
cd gmp-6.1.0
./configure --prefix=${HOME}/gmp/6.1.0
make 
make install

Isso instalará o gmp em ~/gmp/6.1.0 . Agora, se você quiser usar esta versão para compilar o software ou usá-lo em tempo de execução, você deve definir algumas variáveis de ambiente:

GMP_DIR="${HOME}/gmp/6.1.0"
export LD_LIBRARY_PATH=${GMP_DIR}/lib64:$LD_LIBRARY_PATH
export LIBRARY_PATH=${GMP_DIR}/lib64:$LIBRARY_PATH
export CPATH=${GMP_DIR}/include:$CPATH

Você pode colocar isso no seu ~/.bashrc ou em um arquivo separado, você source antes de querer usá-lo, ou escrever um script wrapper incluindo seu material binário. Outras pessoas gostam de usar environment-modules para esse tipo de tarefa.

O argumento -lgmp diz ao vinculador para vincular-se à biblioteca compartilhada libgmp.so e -L/gmp_install/lib significa procurar bibliotecas em /gmp_install/lib e nos caminhos conhecidos ( /lib, lib64, /usr/lib, /usr/lib64, ...) .

As variáveis de ambiente são usadas da seguinte forma:

  • LIBRARY_PATH deve fornecer o mesmo que o -L switch
  • CPATH fornece um caminho de pesquisa adicional para os arquivos de cabeçalho
  • LD_LIBRARY_PATH é necessário para o tempo de execução
por 23.02.2016 / 17:34