日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

SDL及扩展库在ARM-Linux 完整移植

發布時間:2025/3/15 linux 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SDL及扩展库在ARM-Linux 完整移植 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SDL的正確運行需要大量的支持庫

?

1.編譯安裝支持庫

在ARM-LINUX編譯SDL之前.需要編譯如下安裝庫.

常見的庫的iconv,zlib,freetype等都要

SDL支持庫的移植參見.我的博客文章.<<ARM Linux下一些常用庫的移植 >>

http://blog.chinaunix.net/u3/105675/showart_2195157.html

?

?

2.了解硬件支持.

? 2.1 tslib移植(確認觸摸屏是否工作正常)

?? 參見?http://blog.chinaunix.net/u3/105675/showart_2145447.html

??2.2 確認開發板音頻驅動采用哪一種類型(OSS還是ALSA)

??2.3 確認視頻輸出采用哪一種類型(不出意外是Frame Buffer)

? 2.4 是否加入opengl的支持.

?

項目目錄,也將放在common_lib的庫的一部分。所有庫放在/home/hxy/common_lib/SDL 目錄下

?

????????

?2.SDL的移植

??1.解壓

tar xvzf SDL-1.2.14.tar.gz ; cd SDL-1.2.14

?2.生成configure 腳本

?


??
./configure --prefix=$PWD/../../output/arm-linux --disable-video-nanox --disable-video-qtopia --disable-video-photon? --disable-video-ggi --disable-video-svga --disable-video-aalib --disable-video-dummy --disable-video-dga --disable-arts --disable-esd --disable-alsa --disable-video-x11 --disable-nasm??? --enable-joystick --enable-input-tslib --enable-video-fbcon --host=arm-linux --build=i386 CPPFLAGS="-I$PWD/../../output/arm-linux/include"?? LDFLAGS="-L$PWD/../../output/arm-linux/lib -lts -liconv"

?

關鍵參數解釋

  • ?? ?--enable-input-tslib #支持tslib 觸摸屏
  • ??? --disable-x11 --enable-video-fbcon #關閉X11支持,打開framebuffer LCD輸出
  • ??? --disable-alsa #音頻使用oss,如果使用--enable-alsa,必須先編譯alsa-libs
  • ??? --host=arm-linux #使用arm-linux-gcc編譯工具.???
  • ????--prefix=$PWD/../../output/arm_linux? #SDL安裝目錄
  • ????--disable-joystick #去掉游戲杠支持
  • CPPFLAGS,LDFLAGS主要是為 --enable-input-tslib準備。否則在依賴文件里(.libs/libSDL.lai)會采用 dependency_libs=' -lm /usr/local/lib/libts.la -ldl -lpthread'這樣在ARM版明顯錯誤。如果對觸摸屏輸入不敏感,可以直接 --disable-input-tslib
  • 而-liconv因為在掃描目錄也有libiconv,這樣自動加入依賴。以免編譯其它SDL依賴庫出錯。

??3.編譯

???? make

? 4.安裝

??? make install

5.SDL測試程序移植

? SDL的測試程序在SDL源碼目錄的test目錄下。
?? 執行如下的configure 腳本生成Makefile

NM=arm-linux-nm LD=arm-linux-ld CC=arm-linux-gcc CXX=arm-linux-g++? AR=arm-linux-ar ./configure --host=arm-linux --prefix=$PWD/../../../output/arm_linux

Makefile默認是編譯所有測試程序,但是在ARM上,游戲桿和opengl測試無法編譯通過,要從TARGETS去掉
?? testgl,testjoystick的編譯.

??另外,默認的測試的路徑指向是X86版,最簡單的辦法,可以手工修改Makefile調成ARM版

CFLAGS? = -g -O2 -I/usr/local/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include -DHAVE_OPENGL
LIBS??? =? -L/usr/local/lib -Wl,-rpath,/usr/local/lib -lSDL -lpthread -liconv

改成

SDL_DIR = /home/hxy/common_lib/arm-linux
CFLAGS? = -g -O2 -I$(SDL_DIR)/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT?
LIBS??? =? -L$(SDL_DIR)/lib? -lSDL -lpthread


????????

6.SDL程序的測試

?? SDL的運行時必須指定MOUSE設備.如使用tslib,則用如下命令設置SDL使用tslib.

????export SDL_MOUSEDRV=TSLIB

? 如果沒有任何輸入設備,則環境變量?export SDL_NOMOUSE=1?,否則初始化會提示

? Couldn't initialize SDL:Unable to open mouse

?

可以用SDL自帶的testalpha來測試是否SDL下tslib是否正常工作.運行這個程序,如果在點擊處準確出現黃色色塊,表示tslib與SDL配合完合成功,以下是在320*240 bpp=16的開發板的實測的截圖.

?

?

文件:run_alpha.zip
大小:0KB
下載:下載

?

3.SDL_image移植

  • 下載:http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.10.tar.gz
  • 解壓 tar xvzf SDL_image-1.2.8.tar.gz
  • ?cd SDL_image-1.2.8
  • 生成 configure? ,執行 ./autogen.sh
  • 生成Makefile

?

?

./configure --enable-shared? --enable-static --host=arm-linux --prefix=$PWD/../../output/arm-linux? --enable-bmp? --enable-gif? --enable-jpg --enable-png --enable-tif? --enable-pnm --enable-xpm? --disable-sdltest SDL_CFLAGS="-I$PWD/../../output/arm-linux/include/SDL"?? SDL_LIBS="-L$PWD/../../output/arm-linux/lib -lSDL" LIBPNG_CFLAGS="-I$PWD/../../output/arm-linux/include"?? LIBPNG_LIBS="-L$PWD/../../output/arm-linux/lib -lpng" CPPFLAGS="-I$PWD/../../output/arm-linux/include"?? LDFLAGS="-L$PWD/../../output/arm-linux/lib -ltiff -ljpeg -lts -liconv"

?

注意這里提示報錯

?

configure: error: in `/home/huisen/libs/SDL_image-1.2.8':
configure: error: C compiler cannot create executables

?

最大可能性中間某一些庫沒有移植,比如libtiff,要先移植好庫再使用SDL_image

實測發布發現libtiff還是尺寸較大。因此可以用如下語句取消對tiff的支持

?

./configure --enable-shared? --enable-static --host=arm-linux --prefix=$PWD/../../output/arm-linux? --enable-bmp? --enable-gif? --enable-jpg --enable-png --disable-tif? --enable-pnm --enable-xpm? --disable-sdltest SDL_CFLAGS="-I$PWD/../../output/arm-linux/include/SDL"?? SDL_LIBS="-L$PWD/../../output/arm-linux/lib -lSDL" LIBPNG_CFLAGS="-I$PWD/../../output/arm-linux/include"?? LIBPNG_LIBS="-L$PWD/../../output/arm-linux/lib -lpng" CPPFLAGS="-I$PWD/../../output/arm-linux/include"?? LDFLAGS="-L$PWD/../../output/arm-linux/lib? -ljpeg -lts -liconv"


?

?

編譯 make

安裝 make install

?

4.SDL_Net 移植

?

SDL網絡處理.

主頁:http://www.libsdl.org/projects/SDL_net/

解壓: tar xvzf SDL_net-1.2.7.tar.gz

?cd SDL_net-1.2.7

生成Makefile

?./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux
編譯 make

安裝 make install


?

?

5.SDL_ttf 移植

?SDL對 TrueType 字體處理。

  • 主頁?http://www.libsdl.org/projects/SDL_ttf/
  • 解壓 tar xvzf SDL_ttf-2.0.9.tar.gz
    cd SDL_ttf-2.0.9
    生成Makefile

??

./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux --enable-shared --enable-static --disable-sdltest --with-freetype-prefix=$PWD/../../output/arm-linux/ --with-sdl-prefix=$PWD/../../output/arm-linux/ CFLAG="-I$PWD/../../output/arm-linux/include" LDFLAGS="-L$PWD/../../output/arm-linux/lib -lSDL -lts -liconv -lfreetype"
  • 修改Makefile,把語句當中的去掉opengl支持(這可能是這一版的BUG)

?1)GL_LIBS =? -L/usr/lib -lGL
這一句改成 GL_LIBS =

因為SDL_ttf會掃描桌面機的opengl庫,并將其庫路徑加入其中,configure 未提供選項開關去掉這個選擇,只能手工關掉。

?

? 2)glfont_LDADD = libSDL_ttf.la? -L/usr/lib -lGL -lm
? 這一句修改成 glfont_LDADD = libSDL_ttf.la? -lm

?

? 3)去掉 CFLAGS中 -I/usr/include?-DHAVE_OPENGL

  • 修改源碼

在編譯前,注意去掉 glfont.c 這個源碼,它是測試opengl 3D字體的。需要用opengl.大部分應用用不上,強行編譯會提示/usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lGL

我的解決辦法是,把glfont.c 改名為 glfont_old.c.新建一個只有一個空的main()的glfont.c

?

編譯Make

安裝Make install

?

6.SDL_mixer 移植

?SDL對于音頻的處理。

? 主頁:http://www.libsdl.org/projects/SDL_mixer/

?? 這里需要移植好 libmad 庫。原理參見我的博客文章。

?<<SDL編程教程--SDL_mixer播放音樂>>

http://blog.chinaunix.net/u3/105675/showart_2096192.html

?

解壓: tar xvzf SDL_mixer-1.2.9.tar.gz
?cd SDL_mixer-1.2.9

生成Makefile

./configure?--enable-music-mp3-mad-gpl --enable-music-mp3=no?--host=arm-linux --prefix=$PWD/../../output/arm-linux --with-sdl-prefix=$PWD/../../output/arm-linux --enable-shared --enable-static

編譯

? make

安裝

? make install

??

?

7。SDL_rtf移植

主頁:http://www.libsdl.org/projects/SDL_rtf/

解壓:tar xvzf SDL_rtf-0.1.0.tar.gz

? cd SDL_rtf-0.1.0
生成Makefile

??

??

?./autogen.sh

./configure? --host=arm-linux --prefix=$PWD/../../output/arm-linux --with-sdl-prefix=$PWD/../../output/arm-linux --enable-shared --enable-static??--enable-SDL_ttf

編譯 make

安裝 make install

?

? 8.SDL_gfx移植

主頁:http://www.ferzkopp.net/Software/SDL_gfx-2.0/

解壓:tar xvzf SDL_gfx-2.0.20.tar.gz
cd SDL_gfx-2.0.20
生成Makefile

??

?./configure? --host=arm-linux --prefix=$PWD/../../output/arm-linux --with-sdl-prefix=$PWD/../../output/arm-linux --enable-shared --enable-static?--enable-mmx=no

編譯 make

安裝 make install

?

http://blog.51cto.com/tonghuix/1165839

總結

以上是生活随笔為你收集整理的SDL及扩展库在ARM-Linux 完整移植的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。