“сделайте и сделайте установку” программным обеспечением на Linux

Я работал над Linux в течение года. Одна вещь беспокоит меня, то, что я не знаком с процессом установки нового программного обеспечения с исходным кодом (я не могу установить их от netword из-за ограничений среды).

Я часто блокировался с различными видами ошибки, например:

------------------------
libtool: install: error: relink `Magick++/lib/libMagick++.la' with the above command before installing it
------------------------

или

------------------------
magick/.libs/libMagickCore.so: undefined reference to `gzseek64'
magick/.libs/libMagickCore.so: undefined reference to `gztell64'
------------------------

Хотя я наконец нашел решение с Google, я не знаю точно, почему это работает.

Может кто-либо помогать мне с этой ситуацией или давать мне некоторый совет относительно того, как улучшить меня относительно такого вида вещей?

Мне недостает знания, "настраивают", "делают", "различие 64 битов", "совместно использовал lib"; кто-либо мог указать на меня в правильном направлении и дать мне некоторые полезные книги или статьи?

2
задан 19.04.2013, 05:09

1 ответ

Ну, сначала двумя местами для запуска является GNU, делают руководство и GNU autoconf руководством. http://www.gnu.org/software/make/manual/make.html и http://www.gnu.org/software/autoconf/manual/autoconf.html, Вы не должны понимать все теперь, но это даст Вам чувство того, что продолжается негласно.

В основном при конфигурировании программы make-файл для системы сделан. Сегодня большая разработка программного обеспечения сделана с помощью законченного кода, который упаковывается, так называемые библиотеки. Таким образом, программисты не должны фокусироваться на некоторых вещах, которые очень важны, но в то же время не важны их программе. Возьмите, например, графический интерфейс пользователя. В сегодняшних программах это - необходимое зло, потому что у нас ничего нет более усовершенствованным в данный момент. Хотя много программ должны иметь GUI, это не особенно интересно программисту, который делает программу. Он захочет сфокусироваться на его основной функции вместо этого. Именно поэтому библиотеками GUI часто пользуются.

При компиляции программы компилятор должен знать, где найти, что вся программа библиотек использует. Составить завещание использует make-файл, настроенный autoconf для сообщения компилятора, где найти их. Autoconf обнаружит Вашу систему и соответственно настроит make-файл.

Также Вы, возможно, заметили, что исходный код программ содержится во многих файлах. Эти файлы обычно отдельно компилируются. Сделайте также заботится о порядке, в котором должны быть скомпилированы эти файлы. После того как все файлы компилируются, они должны быть соединены в одну программу. Компоновщик делает это. В конце Вы получаете исполняемый файл, который можно назвать.

Другая интересная вещь состоит в том, что нет никакой потребности назвать компилятор вручную. Составьте завещание, называют его и используют соответствующие настройки автоволшебно.

Теперь об ошибках Вы добираетесь: неопределенные ссылочные ошибки состоят в том, потому что так или иначе autoconf настроил make-файл для Вашей системы, правильно не обнаруживая все зависимости. Для Вашей программы нужен zlib, который будет правильно установлен прежде, чем скомпилировать его. Autoconf должен был сказать Вам, которые, но кажется, что Вы запустили, делают, который запустил компилятор, который не может найти zlib и производит ошибки.

Первая ошибка совершена из-за чего-то названного условной компиляцией. В основном можно сказать autoconf, что Вы не хотите использовать часть программы. Затем autoconf изменяет make-файл таким способом, которым не компилируется часть программы. Мне кажется, что, когда Magick ++ был скомпилирован, некоторые опции были выключены. Это в основном говорит Вам, что необходимо включить их.

Немного об общих библиотеках. После того как программа пользуется библиотекой, она может используемый в качестве статической библиотеки, которая связана так, это - часть программы или как динамическая библиотека, которая не является на самом деле частью программы. Статические библиотеки хороши, когда Вы хотите программу, которая не зависит ни от чего больше, но они занимают место в RAM, и несколько программ, пользуются той же библиотекой, каждый должен будет загрузить его в RAM для ее собственного использования. Вещи несколько отличаются с динамическими библиотеками. После того как программа запущена, она загружает библиотеку в RAM и использует его. Библиотека не является частью программы, таким образом, она должна быть отдельно установлена. Однако, если несколько программ пользуются той же библиотекой, она только должна быть загружена однажды в RAM, и та же копия будет использоваться всеми программами. Это почти всегда используется с библиотеками GUI.

В конце, так как Ваш компьютер не имеет ДОСТУПА В ИНТЕРНЕТ, готовится к партиям и большому количеству страдания. Вы никогда не будете знать, когда для некоторой программы будет нужна некоторая неясная зависимость или когда версия программы, которую Вы установили, является несовместимой с версией Ваши новые потребности программы.

2
ответ дан 11.12.2019, 22:37

Теги

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