Как установить пользовательскую библиотеку, написанную на C?

Я хочу установить Stanford Portable Library в моей системе (Ubuntu 14.04). Кто-нибудь может, пожалуйста, научить меня, как это сделать?

1
задан 11 May 2015 в 18:44

1 ответ

Если Вы хотите установить ветвление CS50 на базе С Стэнфордской Портативной Библиотеки, можно установить его путем выполнения этих команд в терминале (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 требуется, по крайней мере, для 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 архив для получения дополнительной информации. Часто для создания программного обеспечения из источника существует a ./configure шаг перед выполнением make; README разъясняет, что, для создания этого программного обеспечения каждый просто работает make.

Принятие make следовавший, это создало:

  • статически связываемый .a файл библиотеки, lib/libStanfordCPPLib.a, который является, вероятно, что Вы свяжете в свои программы
  • статически связываемые объектные файлы в obj подкаталог cpplib

Помимо соединения против .a файл (как можно было бы обычно делать), кажется, что один способ пользоваться библиотекой состоит в том, чтобы связаться против них .o файлы с Вашими программами. Содержание Makefile, особенно под # Test program, покажите, как сделать это.

.a файл, кажется, имеет все они .o файлы связались в него, тем не менее, таким образом, Вам не придется использовать человека .o файлы, если Вы не предпочитаете делать так или должны произвести особенно маленький статически связанный исполняемый файл.

(Если необходимо создать общую библиотеку - т.е. .so файл - а не статический, я предлагаю редактировать Ваш вопрос добавить информацию об этом. Я не знаю, как создать cpplib таким образом, но другие могут отвечать на это.)

3
ответ дан 12 May 2015 в 04:44
  • 1
    сделанный, и в то время как я пытаюсь установить openssh-сервер, я добираюсь dpkg: error processing package openssh-server (--configure): subprocess installed post-installation script returned error exit status 1 Errors were encountered while processing: openssh-server E: Sub-process /usr/bin/dpkg returned an error code (1) – Rudziankoŭ 11 August 2016 в 02:08

Другие вопросы по тегам:

Похожие вопросы: