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 desudo 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 porbash
.
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
decpplib
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.)