Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > cross compile for specific target


Автор: slater 13.2.2011, 13:18
приветствую!

необходимо собрать binutils и gcc для конкретной target(например, sh(superH) архитектуру).
1) Как правильно это сделать(с какими опциями собирать)
2) собрав такой набор под конкретную платформу, нужно ли будет при компиляции передовать в опциях подо что собирать elf?
3) как, используя стандартный набор binutils и gcc, например,под CentOS, наиболее коректно собрать под специфичную платформу

люди, прошу не отсылать в гугл, по существу там ничего не нашел

Автор: boostcoder 13.2.2011, 13:44
Цитата(slater @  13.2.2011,  13:18 Найти цитируемый пост)
1) Как правильно это сделать(с какими опциями собирать)

смотри опции --target и --build

Цитата(slater @  13.2.2011,  13:18 Найти цитируемый пост)
2) собрав такой набор под конкретную платформу, нужно ли будет при компиляции передовать в опциях подо что собирать elf?

нет. потому что он будет собирать под целевую платформу.

Цитата(slater @  13.2.2011,  13:18 Найти цитируемый пост)
3) как, используя стандартный набор binutils и gcc, например,под CentOS, наиболее коректно собрать под специфичную платформу

это зависит от огромного количества факторов...

Автор: slater 13.2.2011, 14:06
boostcoder,
спасиб
а еще такой вопрос, gdb нужно собрать тоже как кросс-платформенный, чтобы можно было дебажить код под спцифичную платформу, или же сгодится стандартный?

Автор: boostcoder 13.2.2011, 14:08
Цитата(slater @  13.2.2011,  14:06 Найти цитируемый пост)
gdb нужно собрать тоже как кросс-платформенный

во первых - то, что вы соберете, кросс-платформенным не будет. т.к. будет работать только на целевой архитектуре.
во вторых - gdb никогда не собирал, посему не знаю. но полагаю что тоже нужно собирать.

Автор: slater 13.2.2011, 14:47
хм, не совсем понятно

термин cross compile что означает?
1) это компилятор, который работает например на x86 под linux, но компилирует под конкретную target?
2) или же это в значении, что все утилитки будут работать только на tsrget(т.е. компиляция будет осуществляться на target)
3) или же это компилятор, который способен собирать под любые архитектуры?

и еще, как можно посмотреть, под какие target можно собрать тот жу binutils? в доках к нему вообще про это не написано

Добавлено через 2 минуты и 16 секунд
вообще, в вики написано:
A cross compiler is a compiler capable of creating executable code for a platform other than the one on which the compiler is run. Cross compiler tools are used to generate executables for embedded system or multiple platforms.

http://en.wikipedia.org/wiki/Cross_compiler

Добавлено через 5 минут и 5 секунд
я же хочу собрать:
1) набор утилит для компиляции на самой таргет(т.е. запускать буду на таргет)
2) набор утилит, для компиляции бинарников для конкретной таргет, но запускать эти утилитки буду на x86 под linux

Автор: boostcoder 13.2.2011, 14:59
Цитата(slater @  13.2.2011,  14:47 Найти цитируемый пост)
хм, не совсем понятно

термин cross compile что означает?
1) это компилятор, который работает например на x86 под linux, но компилирует под конкретную target?
2) или же это в значении, что все утилитки будут работать только на tsrget(т.е. компиляция будет осуществляться на target)
3) или же это компилятор, который способен собирать под любые архитектуры?

и еще, как можно посмотреть, под какие target можно собрать тот жу binutils? в доках к нему вообще про это не написано

Добавлено через 2 минуты и 16 секунд
вообще, в вики написано:
A cross compiler is a compiler capable of creating executable code for a platform other than the one on which the compiler is run. Cross compiler tools are used to generate executables for embedded system or multiple platforms.

похоже я вас не верно понял.

Автор: slater 13.2.2011, 15:12
почему

Автор: slater 13.2.2011, 16:17
как можно посмотреть, под какие target можно собрать тот жу binutils? в доках к нему вообще про это не написано
какие значения может принимать --target=?

Автор: xvr 14.2.2011, 13:20
Цитата(slater @  13.2.2011,  16:17 Найти цитируемый пост)
как можно посмотреть, под какие target можно собрать тот жу binutils?
configure --help не помогает?


Цитата(slater @  13.2.2011,  14:47 Найти цитируемый пост)
термин cross compile что означает?
1) это компилятор, который работает например на x86 под linux, но компилирует под конкретную target?

Именно это

И еще учтите, что кроме cross compiler'а вым еще понадобятся cross libraries (их тоже надо собрать и установить)


Автор: boostcoder 14.2.2011, 13:22
Цитата(xvr @  14.2.2011,  13:20 Найти цитируемый пост)
configure --help не помогает?

нет)
гуглением ничего не нашел. нужно пробовать. если не поддерживается, вероятно, это станет понятно на этапе configure.

Автор: bsa 14.2.2011, 17:59
Target, обычно, принимает значения: <arch>-<vendor>-<os>-<libc>. Например, i686-pc-linux-gnu, sh-vendor-linux-uclibc, sh1-vendor-linux-gnu, sh5-vendor-linux-klibc, sh64-vendor-linux-gnu...

Автор: slater 14.2.2011, 20:02
ребята, спасибо

bsa,
да, совершенно верно, в таком виде и формируется target/
если внимательно посмотреть configure, то так оно собственно и есть.

видимо какого то строго определенно списка таргетов не существуют, но как я понял, играют важную роль только arch и os, остальные параметры несущественны

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)