Я пытаюсь перенести 32-битное приложение AIX на linux - проверяя концепцию моей 64-битной настольной системы Kubuntu. Полагаю, я мог бы построить приложение в 64-битном режиме, но, боюсь, что-то может сломаться (тысячи модулей - это целая система приложений).
В любом случае, я пытался создать тривиальное приложение. это просто printf sizeof int, короткие и длинные переменные. Когда я собираю его с помощью 'cc test / c', он работает, и sizeof сообщает 8-байт в течение долгого времени - так что по умолчанию используется 64-битный режим. Но когда я пытаюсь собрать его с помощью теста 'cc -m32. c', он не скомпилируется.
In file included from test.c:1:0:
/usr/include/stdio.h:27:10: fatal error: bits/libc-header-start.h: No such file or directory
#include <bits/libc-header-start.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
Так что /usr/include/stdio.h содержит ссылку на биты /libc-header-start.h, и нет подкаталога / usr / include / bits. Но если это ошибка, почему компилятор не жалуется на это, когда я запускаю его без флага -m32? Я не вижу никаких условных логик c вокруг #include в stdio.h, так что за магию c мне не хватает? Есть ли другое дерево / usr / include, которое вызывается с флагом -m32?
Различные посты здесь посвящены проблеме построения 32-бит на 64-битной машине, но это старые посты и ссылка на более старую базу убунту. В любом случае, они предлагают убедиться, что соответствующие библиотеки загружены. Я получил их (и я предполагаю, что если они уже были там, моя 32-битная среда сборки должна быть в порядке). Что-то еще мне не хватает?
lib32gcc-4.8-dev/bionic 4.8.5-4ubuntu8 amd64
gcc-multilib/bionic-updates,bionic-security 4:7.4.0-1ubuntu2.3 amd64
Хорошо, я вижу, что в каталоге / usr / include / x86-64- linux -gnu есть каталог с битами, но нет параллельного для не-64-битная среда.
$ locate libc-header-start.h
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h
Итак, что мне установить, чтобы получить это? У меня уже установлены эти:
libc6-dev-i386/bionic 2.27-3ubuntu1 amd64
libc6-dev-i386-amd64-cross/bionic-updates,bionic-updates 2.27-3ubuntu1cross1.1 all
libc6-dev-i386-cross/bionic-updates,bionic-updates 2.27-3ubuntu1cross1.1 all
libc6-dev-i386-x32-cross/bionic-updates,bionic-updates 2.27-3ubuntu1cross1.2 all