Armbian

安装pygame

2020-12-22  本文已影响0人  Armlinux

pip install pygame==1.9.6

报错1: WARNING: "sdl-config" failed!

先简单再介绍一下SDL:
SDL是Simple DirectMedia Layer(简易直控媒体层)的缩写。它是一个跨平台的多媒体库,以用于直接控制底层的多媒体硬件的接口。主要用在开发游戏上!

安装SDL:

Ubuntu已经包含SDL库,所以通过几个简单的命令就可以安装,比windows还傻瓜!

sudo apt-get install libsdl1.2-dev(比较大,10M左右)

附加包:

sudo apt-get install libsdl-image1.2-dev

sudo apt-get install libsdl-mixer1.2-dev

sudo apt-get install libsdl-ttf2.0-dev

sudo apt-get install libsdl-gfx1.2-dev

安装完成之后,在目录/usr/include中,就会有个SDL文件夹,里面包含了所需要的头文件。

写个最简单的程序测试一下环境是否OK:

/*9-1.c绋嬪簭锛氬垵濮嬪寲瑙嗛瀛愮郴缁燂紝璁剧疆鍏舵樉绀烘ā寮忥紝鑳屾櫙鑹叉笎鍙?/
#include<SDL.h>                              /*浣跨敤SDL搴擄紝鍔犺浇璇ュ簱鐨勫ご鏂囦欢*/
#include<stdlib.h>
int main(){
  SDL_Surface *screen;                     /*灞忓箷鎸囬拡*/
  Uint32 color;                              /*瀹氫箟涓€涓鑹插€?/
   int x;
  if(SDL_Init(SDL_INIT_VIDEO)<0){          /*鍒濆鍖栬棰戝瓙绯荤粺澶辫触*/
   fprintf(stderr,"鏃犳硶鍒濆鍖朣DL锛?s\n",SDL_GetError());
   exit(1);
  }
  screen=SDL_SetVideoMode(640,480,16,SDL_SWSURFACE);  /*璁剧疆瑙嗛妯″紡*/
  if(screen==NULL){
   fprintf(stderr,"鏃犳硶璁剧疆640x480x16浣嶈壊鐨勮棰戞ā寮忥細%s",SDL_GetError());
   exit(1); 
  }
  atexit(SDL_Quit);                             /*閫€鍑?/
   for(x=0;x<=255;x+=1)                         /*鐢ㄥ惊鐜潵瀹炵幇鑳屾櫙鑹叉笎鍙?/
   {
   color=SDL_MapRGB(screen->format,255,255,x);/*SDL_MapRGB鍑芥暟鐢ㄦ潵璁剧疆棰滆壊*/
    SDL_FillRect(screen,NULL,color);             /*濉厖鏁翠釜灞忓箷*/
   SDL_UpdateRect(screen,0,0,0,0);              /*鏇存柊鏁翠釜灞忓箷*/
    }
    SDL_Delay(6000);                                 /*鍋滅暀6绉掗挓鐨勬椂闂?/
    return 0;
}

编译:

gcc 9-1.c  -o 9-1 -I/usr/include/SDL -lSDL -lpthread

程序运行的时候会出现一个640*480大小,16位色的屏幕

报错2:

    FONT    : not found
    IMAGE   : not found
    MIXER   : not found
    PNG     : found
    JPEG    : found
    SCRAP   : found
    PORTMIDI: not found
    PORTTIME: not found

看作者简介,貌似经历了pySDL和pyGame,开始于2000年,http://www.pygame.org/docs/tut/intro/intro.html

下载后发现有这么多dependencies要安装

但这个是2009年的最新版,看来作者已经没有更新了,实在可惜~

Hunting dependencies...
sh: 1: smpeg-config: not found
WARNING: "smpeg-config" failed!
SDL     : found 1.2.15
FONT    : not found
IMAGE   : not found
MIXER   : not found
SMPEG   : not found
PNG     : found
JPEG    : found
SCRAP   : found
PORTMIDI: not found
PORTTIME: not found

安装过程应该不难,主要是先把这几个依赖搞定
在ubuntu下就简单多了

sudo apt-get install python3-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsdl1.2-dev libsmpeg-dev python-numpy libportmidi-dev ffmpeg libswscale-dev libavformat-dev libavcodec-dev checkinstall mercurial

可能有些版本会有改变,这个需要检查一下.
安装好后,再到源代码中安装即可,这个不必多说

安装过程中

linux/videodev.h没有找到,到/usr/include中发现只有linux/videodev2.h

这应该是版本的问题,解决就是找到videodev.h文件放到对应目录中,但是由于系统原因,只能网上下载一个,放到这个目录中即可

本想改动源代码,但编译不过,很多结构定义在这个h文件中

在官网上的步骤是:

#install dependencies
sudo apt-get install mercurial python3-dev python3-numpy ffmpeg \
    libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsmpeg-dev \
    libsdl1.2-dev  libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev
 
# Grab source
hg clone https://bitbucket.org/pygame/pygame
 
# Finally build and install
cd pygame
python3 setup.py build
sudo python3 setup.py install

linux/videodev.h这个文件不存在,版本太老了

解决方法:

找到 src/camera.h中的第42行,注释掉,改成 #include <libv4l1-videodev.h>

再python setup.py build
python setup.py install (sudo)
上一篇下一篇

猜你喜欢

热点阅读