Gentoo」カテゴリーアーカイブ

Gentoo Linuxおよび他のディストリビューションを含むLinux全般についてのカテゴリーです。

libEGL warning

Qt+OpenGLで作られたアプリケーションで以下のようなエラーが発生する場合のworkaroundです。(Gentoo Linux)

libEGL warning: failed to create a pipe screen for i965  
Warning: EGL suggested using X Visual ID 32 (ARGB0888) for EGL config 18 (ARGB8888), but this is incompatable  
QEglContext::swapBuffers(): "Bad surface (0x300D)"

USEフラグからeglopenvgを外します。

# USE="-egl -openvg" emerge qtopengl qtgui qtwebkit

GCCのアップデート

Gentoo LinuxでGCCをアップデートする際の手順

# emerge -u gcc
# gcc-config -l
[1] x86_64-pc-linux-gnu-4.4.7
[2] x86_64-pc-linux-gnu-4.5.4 *
[3] x86_64-pc-linux-gnu-4.6.3
# gcc-config 3
 * Switching native-compiler to x86_64-linux-gnu-4.6.3 ...
>>> Regenerating /etc/ld.so.cache...

 * If you intend to use the gcc from the new profile in an already
 * running shell, please remember to do:

 * . /etc/profile
# env-update && source /etc/profile

リンク

GCC, the GNU Compiler Collection – GNU Project – Free Software Foundation (FSF)
https://gcc.gnu.org/

Gentoo LinuxでMingw

Gentoo LinuxでMingwを使ったクロスコンパイル

crossdevをインストール

# emerge -v sys-devel/crossdev

/etc/make.confにPORTDIR_OVERLAYを追加

PORTDIR_OVERLAY="/usr/local/portage"

/usr/local/portageがない場合はディレクトリを作成

# mkdir /usr/local/portage

i686-mingw32の環境を構築

# crossdev --stable --target i686-mingw32

動作確認

次のようなサンプルコードをビルドしてみます。

mingw-sample.c

#include <windows.h>

int main()
{
  MessageBox(NULL, "Hello world!", "Hello world!", MB_OK);
  return 0;
}

ビルドは次のようにします。

$ i686-mingw32-gcc -mwindows -o mingw-sample.exe mingw-sample.c
$ i686-mingw32-strip mingw-sample.exe

ビルドしたファイルはwineで実行可能です。

$ wine mingw-sample.exe

もちろん、Windows環境に持って言って実行することもできます。

mingw-sample.exeの実行結果

stripはなくてもかまいませんが、デバックに使われるデータを削除して、ファイルサイズを小さくしたい場合に使います。