阅读内容

用ARM7发板为uCLinux交叉编译SDL

[日期:2007-08-18] 来源:Linux公社  作者:Linuxidc


4 test

在/home/rockins/SDL/SDL-1.2.5/test/目录下是用来测试SDL的一些测试例程。本文选择的测试例程是testver.c,其源代码如下所示:

/* Test program to compare the compile-time version of SDL with the linked

version of SDL

*/

#include

#include "SDL.h"

#include "SDL_byteorder.h"

int main(int argc, char *argv[])

{

SDL_version compiled;

/* Initialize SDL */

if ( SDL_Init(0) < 0 ) {

fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError());

exit(1);

}

#ifdef DEBUG

fprintf(stderr, "SDL initialized\n");

#endif

#if SDL_VERSION_ATLEAST(1, 2, 0)

printf("Compiled with SDL 1.2 or newer\n");

#else

printf("Compiled with SDL older than 1.2\n");

#endif

SDL_VERSION(&compiled);

printf("Compiled version: %d.%d.%d\n",

compiled.major, compiled.minor, compiled.patch);

printf("Linked version: %d.%d.%d\n",

SDL_Linked_Version()->major,

SDL_Linked_Version()->minor,

SDL_Linked_Version()->patch);

printf("This is a %s endian machine.\n",

(SDL_BYTEORDER == SDL_LIL_ENDIAN) ? "little" : "big");

SDL_Quit();

return(0);

}

采用下列命令编译此程序:

arm-elf-gcc -o testver testver.c -I/home/rockins/SDL/SDL-1.2.5/uclinux-build/include/SDL/ -L/home/rockins/SDL/SDL-1.2.5/uclinux-build/lib/ -elf2flt –lSDL

特别需要注意的是:在编译此程序时一定要加上-elf2flt选项,否则会出现如下错误:

undefined reference to `__CTOR_LIST__'

undefined reference to `__DTOR_LIST__'

实际上,不只是编译testver.c程序时要这样,编译其它运行在uCLinux平台上的程序时,都要加上这个选项,否则就会出现上述错误。原因简述如下:通常,在libgcc.a中是有__CTOR_LIST__和__DTOR_LIST__这两个符号的。然而,在uCLinux的toolchain中,由于某种目的,这两个符号被删掉了,因此直接编译时就会出现找不到符号引用的错误。所幸的是,在elf2flt的link script中提供了这样两个符号。因此,在采用uCLinux工具链编译可执行程序的时候,一定要加上-elf2flt选项。

言归正传,在编译好了testver程序之后,通过ftp或者nfs或者诸如此类的手段将其下载到开发板上,执行之,你将看到程序打印出SDL编译时和执行时采用的版本信息。这表明你的SDL静态链接库已经编译成功了。

上一页12  GO
【内容导航】
第1页:用ARM7发板为uCLinux交叉编译SDL 第2页:用ARM7发板为uCLinux交叉编译SDL



本文评论       全部评论
发表评论
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款


点评: 字数
姓名:

L
I
N
U
X


GOOGLE搜索
Google