1, 交叉编译的方法:
export LDFLAGS="-L/media/work/a8-work/htpc/dest/freetype/lib -L/home/harrison/V43/telechips/lib "
export CFLAGS="-g -I/media/work/a8-work/htpc/dest/freetype/include -I/home/harrison/V43/telechips/include"
./configure --host=arm-linux --prefix=/data/directfb --with-gfxdrivers=davinci --enable-fbdev --with-inputdrivers=none --enable-zlib=yes --enable-sdl=no --enable-gif=no --disable-x11 --enable-debug --with-tests --enable-unique --sysconfdir=/etc
其中 --sysconfdir=/etc 用来指定directfb配置文件directfbrc的位置。
directfbrc文件存放在/etc目录下。
2, 编译好的软件不能运行,用strace能看到下面信息。
open("/dev/fb2", O_RDWR) = 3
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
setsid() = 1744
open("/dev/tty0", O_RDONLY|O_NOCTTY) = 4
ioctl(4, VT_GETSTATE, 0xbe8f88fa) = 0
ioctl(4, VIDIOC_QUERYCAP or VT_OPENQRY, 0x15740) = 0
ioctl(3, FBIOGET_CON2FBMAP, 0xbe8f88d8) = 0
fstat64(3, {st_mode=S_IFCHR|0660, st_rdev=makedev(29, 2), ...}) = 0
ioctl(3, FBIOPUT_CON2FBMAP, 0xbe8f88d0) = 0
ioctl(4, VIDIOC_G_COMP or VT_ACTIVATE, 0x2) = 0
ioctl(4, VIDIOC_S_COMP or VT_WAITACTIVE
这个信息是输入设备不能被操作的问题。
需要在directfbrc文件中增加一行
no-vt
就能运行了。
有可能找不到tty0设备需要创建一个链接
ln -sf /dev/ttySAC0 /dev/tty0
从串口输入。