MIPS сборник LSB MSB - PullRequest
       6

MIPS сборник LSB MSB

1 голос
/ 02 сентября 2011

Я кросс-компилирую библиотеку с открытым исходным кодом oRTP для процессора MIPS (little-endian arch) Моя система разработки - i386 linux. Я запускаю скрипт настройки как

./configure --host=mips-linux

Сценарий configure использует компилятор mips-linux-gnu-gcc и создает библиотеку. Однако, когда я пытаюсь связать библиотеку с исполняемым файлом, я получаю неопределенные символы, говорящие о том, что библиотека ortp создана для big-endian, а цель - little-endian.

Выполнение команды file на существующем исполняемом файле в целевой программе показывает

ELF 32-битный исполняемый LSB, MIPS, MIPS32 rel2 версия 1, динамически связанный (использует общие библиотеки), для GNU / Linux 2.6.12, с неизвестным возможность 0xf41 = 0x756e6700, с неизвестной возможностью 0x70100 = 0x1040000, без зачистки

И выполнение file в объектном файле ortp показывает

ELF 32-разрядный MSB с возможностью перемещения, MIPS, MIPS32 rel2 версия 1 (SYSV), с неизвестная возможность 0x41000000 = 0xf676e75, с неизвестной возможностью 0x10000 = 0x70401, без зачистки

Несмотря на то, что оба построены для MIPS, существующим исполняемым файлом является LSB, где в качестве файла скомпилированного ortp используется MSB.

Как мне скомпилировать для MIPS и LSB, чтобы связывание прошло нормально?

1 Ответ

3 голосов
/ 04 сентября 2011

Ну, я чувствую себя ужасно из-за себя.Я явно указал компилятор CC как mipsel-linux-gcc, и проблема была решена.

CC = / path / to / mipsel-linux-gcc ./configure --host = mips-linux

Таким образом, можно использовать компилятор mipsel-linux-gcc на случай, если вы компилируете для процессора с прямым порядком байтов mips и используете только компилятор mips-linux-gcc для процессоров с большим порядком байтов.

...