Como instalar uma biblioteca customizada escrita em C?

1

Eu quero instalar o Stanford Portable Library no meu sistema (Ubuntu 14.04). Alguém pode me instruir como fazer isso?

    
por Snake Eyes 11.05.2015 / 17:04

1 resposta

3

Se você deseja instalar o garfo CS50 baseado em C da Biblioteca Portátil de Stanford, você pode instalá-lo executando estes comandos em um terminal ( Ctrl + Alt + T ):

# Install build dependencies and set up /usr/local/src for administrators.
sudo apt-get update && sudo apt-get install build-essential openjdk-7-jdk git
cd /usr/local/src && sudo chgrp sudo . && sudo chmod g+w,+t .

# Retrieve, configure, build, test, and install the library.
git clone git://github.com/cs50/spl.git && cd spl
make SHELL=/bin/bash
build/tests/TestStanfordCSLib
sudo make SHELL=/bin/bash install

SHELL=/bin/bash é necessário, pelo menos para a etapa make install , porque o Makefile usa um recurso presente em bash ( expansão de chaves ) mas não presente em o padrão do Ubuntu /bin/sh (que é dash ).

  • A execução de sudo make install em vez de sudo make SHELL=/bin/bash install produzirá o erro:

    cp: cannot stat ‘build/lib/{libcs.a,spl.jar}’: No such file or directory
    Makefile:320: recipe for target 'install' failed
    
  • Em as instruções de criação , que no momento da redação deste texto não foi atualizado com um procedimento para o Ubuntu, os usuários do Fedora são instruídos a executar sudo make install . Isso funciona no Fedora , mas não no Ubuntu, porque o /bin/sh do Fedora é fornecido por bash .

Depois de criar e instalar a biblioteca usando essas etapas, dois novos arquivos existirão em /usr/local/lib : libcs.a e spl.jar . Para usar a biblioteca de programas em C, crie um link para libcs.a .

Se você deseja instalar A Biblioteca Portátil de Stanford para C ++ , você pode fazer isso executando estes comandos em um terminal ( Ctrl + Alt + T ):

# Install build dependencies and set up /usr/local/src for administrators.
sudo apt-get update && sudo apt-get install build-essential openjdk-7-jdk
cd /usr/local/src && sudo chgrp sudo . && sudo chmod g+w,+t .

# Retrieve, configure, build, and test the library.
wget https://cs.stanford.edu/people/eroberts/StanfordCPPLib/cpplib.zip
unzip cpplib.zip && cd cpplib
make
./TestStanfordCPPLib

Esse procedimento funcionou para mim e o executável de teste foi executado com êxito. Veja o conteúdo do arquivo README no arquivo cpplib para informações adicionais. Geralmente, para criar software a partir da origem, há uma etapa ./configure antes de executar make ; o README esclarece que, para construir este software, basta executar make .

Assumindo que make foi bem-sucedido, criou:

  • um arquivo de biblioteca estaticamente vinculável .a , lib/libStanfordCPPLib.a , que é provavelmente o que você vinculará a seus programas
  • arquivos de objeto estaticamente vinculáveis no subdiretório obj de cpplib

Além de vincular-se ao arquivo .a (como normalmente é feito), parece que uma maneira de usar a biblioteca é vincular esses arquivos .o aos seus programas. O conteúdo de Makefile , especialmente em # Test program , mostra como fazer isso.

O arquivo .a parece ter todos esses .o arquivos vinculados a ele, portanto, você não deve ter que usar os arquivos .o individuais, a menos que prefira fazer isso ou precise produzir um número estatisticamente executável vinculado.

(Se você precisar criar uma biblioteca compartilhada - ou seja, um arquivo .so - em vez de um estático, sugiro editar sua pergunta para adicionar informações sobre isso. Não sei como criar o cpplib em desta forma, mas outros podem ser capazes de responder isso.)

    
por Eliah Kagan 11.05.2015 / 17:42