У меня возникли некоторые проблемы при компиляции 32-битных приложений GTK + в 64-битной Linux, особенно в Ubuntu 10.04. Компиляция 64-битных приложений GTK + работает нормально, и все настроено для компиляции 32-битных приложений, но не работает с GTK +
У меня есть очень простая тестовая программа, которую я использую для устранения неполадок, это просто gtk_init и gtk_main, которые прекрасно компилируются как -m64. Я компилирую с gcc 4.6.2, вызывая его с помощью:
gcc -m32 gtktest.c `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0`
Это два разных типа сообщений об ошибках, которые я получаю:
/usr/local/lib/gcc/x86_64-unknown-linux-gnu/4.6.2/../../../../x86_64-unknown-linux-gnu/bin/ld: warning: libXext.so.6, needed by /usr/lib/../lib32/libgtk-x11-2.0.so, not found (try using -rpath or -rpath-link)
и
/usr/lib/../lib32/libgdk-x11-2.0.so: undefined reference to `XmbSetWMProperties'
Имейте в виду, что это не единственные ошибки, я просто включил два конкретных типа для справки и, если коротко, я получаю ошибки для всего стека библиотек GTK +.
У меня есть все надлежащие 32-битные версии библиотек в моих папках lib32.
Надеюсь, у кого-то уже была эта проблема, и она может мне помочь, это действительно вызывает у меня сильные головные боли, и я не могу сильно помочь кому-либо в сети.
Пожалуйста, спросите, нужна ли мне какая-либо другая информация, чтобы помочь с диагностикой этой проблемы.
Примечание: у меня есть пакеты ia32-libs и gcc-multilib. В Ubuntu 10.04 нет отдельных пакетов ia32-libs-gtk, но я думаю, что они включены в пакеты ia32-libs. Все они присутствуют в моей системе.
Я думаю, что это какая-то проблема с настройкой компоновщика. Недавно я создал новый компилятор Free Pascal и 32-битный кросс-компилятор, а также обновил GCC до 4.6.2, чтобы воспользоваться некоторыми новыми функциями C ++ и исправлениями поддержки C99. По умолчанию 4.4.3 GCC все еще существует в моей системе. Я думаю, что проблема была введена, когда я установил новый binutils, потому что я экспериментировал с Clang и LLVM в качестве цепочки инструментов, и я хотел использовать возможности плагинов, так что я решил, что может также обновить их все.
Все прекрасно работает при компиляции 64-битных программ, с новыми инструментами вообще не было ни одной проблемы, и я могу скомпилировать 32-битные программы, но когда приходит время явно связать что-то с, у меня возникают проблемы.
Я знаю, что мой текущий набор библиотек подходит, и у меня установлена Free Basic, которая испускает только 32-битный код, и я смог без проблем собрать 32-битные программы GTK + перед этим обновлением.
Просто интересно, есть ли у кого-нибудь идеи, какие конфиги могли быть изменены в этом обновлении или это уже случалось с ними раньше? Я действительно должен перейти на более новый дистрибутив, чтобы я мог воспользоваться всем новым программным обеспечением без необходимости взламывать все мои пакеты, но, к сожалению, в более новых ядрах есть ошибка, которая не позволяет моему компьютеру вернуться в режим ожидания, и это ноутбук, который я использую для личных побочных проектов, поэтому правильное управление энергопотреблением довольно важно, и если я перебью систему, это не будет большой потерей, кроме того, что я настроил ее почти идеально для своего рабочего процесса.