.png)
Я впервые установил 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-битной системы.