如何安装用 C 编写的自定义库?

如何安装用 C 编写的自定义库?

我想在我的系统(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/liblibcs.aspl.jar。要从 C 程序使用该库,请链接到libcs.a


如果你想安装斯坦福 C++ 可移植库,你可以运行这些终端中的命令(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
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在运行之前有一个步骤makeREADME澄清要构建此软件,只需运行make

假设make成功,它创建了:

  • 静态链接.a库文件lib/libStanfordCPPLib.a大概你将链接到你的程序中
  • obj子目录中的静态可链接目标文件cpplib

除了链接到.a文件(通常情况下会这样做)之外,似乎使用库的一种方法就是用.o程序链接到这些文件。 的内容Makefile(尤其是 下# Test program)显示了如何执行此操作。

不过,该.a文件似乎已将所有这些文件链接到其中,因此,除非您愿意这样做或需要生成特别小的静态链接可执行文件,否则.o您不必使用单个文件。.o

(如果您需要构建一个共享库(即.so文件)而不是静态库,我建议您编辑您的问题以添加有关该信息。我不知道如何以这种方式构建 cpplib,但其他人也许可以回答。)

相关内容