移植SDL运行库到ARM11(s3c6410)上

1.libconv库的编译

# cd /opt/mini6410/games 
# mkdir output

# tar xvzf /tmp/libiconv-1.13.1.tar.gz   
# cd libiconv-1.13.1 
# ./configure --host=arm-linux --prefix=/opt/mini6410/games/output 
# make 
# make install

这个编译过程一般不会有什么问题

 

2.SDL库的编译

 

# cd /opt/mini6410/games 
# tar xvzf /tmp/SDL-1.2.14.tar.gz 
# cd SDL-1.2.14 
# ./configure --prefix=/opt/mini6410/games/output --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 
# make 
# make install

这个过程要注意,有可能会提示-lpulse没有找到,如果有这个提示请链接库到你lpulse库下,例如你的lpulse库在usr/lib目录下则在链接库时添加-L/usr/lib,其他错误可以更改相应的头文件或者相应代码

 

/src/audio/pulse/SDL_pulseaudio.c:33:30: fatal error: pulse/pulseaudio.h: No such file or directory
在makefile文件中添加(EXTRA_CFLAGS = -I./include) -I /usr/include


/usr/include/features.h:323:26: fatal error: bits/predefs.h: No such file or directory
错误: #error "Never use <bits/predefs.h> directly; 
用include <features.h> 代替"

In file included from /usr/include/fcntl.h:41:0,
                 from ./src/video/fbcon/SDL_fbevents.c:31:
/opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm-none-linux-gnueabi/4.5.1
/../../../../arm-none-linux-gnueabi/include/bits/stat.h:20:3: 
error: #error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
分别修改fcntl.h和SDL_fbevents.c中的头文件include <bits/stat.h>为include<sys/stat.h>

 

3.编译SDL_image库

 

编译此库时一定要保证lpulse库被编译

# cd /opt/mini6410/games 
# tar xvzf /tmp/SDL_image-1.2.8.tar.gz 
# cd SDL_image-1.2.8 
# ./configure  --enable-shared  --enable-static  --host=arm-linux  --build=i386 
--prefix=/opt/mini6410/games/output  --enable-bmp  --enable-gif  --enable-jpg 
--enable-png   --enable-tif  --enable-pnm  --enable-xpm 
--disable-sdltest   SDL_CFLAGS="-I/opt/mini6410/games/output/include" 
SDL_LIBS="-L/opt/mini6410/games/output/lib  -lSDL" 
LIBPNG_CFLAGS="-I/opt/mini6410/games/output/include" 
LIBPNG_LIBS="-L/opt/mini6410/games/output/lib  -lpng" 
CPPFLAGS="-I/opt/mini6410/games/output/include/SDL  -I/opt/mini6410/games/output/include/"
LDFLAGS="-L/opt/mini6410/games/output/lib -ljpeg -lts -lpng -liconv" 
# make   
# make install

 

 

4.SDL_ttf的编译

# cd /opt/mini6410/games 
# tar xvzf /tmp/SDL_ttf-2.0.9.tar.gz 
# cd SDL_ttf-2.0.9 
# ./configure --host=arm-linux --prefix=/opt/mini6410/games/output --enable-shared --enable-static
--disable-sdltest 
--with-freetype-prefix=/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root/usr/
--with-sdl-prefix=/opt/mini6410/games/output/ CFLAG="-I/opt/mini6410/games/output/include"
LDFLAGS="-L/opt/mini6410/games/output/lib -lSDL -lts -liconv -lfreetype"

在编译之前手工修改 Makefile,去掉OpenGL 相关处理: 
# vi Makefile 
 
定位到 123 行,将以下内容中的“-I/usr/include -DHAVE_OPENGL”删除(红色字体部分): 
CFLAGS = -g -O2 -I/usr/include/freetype2 -I/opt/mini6410/games/output/include/SDL
-D_GNU_SOURCE=1 -D_REENTRANT   -I/usr/include -DHAVE_OPENGL 
 
再定位到 143 行,将: 
GL_LIBS =   -L/usr/lib -lGL 
改成 
GL_LIBS = 
 再定位到 266 行,将: 
glfont_LDADD = libSDL_ttf.la   -L/usr/lib -lGL -lm 
改成 
glfont_LDADD = libSDL_ttf.la -lm 
 
清空源代码文件  glfont.c 中的源代码  (先删除,再用 vi 创建): 
# rm glfont.c.-f 
# vi glfont.c 
 
在 vi 编辑器中输入以下内容并保存: 
void main() {} 
 

# make   
# make install

5. 编译SDL_mixer库 
 # cd /opt/mini6410/games 
# tar xvzf /tmp/SDL_mixer-1.2.9.tar.gz 
# cd SDL_mixer-1.2.9 
# ./configure  --enable-music-mp3-mad-gpl  --enable-music-mp3=no  --host=arm-linux
--prefix=/opt/mini6410/games/output  --with-sdl-prefix=/opt/mini6410/games/output  --enable-shared
--enable-static 
# make 
# make install 
 

通过以下命令打包 SDL 类库和其它相关的类: 
# cd /opt/mini6410/games/output/ 
# tar cvzf sdl_setup.tar.gz bin lib share 
 
将 sdl_setup.tar.gz 拷贝到开发板上,在根目
录进行解压: 
@# cd / 
@# tar xvzf /sdcard/sdl_setup.tar.gz

 

这样SDL库就更新完了

转自:https://blog.csdn.net/a343981218/article/details/8056008

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在信号处理领域,DOA(Direction of Arrival)估计是一项关键技术,主要用于确定多个信号源到达接收阵列的方向。本文将详细探讨三种ESPRIT(Estimation of Signal Parameters via Rotational Invariance Techniques)算法在DOA估计中的实现,以及它们在MATLAB环境中的具体应用。 ESPRIT算法是由Paul Kailath等人于1986年提出的,其核心思想是利用阵列数据的旋转不变性来估计信号源的角度。这种算法相比传统的 MUSIC(Multiple Signal Classification)算法具有较低的计算复杂度,且无需进行特征值分解,因此在实际应用中颇具优势。 1. 普通ESPRIT算法 普通ESPRIT算法分为两个主要步骤:构造等效旋转不变系统和估计角度。通过空间平移(如延时)构建两个子阵列,使得它们之间的关系具有旋转不变性。然后,通过对子阵列数据进行最小二乘拟合,可以得到信号源的角频率估计,进一步转换为DOA估计。 2. 常规ESPRIT算法实现 在描述中提到的`common_esprit_method1.m`和`common_esprit_method2.m`是两种不同的普通ESPRIT算法实现。它们可能在实现细节上略有差异,比如选择子阵列的方式、参数估计的策略等。MATLAB代码通常会包含预处理步骤(如数据归一化)、子阵列构造、旋转不变性矩阵的建立、最小二乘估计等部分。通过运行这两个文件,可以比较它们在估计精度和计算效率上的异同。 3. TLS_ESPRIT算法 TLS(Total Least Squares)ESPRIT是对普通ESPRIT的优化,它考虑了数据噪声的影响,提高了估计的稳健性。在TLS_ESPRIT算法中,不假设数据噪声是高斯白噪声,而是采用总最小二乘准则来拟合数据。这使得算法在噪声环境下表现更优。`TLS_esprit.m`文件应该包含了TLS_ESPRIT算法的完整实现,包括TLS估计的步骤和旋转不变性矩阵的改进处理。 在实际应用中,选择合适的ESPRIT变体取决于系统条件,例如噪声水平、信号质量以及计算资源。通过MATLAB实现,研究者和工程师可以方便地比较不同算法的效果,并根据需要进行调整和优化。同时,这些代码也为教学和学习DOA估计提供了一个直观的平台,有助于深入理解ESPRIT算法的工作原理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值