一、介绍
ID3 tag
(也称为ID3v1
或ID3v2
)是一种用于存储音频文件元数据的标准。ID3
标签使用ID3v1
和ID3v2
版本存储元数据。 ID3v1
标签将元数据存储在MP3
文件末尾的128
字节中,而ID3v2
将元数据存储在文件的头部,因此可以包含更多的信息。
它可以在MP3
文件中使用 ID3v1
和ID3v2
标准存储歌曲的信息,如歌曲名称、艺术家、专辑名称、年份、流派和封面图片等。ID3
标签可以在MP3
文件中嵌入,也可以作为独立的文件存储。MP3
播放器通常会读取ID3
标签,以显示歌曲的元数据信息。
ID3
标签可以使用多种不同的编码方式来存储这些信息,包括UTF-8
,UTF-16
和ISO-8859-1
等。ID3
标签可以用于将音频文件与其他文件分组,例如在iTunes
中,可以使用ID3
标签来将歌曲归类到不同的专辑中。此外,ID3
标签还可以用于在网络上传播音频文件时显示相关信息。
二、获取
在官网当中可支持两种方式获取源代码:Ftp或者SourceForge 镜像。
三、构建
- 依赖项准备
查自述文件,得知:必须先安装Zlib
,然后才能构建此包;
BUILDING AND INSTALLING
Note that this library depends on zlib x.y.z or later. If you don't have
zlib already, you can obtain it from:
http://www.gzip.org/zlib/
You must have zlib installed before you can build this package.
So
,必须先把依赖项进行安装:___ Library : Zlib。
- 创建安装目录,并解压源码包,进入目录进行配置
linux@localhost:~$ tar zxvf libid3tag-x.y.z.tar.gz && cd libid3tag-x.y.z
linux@localhost:~/libid3tag-x.y.z$ ./configure --host=arm-none-linux-gnueabi --prefix=${HOME}/libid3tag --disable-debugging --with-pic --with-gnu-ld --disable-dependency-tracking LDFLAGS="-L${HOME}/zlib/lib" CPPFLAGS="-I${HOME}/zlib/include"
- 如需要使用静态库,则把参数更改为以下配置
linux@localhost:~/libid3tag-x.y.z$ ./configure --host=arm-none-linux-gnueabi --prefix=${HOME}/libid3tag --disable-debugging --with-pic --with-gnu-ld --disable-dependency-tracking LDFLAGS="-L${HOME}/zlib/lib" CPPFLAGS="-I${HOME}/zlib/include" --enable-static --disable-shared
- 编译并安装
linux@localhost:~/libid3tag-x.y.z$ make && make install
四、查看
- 查看安装生成的文件是否是对应平台所需要的
linux@localhost:~/id3tag2arm$ ls -la
total 0
drwxrwxrwx 1 linux linux 4096 Jun 13 22:20 .
drwxr-xr-x 1 linux linux 4096 Jun 13 21:41 ..
drwxrwxrwx 1 linux linux 4096 Jun 13 22:20 include
drwxrwxrwx 1 linux linux 4096 Jun 13 22:20 lib
linux@localhost:~/id3tag2arm$ tree
.
├── include
│ └── id3tag.h
└── lib
├── libid3tag.a
├── libid3tag.la
├── libid3tag.so -> libid3tag.so.x.y.z
├── libid3tag.so.x -> libid3tag.so.x.y.z
└── libid3tag.so.x.y.z
2 directories, 6 files
linux@localhost:~/id3tag2arm$ file lib/libid3tag.so.0.3.0
lib/libid3tag.so.x.y.z: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, not stripped
确认无误后,即可将对应的库文件上传到开发板的lib
目录中使用了,当然也可以配合其他库文件进行相关的移植。
五、处理
-
- 问题:当没有用环境变量指定需要使用到的头文件和库文件的路径时,就会出现以下情况:
linux@localhost:~/libid3tag-x.y.z$ ./configure --host=arm-none-linux-gnueabi --prefix=$HOME/id3tag2arm --disable-debugging
...
configure: error: zlib.h was not found
*** You must first install zlib (libz) before you can build this package.
*** If zlib is already installed, you may need to use the CPPFLAGS
*** environment variable to specify its installed location, e.g. -I<dir>.
...
configure: error: libz was not found
*** You must first install zlib (libz) before you can build this package.
*** If zlib is already installed, you may need to use the LDFLAGS
*** environment variable to specify its installed location, e.g. -L<dir>.
-
- 解决:使用
LDFLAGS
和CPPFLAGS
来指定ARM
平台所需的头文件和库文件位置
- 解决:使用
linux@localhost:~/libid3tag-x.y.z$ ./configure --host=arm-none-linux-gnueabi --prefix=$HOME/id3tag2arm --disable-debugging LDFLAGS="-L${HOME}/zlib2arm/lib" CPPFLAGS="-I${HOME}/zlib2arm/include"