我想在我的系统(Ubuntu 14.04)上安装斯坦福便携式图书馆。有人能指导我怎么做吗?
答案1
如果你想安装基于 C 的CS50前叉斯坦福便携式图书馆,您可以通过在终端 (++) 中运行以下命令来安装Ctrl它:AltT
# 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
是必需的,至少对于该make install
步骤而言,因为Makefile
使用了bash
(括号扩展)但不存在于Ubuntu 的默认设置/bin/sh
(即dash
)。
运行
sudo make install
而不是sudo make SHELL=/bin/bash install
会产生错误:cp: cannot stat ‘build/lib/{libcs.a,spl.jar}’: No such file or directory Makefile:320: recipe for target 'install' failed
在构建说明,截至撰写本文时尚未使用 Ubuntu 的程序进行更新,Fedora 用户被指示运行
sudo make install
。在 Fedora 上有效,但不是 Ubuntu,因为 Fedora 的/bin/sh
是由...提供bash
。
使用这些步骤成功构建并安装库后,两个新文件将存在于/usr/local/lib
:libcs.a
和spl.jar
。要从 C 程序使用该库,请链接到libcs.a
。
如果你想安装斯坦福 C++ 可移植库,你可以运行这些终端中的命令(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
这个过程对我来说很有效,测试可执行文件成功运行。有关更多信息,请参阅存档README
中的文件内容cpplib
。通常,从源代码构建软件时,./configure
在运行之前有一个步骤make
;README
澄清要构建此软件,只需运行make
。
假设make
成功,它创建了:
- 静态链接
.a
库文件lib/libStanfordCPPLib.a
,大概你将链接到你的程序中 obj
子目录中的静态可链接目标文件cpplib
除了链接到.a
文件(通常情况下会这样做)之外,似乎使用库的一种方法就是用.o
程序链接到这些文件。 的内容Makefile
(尤其是 下# Test program
)显示了如何执行此操作。
不过,该.a
文件似乎已将所有这些文件链接到其中,因此,除非您愿意这样做或需要生成特别小的静态链接可执行文件,否则.o
您不必使用单个文件。.o
(如果您需要构建一个共享库(即.so
文件)而不是静态库,我建议您编辑您的问题以添加有关该信息。我不知道如何以这种方式构建 cpplib,但其他人也许可以回答。)