Какие элементы цепочки инструментов GCC должны быть одинаковыми при разработке распределенной системы? - PullRequest
0 голосов
/ 10 декабря 2011

Я нахожусь в разработке в C.

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

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

Ответы [ 2 ]

1 голос
/ 10 декабря 2011

Нет особого смысла привязывать себя к одному инструменту или цепочке инструментов, поскольку в распределенных системах, которые должны иметь возможность общаться с другими, вам все равно придется задуматься о протоколе связи и представлении данных.Например, даже если вы используете один и тот же набор инструментов, целевые архитектуры могут иметь разные внутренние представления данных, такие как порядковые номера, и программное обеспечение должно позаботиться об этом.

Я бы рекомендовал разработать протокол связи, который не зависит от целевой системыархитектура или определенный набор инструментов.Таким образом вы избавите себя от необходимости перепроектировать систему при изменении требований (т. Е. Может потребоваться добавить другую целевую архитектуру, которая будет иметь двоичное представление данных, несовместимое с «обычной», или для этого могут потребоваться некоторые специальные инструменты).

1 голос
/ 10 декабря 2011

Вы, вероятно, должны быть готовы к этому в любом случае. Это не новая проблема - вот почему мы используем, например, в сети бигендовские данные - и для этого есть инструменты, такие как DCE, MPI или CORBA.

Даже если вы используете одну и ту же версию GCC с обеих сторон, это не устранит архитектурные различия, такие как порядковый номер, доступные размеры данных (long может быть 64-битным, int может быть 16-битным - для фиксированных размеров используйте stdint.h ) и тому подобное. Использование разных наборов инструментов обычно не имеет значения, потому что вышеупомянутые различия между платформой и ABI существуют в любом случае.

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

...