2015-08-19 2 views
3

У меня есть Dreambox 500, который в Википедии говорит имеет процессор PCP, который PowerPC кота/Proc/CPUInfo процессор: 0 CPU: STBx25xx часы: 252MHz Обзор: 9,80 (PVR 5151 0950) BogoMips: 250,36 машины: Мечта Мультимедиа Dreambox ТВ часов PLB автобуса: 63MHzCompile C код для PowerPC

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

Я слышал, что GCC может скомпилировать powerpc, но мне не повезло.

Пример этот код

#include <stdio.h> 

int main() 
{ 
    printf("Hello World!\n"); 

    return 0; 
} 

И я использую это для компиляции

gcc example.c -mtune=powerpc 

Но это дает эту ошибку

example.c:1:0 error: bad value (powerpc) for -mtune- switch 
#include <stdio.h> 
^ 

спасибо!

ответ

1

После некоторого времени на форуме программирования нашел парня с той же проблемой, и через некоторое время он нашел способ исправить его, и я попробовал его, и он работает. То, что я должен сделать, это

powerpc-gcc someprog.c -static 

Я понятия не имею, что делает -static, но это увеличивает размер исполняемого файла файла и в конце концов, это работает!

+0

AFAIK статический флаг компилирует ваш двоичный файл в монолитный исполняемый файл, который не имеет зависимостей библиотеки времени выполнения. –

3

Вы должны использовать кросс-компилятор, потому что ваша цель архитектура отличается от хозяина один. Хост - это архитектура вашей системы (обычно amd64 (x86_64) или i386 (x86_32)). И целевая арка - это арка, на которой будет запущена ваша скомпилированная программа (powerpc в вашем случае).

Многие искатели GNU/Linux предоставляют кросс-компиляторы в виде отдельных пакетов. Например, для Ubuntu эти пакеты доступны:

sudo apt-get install gcc-4.8-powerpc-linux-gnu g++-4.8-powerpc-linux-gnu binutils-4.8-powerpc-linux-gnu 

Пакеты выше для надежных. В более поздних версиях доступны версии GCC.

Затем вы можете скомпилировать свою программу, используя powerpc-linux-gnu-gcc-4.8. Или вы можете установить переменные окружения CC и CXX в powerpc-linux-gnu-gcc-4.8 и powerpc-linux-gnu-g++-4.8 соответственно.

UPD: Я нашел для кросс-компилятор набор инструментов Dreambox 500 here, но она содержит относительно старый GCC (3.4).

Для того, чтобы использовать его извлечь загруженный файл /opt/cross/dm500, добавить /opt/cross/dm500/cdk/bin в путь через export PATH=$PATH:/opt/cross/dm500/cdk/bin и использовать gcc здесь с соответствующей приставкой.

+0

Компилятор пока не дает мне ошибку, проверит его на моем dm500. –

+0

Когда я запускаю его, он говорит «Ошибка сегментации». :( –

+0

Запустить 'ldd a.out (или какое бы имя у вас не было скомпилированной программы) и опубликовать здесь его вывод. – nightuser

Смежные вопросы