主题 : madplay移植的几个小疑问??高手请教! 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 5164
精华: 0
发帖: 37
金钱: 320 两
威望: 280 点
综合积分: 74 分
注册时间: 2009-04-12
最后登录: 2011-06-07
楼主  发表于: 2009-06-01 12:19

 madplay移植的几个小疑问??高手请教!

我移植安装了madplay的PC版(Fedora10)和ARM版(mini2440),都成功了,能正常播放音乐,有几个小疑问:
1.用file命令查看,两者都是dynamically linked (uses shared libs),再看它们的文件大小,PC版的是242482字节,ARM版的是504648字节,怎么会差这么大呢,不至于吧?
2.比较编译安装目录里lib目录的内容,PC版的有.a结尾的静态连接库和.so结尾的动态连接库文件,而ARM版的只有.a结尾的静态连接库文件,这是什么原因啊?
3.分别用readelf -d madplay 和arm-linux-readelf -d madplay命令查看,ARM版本所需的共享库是libm.so.6和libc.so.6,而PC版的却另外多了四个库:libesd.so.0、libmad.so.0、libid3tag.so.0、libz.so.1,这又是为什么呢?
注:移植ARM版madplay好后,我没有在mini2440的/lib或/usr/lib下放入任何库文件,只是将生成的可执行文件madplay下载到板子上执行的,可以播放音乐。
多谢了~~
级别: 新手上路
UID: 5164
精华: 0
发帖: 37
金钱: 320 两
威望: 280 点
综合积分: 74 分
注册时间: 2009-04-12
最后登录: 2011-06-07
1楼  发表于: 2009-06-01 19:36
级别: 新手上路
UID: 5164
精华: 0
发帖: 37
金钱: 320 两
威望: 280 点
综合积分: 74 分
注册时间: 2009-04-12
最后登录: 2011-06-07
2楼  发表于: 2009-06-03 21:33
级别: 新手上路
UID: 6584
精华: 0
发帖: 3
金钱: 30 两
威望: 30 点
综合积分: 6 分
注册时间: 2009-06-07
最后登录: 2009-06-09
3楼  发表于: 2009-06-07 16:09
你的播发器移植后支持中文歌名么
级别: 侠客
UID: 4545
精华: 3
发帖: 88
金钱: 810 两
威望: 614 点
综合积分: 236 分
注册时间: 2009-03-19
最后登录: 2020-06-17
4楼  发表于: 2009-06-07 20:36
很明显,楼主移植的libmad 等都为静态编译,ARM版的文件大就是因为这个原因
编译应用程序时没加 -static 当然就动态链接c库了
级别: 新手上路
UID: 5164
精华: 0
发帖: 37
金钱: 320 两
威望: 280 点
综合积分: 74 分
注册时间: 2009-04-12
最后登录: 2011-06-07
5楼  发表于: 2009-06-09 09:25
偶的播放器不支持中文啊,怎样才能支持中文啊?
4楼的意思是说ARM版的部分库是静态编译(如libmad)、部分库是动态编译(如libc)的吧;而PC版的库都是动态编译的吧。所以两者的大小相差很大?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
6楼  发表于: 2009-06-09 15:01
引用第5楼caler于2009-06-09 09:25发表的  :
4楼的意思是说ARM版的部分库是静态编译(如libmad)、部分库是动态编译(如libc)的吧;而PC版的库都是动态编译的吧。所以两者的大小相差很大?

是的,也就是说,你的madplay链接的是libmad.a而不是libmad.so。要和PC上一样,你首先需要把libmad这些库编译成共享库。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."