Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сборка кросс-платформенным компилятором Си модули 
:(
    Опции темы
gcc
Дата 23.7.2009, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



есть программа perl +C как только я компилирую включается мой компилятор (СИ модули я не писал, но они входят в программу)

подскажите какие есть идеальный и максимальный вариант собрать кросс-платформенно Си модули чтобы они работали на всех платформах и на извесном (многом) аппаратном обеспечении?? для удобства!

нужно разделить win, linux, freebsd? или win и unix? или как-то еще?

если есть ссылка, то покажите! я нифига в гугле не нашел...

(хотелось бы получить полный ответ, что куда и зачем ставить... )

http://forum.vingrad.ru/forum/topic-267024.html

Это сообщение отредактировал(а) gcc - 23.7.2009, 02:00
PM WWW ICQ Skype GTalk Jabber   Вверх
MAKCim
Дата 23.7.2009, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



posix и не-posix
большинство unix'ов следуют определеным версиям posix, поэтому интерфейс использования большинства системных функций в общем то одинаков
поэтому win и unix + #if[n]def...#define...#endif


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
gcc
Дата 23.7.2009, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



как железо? я думал что надо под железо еще собирать, мне сказали надо биндить под железо

если у меня i386 FreeBSD, на хостинге/сервер HP FreeBSD или SUN FreeBSD, если я соберу на i386, будут ли Си модули на HP или на SUN работать? может нужно какую-то оптимизацию поставить? 

компилятор который в FreeBSD по-умолчанию кросс-платформенно компилирует под всю извесную (многою) архитектуру железа (серверную) ?

PM WWW ICQ Skype GTalk Jabber   Вверх
xvr
Дата 24.7.2009, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Цитата(gcc @ 23.7.2009,  18:07)
как железо? я думал что надо под железо еще собирать, мне сказали надо биндить под железо

Да
Цитата

если у меня i386 FreeBSD, на хостинге/сервер HP FreeBSD или SUN FreeBSD, 
HP (да и SUN) - это такие фирмы. А сервера они делают разные  smile Если они окажутся на чем то x86 - то может быть и запустится, если на чем то другом, то совершенно точно НЕ запустится
Цитата

компилятор который в FreeBSD по-умолчанию кросс-платформенно компилирует под всю извесную (многою) архитектуру железа (серверную) ?
Нет. Ни по умолчанию, ни в принудительном порядке, никак. Для кросс компиляции нужен конкретный КРОСС компилятор на конкретную платформу.

PM MAIL   Вверх
gcc
Дата 24.7.2009, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



Цитата(xvr @ 24.7.2009,  11:38)
Для кросс компиляции нужен конкретный КРОСС компилятор на конкретную платформу.

я именно это и спрашиваю... и какое название этого компилятора?
(в гугле ничего не нашел)

как это сделать?

кроме меня никто не делал? дайте информацию как это сделать... (я тоже знаю что нужен компилятор, только какой и как это сделать никто не знает)

Это сообщение отредактировал(а) gcc - 24.7.2009, 22:36
PM WWW ICQ Skype GTalk Jabber   Вверх
powerfox
Дата 25.7.2009, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 5
Всего: 97



Цитата(gcc @  23.7.2009,  02:56 Найти цитируемый пост)
нужно разделить win, linux, freebsd? или win и unix? или как-то еще?

GCC (не вы, а компилятор ;) ) поддерживает довольно большое число архитектур. С его помощью можно скомпилировать программу и для x86, и для какого-нибудь RISC. Сделать, чтобы один и тот же исполняемый файл работал везде просто невозможно.
Т.к. у Linux, у FreeBSD и у Windows разный формат исполняемых файлов, то даже кроссплатформенную программу нужно собирать для каждой из ОС. 
man gcc, или поиск по "crosscompilation gcc".

Цитата(gcc @  23.7.2009,  02:56 Найти цитируемый пост)
(хотелось бы получить полный ответ, что куда и зачем ставить... )

Самый полный ответ находится в книгах по архитектуре компьютера.




--------------------
user posted image
PM WWW   Вверх
gcc
Дата 9.8.2009, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: нет
Всего: 17



извините, я не нашел...

по этому запрпосу "crosscompilation gcc" (и аналогичных) я нашел только списки рассылки в котором задаються некоторые вопросы... но там не написано, может я что-то не понял, но как это сделать? что написать компилятору? или это не реально...?
(СС который по умолчанию в FreeBSD это и есть gcc, если я праивльно понял )
PM WWW ICQ Skype GTalk Jabber   Вверх
powerfox
Дата 9.8.2009, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 5
Всего: 97



gcc, при компиляции и компановке программы учитывается несколько параметров системы:
  •  Архитектура процессора (т.е. набор команд, которые он поддерживает).
  •  Формат испольняемого файла (зависит от ОС).
  •  Зависимости библиотек (зависит от того, что установлено в системе). По крайней мере нужна libc.
    ...

Именно поэтому не существует кроссплатформенных компилируемых программ.

Цитата(gcc @  9.8.2009,  19:08 Найти цитируемый пост)
по этому запрпосу "crosscompilation gcc" (и аналогичных) я нашел только списки рассылки в котором задаються некоторые вопросы...

Плохо искали ;)

http://wiki.osdev.org/GCC_Cross-Compiler
http://en.wikipedia.org/wiki/Cross_compiler
http://www.airs.com/ian/configure/configure_5.html
http://gcc.gnu.org/wiki/Building_Cross_Toolchains_with_gcc
...


--------------------
user posted image
PM WWW   Вверх
xvr
Дата 9.8.2009, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Цитата(gcc @ 9.8.2009,  18:08)
что написать компилятору?

Ничего. Кросс компилятор - это не тот gcc, который компилирует для ОС, в которой он работает, это ДРУГОЙ компилятор
Цитата

(СС который по умолчанию в FreeBSD это и есть gcc, если я праивльно понял )
Да, это gcc, но это не кросс компилятор.
Сам gcc собирается с сорцов любым С компилятором (например уже готовым gcc). В дереве сорцов gcc есть куски, расчитанные на многие разные архитектуры. Когда gcc компилируется его make файл (грубо говоря) определяет на какой ОС он запущен и подставляет соответствующие аппаратно и ОС зависимые куски.
Таким образом, gcc собранный на x86 Linux'е будет генерировать ELF файлы с коммандами для x86
Но это автоматическое определение железа и ОС можно отключить и задать эти параметры явно, с командной строки make файлу
При этом сам полученный gcc будет работать на той платформе, на которую его откомпилирует тот самый 'любой С компилятор', но код и файлы будет генерировать на ту платформу, которую явно задали make файлу. 
Это и будет кросс компилятор

Стоит добавить, что одного кросс компилятора мало. Еще нужны будут кросс binutil (ассемблер, линкер и пр) и библиотеки для целевой платформы (они уже не кросс, а самые настоящие 'чужие' библиотеки)

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0524 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.