みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

Ubuntu 14.04でGLFW3.1

試してみたところ、少し引っかかったのでメモ。

下準備

ここにしたがって下記をインストール。

$ sudo apt-get xorg-dev
$ sudo apt-get install glu1-meas-dev

インストール

$ git clone https://github.com/glfw/glfw.git
$ mkdir build
$ cd build/
$ cmake ..
$ make -j 8
$ sudo make install

サンプルのビルド

http://www.glfw.org/docs/latest/quick.htmlのサンプルをビルド。

ビルド手順にしたがって作業する。

リンクエラー

以下のリンクエラーが発生。

g++  -std=c++11   -o glfwTest01 main.o -L/usr/local/lib -lglfw3   -lGL
/usr/bin/ld: /usr/local/lib/libglfw3.a(x11_window.c.o): undefined reference to symbol 'XConvertSelection'
//usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line

コンパイルオプション

ここによるとライブラリが足りないらしい。

pkg-config --static --libs x11 xrandr xi xxf86vm gl

ただし、ここにあるものを追加してもまだ足りないようなので、 しらみつぶし的に進めていくと、最終的に以下のようになった。

g++ -oglfwTest001 main.cpp `pkg-config --cflags gl glfw3` `pkg-config --libs glfw3 x11 xrandr xi xxf86vm xcursor xinerama gl` -lpthread

autotoolsでは

cmakeの解説が多いが、自分がautotoolsを使うことが多いのでメモしておく。

configure.ac(抜粋)

# Checks for libraries.
PKG_CHECK_MODULES(GLFW3, glfw3)
PKG_CHECK_MODULES(X11, x11)
PKG_CHECK_MODULES(XRANDR, xrandr)
PKG_CHECK_MODULES(XI, xi)
PKG_CHECK_MODULES(XXF86VM, xxf86vm)
PKG_CHECK_MODULES(XCURSOR, xcursor)
PKG_CHECK_MODULES(XINERAMA, xinerama)
PKG_CHECK_MODULES(GL, gl)

src/Makefile.am

bin_PROGRAMS = glfwTest01
glfwTest01_SOURCES = main.cpp
glfwTest01_CFLAGS =  $(GL_CFLAGS) $(GLFW3_CFLAGS)
glfwTest01_LDADD =  $(GL_LIBS) $(GLFW3_LIBS) \
    $(X11_LIBS) $(XRANDR_LIBS) $(XI_LIBS) \
    $(XXF86VM_LIBS) $(XCURSOR_LIBS) $(XINERAMA_LIBS) \
    -lpthread
CXXFLAGS = -std=c++11