64ビットLinux、特にUbuntu 10.04で32ビットGTK +アプリケーションをコンパイルするときに問題があります。 64ビットGTK +アプリケーションをコンパイルすると問題なく動作しますが、すべてが32ビットアプリケーションをコンパイルするように設定されていますが、GTK +では動作しません。64ビットLinuxの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`
これらは私が取得エラーメッセージの2種類です:
/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'
を覚えておいてくださいこれらは唯一のエラーではなく、私は参照のために2つの特定の型を含めて、それを短くしています.GTK +ライブラリのスタック全体にエラーが発生します。
lib32フォルダに適切な32ビットバージョンのライブラリがあります。
誰かが以前にこの問題を抱えていて助けてくれました。これは本当に私の頭痛の原因となっています。
この問題の診断に役立つその他の情報があるかどうか尋ねてください。
注:私はia32-libsパッケージとgcc-multilibパッケージを持っています。 Ubuntu 10.04には別のia32-libs-gtkパッケージがありませんが、これらはia32-libsパッケージにラップされていると思います。それらはすべて私のシステム上にあります。
これはリンカの設定に問題があると思います。私は最近、新しいFree Pascalコンパイラと32ビットクロスコンパイラを構築しました。また、C99の新機能やC99サポートの一部を利用するために、GCCを4.6.2にアップグレードしました。私のシステムにはデフォルトの4.4.3 GCCがまだ存在します。問題が導入されたと思うのは、ClangとLLVMをツールチェーンとして実験していたため、新しいbinutilsをインストールしたときです。プラグインの機能を使いたいと思っていました。
64ビットプログラムをコンパイルするとすべてうまく動作しますが、新しいツールには全く問題はなく、32ビットプログラムをコンパイルできますが、明示的にリンクするときに問題があります。
現在のlibsのセットが適切で、Free Basicがインストールされていて、32ビットのコードしか出されていないことがわかりました。このアップグレードの前に32ビットのGTK +プログラムを作成できました。
このアップグレードでどのような設定が変更された可能性がありますか、それとも以前に起こったことがありますか?私は本当に新しいディストリビューションにアップグレードする必要がありますので、すべての新しいソフトウェアを利用できるようにするためには、すべてのパッケージをハックアップする必要がありますが、残念ながら、新しいカーネルにはコンピュータがスタンバイ状態から戻ってくるのを防ぐバグがあります。これは私が個人的な側面のプロジェクトのために使うラップトップなので、適切な電源管理は非常に重要です。私はそれが私のワークフローにはぴったりです。