Компиляция моего 32-битного программного кода на 64-битной Ubuntu (поиск безопасного пути)

Компиляция моего 32-битного программного кода на 64-битной Ubuntu (поиск безопасного пути)

Я впервые установил 64-битную Ubuntu на свой ноутбук. Теперь я ищу способ скомпилировать мой старый проект по биологии на C++ на этой ОС. У меня есть файл .sh, который устанавливает все необходимые пакеты для компиляции моего проекта на недавно установленной 32-битной Ubuntu. Содержимое этого файла следующее:

#!/bin/sh
apt-get update  # To get the latest package lists
apt-get install build-essential -y
apt-get install freeglut3-dev -y
apt-get install libsdl1.2-dev -y
apt-get install libsdl-image1.2-dev -y
apt-get install libsdl-mixer1.2-dev -y
apt-get install libopenscenegraph-dev -y

Проблема в том, что после установки этих пакетов на мою 64-битную Ubuntu и желания скомпилировать свой проект с соответствующим Makefile я получаю следующее сообщение об ошибке:

/usr/bin/ld: skipping incompatible ../../gllib-3.0b3/lib/libgll.a when searching for -lgll
/usr/bin/ld: cannot find -lgll

После проверки я теперь знаю, что libgll.aфайл был скомпилирован для elf33-i386архитектуры. Поскольку я не знаю, как перекомпилировать этот файл для 64-битной архитектуры, я почти уверен, что мне придется скомпилировать весь мой проект в 32-битной архитектуре.

Короче говоря, у меня теперь такой вопрос: как мне скомпилировать этот проект как 32-битное приложение и запустить его на 64-битной Ubuntu?

Я предполагаю, что мне придется использовать команду dpkg --add-architecture i386, а затем вручную установить нужные пакеты с помощью apt-get install <package-name>:i386. Проблема с этим методом в том, что он apt-get install libsdl1.2-dev:i386требует от меня удаления build-essentialпакета.

Конечно, в конце концов мне также придется изменить свой makefile, добавив -m32( CXXFLAGSи другие строки?). Я могу опубликовать свой, makefileесли это необходимо для того, чтобы вы мне помогли. ^^

Сначала я попробовал просто установить все так же, как на моей предыдущей 32-битной машине.

Проблема в том, что я получаю следующую ошибку компиляции: /usr/bin/ld: пропуск несовместимого ../../gllib-3.0b3/lib/libgll.a при поиске -lgll

Это заставило меня задуматься, что, вероятно, мой (5-летний) телефон просто несовместим с запуском 64-битного приложения.

Или вы случайно не знаете, смогу ли я скомпилировать это как нативную 64-битную версию? ^^

решение1

Очень странно, что какую бы программу вы ни пытались скомпилировать, она поставляет 32-битную двоичную библиотеку вместо исходного кода, но, судя по всему, эту библиотеку можно найтиздесь, и если вы скомпилируете это, то получите 64-битную libgll, которую вы сможете использовать для компиляции этой программы для 64-битной системы.

Связанный контент