Установка библиотек и заголовочных файлов в соответствии с Ubuntu Linux для разработки C/C++

Я должен признать, что чувствую себя полностью потерянным каждый раз, когда я должен выполнить зависимости некоторого C или кода C++. В настоящее время я нахожусь на  Ubuntu 9.10 (Кармическая Коала), но я помню то же чувство несчастности из Windows.

Я действительно думаю, что действительно понимаю C, C++, статические и динамические библиотеки, заголовочные файлы и соединение, а также менеджера по пакету "способность", но когда дело доходит до практической части, у меня нет абсолютно никакой идеи, что сделать. Даже если я управляю им так или иначе, я действительно не знаю, как я добрался там, и ни о чем не узнайте из него.

Например, сегодня я хотел использовать код, который указывает, что "Использует glib2, завихрение и openssl". В конце я выяснил это curl и openssl были уже установлены, но я должен был установить libcurl3-dev через моего менеджера по пакету, который будет также требуемый (и установленный) libcurl4-openssl-dev так, чтобы я не должен был волноваться о OpenSSL. Но я должен был выбрать эти пакетные имена из 67 подобно звучащих альтернатив. И glib, с другой стороны, должен был быть загружен и создан вручную, так как не было никакого соответствующего пакета вообще.

Потребовались мои несколько часов для обнаружения этого, и это не первый раз. Таким образом, мой вопрос действительно:

Когда у меня есть неопределенное описание зависимостей:

  • Как я узнаю, кто из тех уже установлен?
  • Как я выясняю, кто из тех может быть выполнен путем установки пакетов?
  • Как я знаю точные названия тех пакетов?
  • Если пакет должен быть создан из источника, как я удостоверяюсь, чтобы я не заблудился в бесконечных зависимостях этого источника и зависимостях тех зависимостей...?
  • Я думаю, что также должен связать библиотеки со своими объектными файлами. Если единственный пакет идет с несколькими статическими файлами библиотеки, как я знаю (без метода проб и ошибок) который связаться?
7
задан 30.03.2016, 22:24

1 ответ

Выяснение, какие пакеты установить для удовлетворения зависимостей не являются точной наукой. Но существуют некоторые подсказки, которые могли бы помочь Вам:

  • Когда Вы работаете с удовлетворяющими зависимостями для компиляции чего-то, Вы почти всегда хотите пакет, который заканчивается в -dev. Это коротко для разработки. Например, openssl пакет содержит инструменты командной строки и библиотеки для работы с шифрованием. libssl-dev содержит заголовочные файлы и библиотеки для openssl разработки.
  • Для поиска пакета ключевым словом, использующим склонный, использовать apt-cache search. Например, я на самом деле не знал, что libssl-dev был, каково название openssl dev пакет было. Я нашел что использование этой команды: apt-cache search openssl | grep dev и затем идя с тем, который, казалось, не был связан с другим языком/библиотекой.
  • Вы видите, какие пакеты Вы установили использование dpkg -l, но в целом просто найдите пакет, который Вы хотите и говорите склонный установить его, если у Вас уже будет он затем склонный, то скажет Вам. Другой хороший совет - то, если Вы хотите знать, какой пакет владеет файлом, использовать dpkg -S /path/to/thefile
  • Если Вы заканчиваете тем, что должны были создать пакет из источника, нет никакого простого способа разрешить дерево зависимостей. ./configure должен сказать Вам или файлу README. Часто они будут даже называть точный пакет требуемым.
  • Для выяснения, что связаться, обычно это связано с названием пакета или наиболее общего названия для того, что Вы хотите. Для нашего libssl примера Вы просто передали бы -lssl к gcc. Если Вы не знаете что опции для -l смотрят в/lib/(просто удаляют "lib" из передней стороны и ".so..." от спины для получения 'середины', которая передается gcc).
3
ответ дан 07.12.2019, 15:08

Теги

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