Годы и годы после отказа от перехода на платформу x86_64, наконец, я сделал переключатель. Прежде всего потому, что я хотел поиграть с докером (FTW: http://docker.io).Как скомпилировать приложения для арки i386 на хосте x86_64
В моей обязанности я обычно должен создавать приложения для 32-битной платформы. И, следовательно, возникла необходимость в компиляции приложений для i386 на хосте x86_64.
Я использую ubuntu 13.04. Я много огляделся, чтобы понять это, прежде чем публиковать этот вопрос.
Так вот что я понял: 1. Необходимость иметь установленный НКУ-многобиблиотечный (APT-получить установку GCC-мультибиблиотечные) 2. Необходимость иметь ia32-LIBS установлены (APT-получить установку ia32-LIBS) 3 Нам нужно указать -m32 переключиться на GCC
В результате я могу скомпилировать приложения для i386. например.
$ uname -m
x86_64
$
$ echo -e "#include <stdio.h>\nint main() {return 0;}" > dummy.c
$ gcc -m32 dummy.c -o dummy
$ file dummy
dummy: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xafbf2b3adc5f44a8b5c1e8bcd6de5701ff792abd, not stripped
Теперь вот в чем проблема. Когда я пытаюсь установить ссылку на библиотеку zlib.
$ apt-get install zlib1g-dev
$ apt-get install zlib1g:i386 # the i386 version of zlib
$ gcc -m32 dummy.c -o dummy -lz
/usr/bin/ld: cannot find -lz
collect2: error: ld returned 1 exit status
Я не могу понять эту проблему. Как его решить. В соответствии с моим пониманием в настоящее время я установил все необходимые пакеты ...
Я рассмотрел решение этих вопросов, используя a. Контейнеры/докеры Linux. b. Ubuntu 13.04 i386.
Оба эти метода работают. Но есть довольно много обручей, чтобы добраться до того, как они смогли построить.
Но что может быть лучше, чем просто получать приложения i386 для компиляции на хосте x86_64.
Любая помощь очень ценится.
Спасибо и наилучшие пожелания ~ Самир
Спасибо. Мне также пришлось установить версии заголовков разработки i386. Не имел представления. $ apt-get install zlib1g-dev: i386 Я предположил, что файлы заголовков будут оставаться одинаковыми на всех платформах. Мальчик был я неправ. Еще раз спасибо. –
К сожалению, я забыл, что 'libz.a' находится в' zlib1g-dev'. Исправлен ответ. Заголовки для разных платформ несовместимы, в общем, из-за макросов для типовых размеров и т. Д. – ams
Это немного странно, когда я пытался установить libz-dev: i386 [link] (http://pastebin.com/M9vzfaQe). В результате команды он просто избавился от gcc. Было возможно установить его обратно без каких-либо проблем. Не уверен, почему он почему-то избавился от gcc. –