Статические библиотеки Ncurses для включения в проект C++

Я установил последнюю библиотеку ncurses, которую использует мой проект. Теперь я хочу зарегистрировать статические библиотеки ncurses в svn, чтобы я мог проверить проект на другом компьютере и скомпилировать его без повторной установки ncurses в системе.

Итак, вопрос в том, в чем разница между файлами libncurses.a, libncurses++.a и libncurses_g.a? И нужны ли мне все они для моего проекта C++?
Спасибо!


person ravil    schedule 01.03.2011    source источник


Ответы (2)


libncurses.a   - This is the C compatible library.
libncurses++.a - This is the C++ compatible library.
libncurses_g.a - This is the debug library.
libncurses_p.a - This is the profiling library.

Если вы хотите узнать, сможете ли вы обойтись без использования libncurses.a, вы можете переименовать библиотеку и запустить сборку своего приложения.

person E.Freitas    schedule 01.03.2011
comment
Большое спасибо за ответ. Мне удалось скомпилировать приложение с помощью libncurses.a. По какой-то причине, когда я использую libncurses++.a, я получаю кучу неопределенных символов. Однако при попытке запустить приложение я получаю сообщение об ошибке: Ошибка при открытии терминала: xterm. Когда я компилирую приложение с установленным ncurses и линкуюсь с lncurses, все в порядке... Что я могу сделать в этой ситуации? - person ravil; 01.03.2011
comment
Работает ли использование статической ссылки на библиотеку, как в: этой теме - person E.Freitas; 02.03.2011

Мой ответ немного запоздал [ :-) ], так как вы разместили свой вопрос более 4 лет назад. Но:

Архивирование предварительно скомпилированной библиотеки в вашей SVN означает, что ваше построенное приложение может дать сбой, если целевая машина отличается по какому-то критичному аспекту.

Да, вы можете безопасно запускать приложение на других машинах, настроенных точно так же (например, на полностью однородном вычислительном кластере). Однако, если машины различаются (например, из-за того, что на одной машине было обновление системы, а на другой нет), он может перестать работать. Это маловероятно, поэтому риск может быть приемлемым для того, что вы хотели бы сделать.

Я бы предложил другое решение: поместите последнюю стабильную версию исходников libncurses (tarball) в репозиторий SVN и добавьте небольшой скрипт (или make target), который запускает сборку libncurses и устанавливает встроенную библиотеку в какой-либо каталог проекта (не в каталог). системный каталог, но рядом с вашими каталогами сборки приложений, без фиксации в SVN). Этот шаг сборки нужно повторить только в том случае, если библиотека должна быть обновлена ​​или если вы хотите собрать/запустить на другом компьютере.

Это относится не к библиотеке ncurses в частности, а к любой библиотеке.

В зависимости от цели вашего проекта, рассмотрите возможность дальнейшего чтения о

  • управление пакетами
  • перекрестная компиляция
person HelpingHand    schedule 03.07.2015