| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > сборка кросс-платформенным компилятором Си модули |
| Автор: gcc 23.7.2009, 01:56 |
| есть программа perl +C как только я компилирую включается мой компилятор (СИ модули я не писал, но они входят в программу) подскажите какие есть идеальный и максимальный вариант собрать кросс-платформенно Си модули чтобы они работали на всех платформах и на извесном (многом) аппаратном обеспечении?? для удобства! нужно разделить win, linux, freebsd? или win и unix? или как-то еще? если есть ссылка, то покажите! я нифига в гугле не нашел... (хотелось бы получить полный ответ, что куда и зачем ставить... ) http://forum.vingrad.ru/forum/topic-267024.html |
| Автор: MAKCim 23.7.2009, 08:35 |
| posix и не-posix большинство unix'ов следуют определеным версиям posix, поэтому интерфейс использования большинства системных функций в общем то одинаков поэтому win и unix + #if[n]def...#define...#endif |
| Автор: gcc 23.7.2009, 18:07 |
| как железо? я думал что надо под железо еще собирать, мне сказали надо биндить под железо если у меня i386 FreeBSD, на хостинге/сервер HP FreeBSD или SUN FreeBSD, если я соберу на i386, будут ли Си модули на HP или на SUN работать? может нужно какую-то оптимизацию поставить? компилятор который в FreeBSD по-умолчанию кросс-платформенно компилирует под всю извесную (многою) архитектуру железа (серверную) ? |
| Автор: xvr 24.7.2009, 11:38 | ||||||
Да
|
| Автор: gcc 24.7.2009, 22:35 | ||
я именно это и спрашиваю... и какое название этого компилятора? (в гугле ничего не нашел) как это сделать? кроме меня никто не делал? дайте информацию как это сделать... (я тоже знаю что нужен компилятор, только какой и как это сделать никто не знает) |
| Автор: powerfox 25.7.2009, 11:37 |
GCC (не вы, а компилятор ;) ) поддерживает довольно большое число архитектур. С его помощью можно скомпилировать программу и для x86, и для какого-нибудь RISC. Сделать, чтобы один и тот же исполняемый файл работал везде просто невозможно. Т.к. у Linux, у FreeBSD и у Windows разный формат исполняемых файлов, то даже кроссплатформенную программу нужно собирать для каждой из ОС. man gcc, или поиск по "crosscompilation gcc". Самый полный ответ находится в книгах по архитектуре компьютера. |
| Автор: gcc 9.8.2009, 18:08 |
| извините, я не нашел... по этому запрпосу "crosscompilation gcc" (и аналогичных) я нашел только списки рассылки в котором задаються некоторые вопросы... но там не написано, может я что-то не понял, но как это сделать? что написать компилятору? или это не реально...? (СС который по умолчанию в FreeBSD это и есть gcc, если я праивльно понял ) |
| Автор: xvr 9.8.2009, 21:55 | ||||
Ничего. Кросс компилятор - это не тот gcc, который компилирует для ОС, в которой он работает, это ДРУГОЙ компилятор
Сам gcc собирается с сорцов любым С компилятором (например уже готовым gcc). В дереве сорцов gcc есть куски, расчитанные на многие разные архитектуры. Когда gcc компилируется его make файл (грубо говоря) определяет на какой ОС он запущен и подставляет соответствующие аппаратно и ОС зависимые куски. Таким образом, gcc собранный на x86 Linux'е будет генерировать ELF файлы с коммандами для x86 Но это автоматическое определение железа и ОС можно отключить и задать эти параметры явно, с командной строки make файлу При этом сам полученный gcc будет работать на той платформе, на которую его откомпилирует тот самый 'любой С компилятор', но код и файлы будет генерировать на ту платформу, которую явно задали make файлу. Это и будет кросс компилятор Стоит добавить, что одного кросс компилятора мало. Еще нужны будут кросс binutil (ассемблер, линкер и пр) и библиотеки для целевой платформы (они уже не кросс, а самые настоящие 'чужие' библиотеки) |