Будет статическое подключение на одной работе распределения Unix, но не другом?

AJAX выполняет асинхронный запрос к серверу и отправляет ответ в зависимости от того, сможет ли он выполнить требуемое действие. Чтобы обновить значения, вы должны сделать это вручную, так как это не что-то в «реальном времени», так сказать.

Если на запрос был получен успешный ответ, необходимо обновить поля представления в функции успеха.

Например:

$.ajax({
  method: 'POST',
  url: 'your_endpoint',
  data: your_data_object
  dataType: 'json', // If you are using an API RestFul
  success: function(response) {
      // Here you have to update your view in order to show the changes
      // This is an example code
      $("#input").val(response.newValue);
  }
});
5
задан 26 February 2009 в 01:59
поделиться

8 ответов

Пока можно гарантировать, что это будет только выполняться на аналогичной версии ОС на подобных аппаратных средствах программа будет хорошо работать, если это статически связалось. таким образом, если Вы создадите для 2.6 Linux и статически свяжетесь, то Вы будете в порядке для работы (почти) всех 2,6 дистрибутивов Linux.

Предупредите, что Вы не можете статически связать некоторые части GLIBC поэтому при использовании их, необходимо будет динамично связаться так или иначе. Из памяти материал службы имен (nss) части потребовал динамического подключения, когда я исследовал его.

Вы не можете статически связаться, программа для (говорят), что Linux затем ожидает, что это будет работать на BSD или Windows. BSD и Unix не представляют или обрабатывают их системные вызовы таким же образом, Linux делает. Я говорю небольшую неправду, потому что BSDs имеют слой эмуляции Linux, который может быть включен, но из поля это не будет работать.

0
ответ дан 13 December 2019 в 22:17
поделиться

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

Для еще лучших возможностей мобильности попытайтесь связаться против dietlibc или некоторого другого libc. Статья в Журнале Linux упоминает некоторых кандидатов. Меньший, более простой libc, менее вероятно, будет зависеть от вещей в файловой системе, которые отличаются от дистрибутива до дистрибутива.

0
ответ дан 13 December 2019 в 22:17
поделиться

В большинстве случаев Ваш исполняемый файл будет работать просто великолепно. Пока Ваш исполняемый файл не зависит ни от чего необычного, являющегося существующим, чтобы это функционировало, не будет никакой проблемы. (И, если это действительно будет зависеть от чего-то необычного, являющегося существующим, то затем у Вас будет та же проблема, даже если Вы динамично свяжетесь.)

Статически соединение обычно более безопасно, чем динамичное соединение для совместимости между различными средами UNIX, пока тот же ЦП используется.

Чтобы иметь статически связанный двоичный сбой, снова принимая ту же архитектуру процессора, необходимо было бы сделать что-то, такое как ссылка на систему с помощью a.out двоичного формата и попытаться выполнить его в системе рабочий ELF, в этом случае динамично связанная версия перестанет работать столь же плохо.

Итак, почему люди обычно не связываются статически? Две причины:

  • Это делает исполняемый файл больше, иногда НАМНОГО больше, и
  • Если ошибки в библиотеках исправлены, необходимо будет повторно связать программу для получения доступа к исправлениям ошибок. Если критическая ошибка безопасности исправлена в библиотеках, необходимо повторно связать и перераспределить exe.
2
ответ дан 13 December 2019 в 22:17
поделиться

Я был бы, по причинам, отмеченным выше, стараются не статически связывать что-то, если Вы абсолютно не должны.

Однако это должно работать над любым другим подобным ядром той же архитектуры (т.е. если Вы статически связываете на машине под управлением Linux 2.4.x, загрузчик, VDSO будет отличающимся на linux 2.6, при этом VDSO является виртуальным динамическим общим объектом, общий объект, который ядро подвергает каждому процессу, содержащему код загрузчика).

Другие ловушки включают вещи в/, и т.д. не являющийся, где Вы думали бы, при этом журналы были бы в различных местах, при этом системные утилиты были бы отсутствующие или отличающиеся (обновление-rc.d использования человечности, RHEL использует chkconfig), и т.д.

Иногда существуют, что у Вас просто нет выбора. Я писал программу, которая говорила со строкой LVM2 базирующийся интерфейс cmdlib в пользу использования execv ().. низко и созерцайте, 30% дистрибутивов, которые я должен был поддерживать, НЕ включали ту библиотеку и не предложили способа получить ее. Так, я должен был связаться против статического объекта при создании двоичных пакетов.

При использовании glibc можно быть уверены, что материал как getpwnam () и друзья будет все еще работать.. просто удостоверьтесь, что наблюдали любые твердые кодированные пути (еще лучше, сделайте их настраивающимися во время выполнения),

0
ответ дан 13 December 2019 в 22:17
поделиться

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

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

Наиболее типовые приложения, вид, который даже имеет смысл обсуждать мобильность, как сетевые службы, gui-приложения, инструменты языка (как компиляторы/интерпретаторы) привычка, имеют проблему с любым из этого.

5
ответ дан 13 December 2019 в 22:17
поделиться

Если Вы статически связываете программу на одном компьютере и затем перемещаете его в другой компьютер, в котором система в основном выполняет тот же путь, то он должен работать просто великолепно. В этом суть статического подключения; то, что нет никаких других файлов, от которых зависит программа - это является совершенно автономным, поэтому, пока это может работать вообще, это выполнит тот же способ, которым это делает в его системе "хоста".

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

3
ответ дан 13 December 2019 в 22:17
поделиться

Нет, работать не будет. Статическая компоновка для независимости распределения является концепцией старых времен UNIX и не рекомендуется. В любом случае, вы не можете использовать столько библиотек, сколько статические.

Следуйте методике Linux Standard Base, это ваш единственный шанс получить как можно большую кросс-дистрибутивную переносимость.

LSB также отлично работает, если вы программируете для FreeBSD и Solaris.

0
ответ дан 13 December 2019 в 22:17
поделиться

Здесь возникают два вопроса о совместимости: версии библиотек и инвентарь библиотек.

Вы не говорите, какие библиотеки вы используете.

Если у вас нет '-l', тогда единственной 'библиотекой' является сама glibc, которая служит интерфейсом для ядра. Версии Glibc совместимы снизу вверх. Если вы сделаете ссылку на систему glibc 2.x, вы можете запустить ее на glibc 2.y, если y> x. Разработчики твердо привержены этому.

Если у вас есть опция -l, статическое связывание всегда безопасно. Если вы динамически связаны, вы должны убедиться, что (1) библиотека присутствует в целевой системе и (2) имеет совместимую версию.

0
ответ дан 13 December 2019 в 22:17
поделиться
Другие вопросы по тегам:

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