0

まず第一に、私は Linux が初めてだと言わざるを得ません。私はubuntuを使用して、いくつかのcコードをコンパイルしようとしています。gtk を学び、gcc でいくつかのプログラムをコンパイルしましたが、Windows 用に作成したいと考えています。そのため、Windows 用の gtk をすべて 1 つのバンドルでダウンロードし、include フォルダーと lib フォルダーを /usr/i686-w64-mingw32 に配置しました。しかし、ソース コードを mingw でコンパイルしようとすると、gtk/gtk.h が見つかりませんと表示されます。私は何をすべきか?

みんなありがとう。

4

2 に答える 2

0

にあるディレクトリを追加するか、環境変数をそれに設定しpkg-config.exeます。PATHPKG_CONFIG_DIR

于 2012-12-14T17:47:04.333 に答える
0

私はこの質問が本当に古いことを知っていますが...

クロスコンパイルするときは、「--sysroot」引数で sysroot を指定する必要があります。

--sysroot=dir: ヘッダーとライブラリの論理ルート ディレクトリとして dir を使用します。たとえば、コンパイラが通常 /usr/include でヘッダーを検索し、/usr/lib でライブラリを検索する場合、代わりに dir/usr/include と dir/usr/lib を検索します。[[参照]][1]

これを行うと、インクルード パスなどはすべて sysroot (この場合は「/usr/i686-w64-mingw32/」) に対して相対的に取得されます。ライブラリを "lib" に置き、ヘッダー ファイルを "include" に置くので、GTK でのコンパイルに必要な追加の引数を除いて、すべてが機能するはずです。

「pkg-config --cflags gtk+-2.0」の出力を見ると、次のようになります。

-pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/ cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/ usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng12 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/ include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/freetype2

sysroot を指定しても報告されたエラーが引き続き発生する場合は、ヘッダー ファイルを間違ったフォルダーに配置している可能性があります。gtk.h のネイティブ パスは「/usr/include/gtk-2.0/gtk/gtk.h」であるため、mingw GTK パッケージからバージョンをクロスコンパイルするには、「/usr/i686-w64-mingw32/」にコピーする必要があります。 include/gtk-2.0/gtk/gtk.h".

最後に、pkg-config は「-I/usr/lib/x86_64-linux-gnu/gtk-2.0/include」を提供することに注意してください。sysroot を正しく指定し、ヘッダー ファイルを pkg-config で記述された場所に置いた場合でも、このインクルード パスで問題が発生する可能性があります。問題は、pkg-config がネイティブ コンパイルの答えを提供していて、クロスコンパイルしたいことです。

于 2016-11-22T09:02:18.903 に答える