如何在带有LCD显示的嵌入式Linux中运行SDL2示例?

问题描述 投票:0回答:1

我正在做一个嵌入式Linux系统(5.10.24),里面有一个LCD显示器。 现在我试图在其中运行一个 SDL2 示例(从串行控制台),但我没有这样做。 示例代码如下,

#include "SDL2/SDL.h"

int main(int argc, char* argv[])
{
        SDL_Window* window;
        SDL_Renderer* renderer;

        if (SDL_Init(SDL_INIT_VIDEO) < 0) {
                printf("error initializing SDL: %s\n", SDL_GetError());
                return 1;
        }

        window = SDL_CreateWindow("SDL_RenderClear",
                        SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
                                    512, 512, 0);

        renderer = SDL_CreateRenderer(window, -1, 0);
        SDL_SetRenderDrawColor(renderer, 64, 255, 128, 255);

        SDL_RenderClear(renderer);
        SDL_RenderPresent(renderer);

        SDL_Delay(5000);
        SDL_Quit();
        return 0;
}

编译为

mips-linux-gnu-gcc -g2 sdl_ex1.c -I/sysroot/usr/include/ -Lsysroot/usr/lib/ -lSDL2 -lts -o sdl_ex1
当我从串行控制台运行它时,它失败并出现以下错误。

~ # ./sdl_ex1
error initializing SDL: No available video device
~ # echo $DISPLAY

~ #

系统运行于ARMv7(四核),图形用户界面为QT UI,Linux内核为5.10.24。有64MB RAM, 256MB FLASH, 没有X.

但我可以在 Ubuntu-20.04 VM 的 Xterm 中正确运行它。 有 2 个帧缓冲设备,/dev/fb0 和 /dev/fb1。 一个 GUI 正在 LCD 显示器中运行,那么在这个系统中,我如何运行 SDL 应用程序?

c linux sdl embedded-linux sdl-2
1个回答
0
投票

在Keltar和David的评论下,我终于搞定了
我用 directfb 重建了目标根文件系统,用 directfb 重建了 SDL2。
之后,我在目标的外壳中设置

export SDL_VIDEODRIVER=directfb

然后我可以启动SDL2示例,它可以绘制窗口并在窗口中进行重新渲染。

这是我所期望的。

© www.soinside.com 2019 - 2024. All rights reserved.