2009-02-27 5 views
0

Я пытаюсь построить кросс-компилятор с x86_64, являющимся хостом, и i386 является целью. Я получаю (все к общему) crti.o: Нет такой ошибки файла. Вместо того, чтобы захватывать уже построенные crti.o и crtn.o из дистрибутива ... как я могу напрямую строить эти файлы из источников glibc (или, возможно, gcc)?Здание crti.o для i386

FYI, мне хорошо известно опция -m32 для компиляторов x86_64. Я бы предпочел просто иметь только 32-битную среду компилятора. Кроме того, причина, по которой я не хочу использовать какой-либо из gazillion, уже создающих компиляторы i386, заключается в том, что я планирую смешивать и сопоставлять версии glibc/binutils/gcc в зависимости от моих потребностей в тестировании.

Спасибо, Chenz

+0

возможно дубликат [crti.o отсутствует файл] (http://stackoverflow.com/questions/91576/crti-o-file-missing) – user2284570

ответ

0

Вы уверены, что используете настройку кросс-компиляции правильно? Он должен быть

CBUILD = CHOST = x86_64-pc-linux-gnu 
CTARGET = i386-pc-linux-gnu

, как вы запустили сборку на x86_64, для компилятора, чтобы работать на x86_64, который генерирует код для i386.

Если вы использовали CHOST = i386-pc-linux-gnu, вы будете пытаться создать 32-битные двоичные файлы, которые необходимо будет связать с 32-разрядным libc. Это нормально, если у вас уже есть 32-разрядный libc, но это звучит так, как будто вы этого не делаете.

т.е.

$ tar xvjf gcc-*.tar.bz2 
$ cd gcc-*/ 
$ mkdir build 
$ cd build 
$ ../configure --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=i386-pc-linux-gnu
1

Вот одна возможность (из here)

Вам необходимо установить 32 бит LibC-разработчика пакет для вашего дистрибутива, или вам нужно --disable-мультибиблиотечности, который приведет к компилятору, который не поддерживает 32 разрядный режим .

+0

Я хочу 32bit только, не в другой способ вокруг. Я не хочу использовать копию дистрибутива ... я хочу построить из исходного кода. Пожалуйста, прочитайте FYI. –

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

  • Нет связанных вопросов^_^