Ⅰ linux sox怎样播放网上音乐
用system函数,通过命令行的方式可以播放音乐文件。 如果linux下变成,用exec函数族,调用播放器以命令的方式进行播放。 execlp ("sox", "sox", wav, "-t", "ossdsp", "/dev/dsp", NULL);
Ⅱ linux系统作业,求代码过程
谢谢!
Linux内核配置系统由三部组别:
?Makefile:布 Linux 内核源代码 Makefile定义 Linux 内核编译规则;
?配置文件(config.in):给用户提供配置选择功能;
?配置工具:包括配置命令解释器(配置脚本使用配置命令进行解释)配置用户界面(提供基于字符界面、基于 Ncurses 图形界面及基于 Xwindows 图形界面用户配置界面各自应于 Make config、Make menuconfig make xconfig)
些配置工具都使用脚本语言 Tcl/TK、Perl 编写(包含些用 C 编写代码)本文并配置系统本身进行析介绍何使用配置系统所除非配置系统维护者般内核发者须解原理需要知道何编写 Makefile 配置文件所本文我 Makefile 配置文件进行讨论另外凡涉及与具体 CPU 体系结构相关内容我都 ARM 例仅讨论问题明确化且内容本身产影响
2. Makefile
2.1 Makefile 概述
Makefile 作用根据配置情况构造需要编译源文件列表别编译并目标代码链接起终形 Linux 内核二进制文件
由于 Linux 内核源代码按照树形结构组织所 Makefile 布目录树Linux 内核 Makefile 及与 Makefile 直接相关文件:
?Makefile:顶层 Makefile整内核配置、编译总体控制文件
?.config:内核配置文件包含由用户选择配置选项用存放内核配置结( make config)
?arch/*/Makefile:位于各种 CPU 体系目录 Makefile arch/arm/Makefile针特定平台 Makefile
?各目录 Makefile:比 drivers/Makefile负责所目录源代码管理
?Rules.make:规则文件所 Makefile 使用
用户通 make config 配置产 .config顶层 Makefile 读入 .config 配置选择顶层 Makefile 两主要任务:产 vmlinux 文件内核模块(mole)达目顶层 Makefile 递归进入内核各目录别调用位于些目录 Makefile至于底进入哪些目录取决于内核配置顶层 Makefile 句:include arch/$(ARCH)/Makefile包含特定 CPU 体系结构 Makefile Makefile 包含平台相关信息
位于各目录 Makefile 同根据 .config 给配置信息构造前配置需要源文件列表并文件 include $(TOPDIR)/Rules.make
Rules.make 文件起着非重要作用定义所 Makefile 共用编译规则比需要本目录所 c 程序编译汇编代码需要 Makefile 编译规则:
%.s: %.c
$(CC) $(CFLAGS) -S $< -o $@
目录都同要求需要各自 Makefile 包含编译规则比较麻烦 Linux 内核则类编译规则统放置 Rules.make 并各自 Makefile 包含进 Rules.make(include Rules.make)避免 Makefile 重复同规则于面例 Rules.make 应规则:
%.s: %.c
$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$(*F)) $(CFLAGS_$@) -S $< -o $@
2.2 Makefile 变量
顶层 Makefile 定义并向环境输许变量各目录 Makefile 传递些信息些变量比 SUBDIRS仅顶层 Makefile 定义并且赋初值且 arch/*/Makefile 作扩充
用变量几类:
1) 版本信息
版本信息:VERSIONPATCHLEVEL, SUBLEVEL, EXTRAVERSIONKERNELRELEASE版本信息定义前内核版本比 VERSION=2PATCHLEVEL=4SUBLEVEL=18EXATAVERSION=-rmk7共同构内核发行版本KERNELRELEASE:2.4.18-rmk7
2) CPU 体系结构:ARCH
顶层 Makefile 用 ARCH 定义目标 CPU 体系结构比 ARCH:=arm 等许目录 Makefile 要根据 ARCH 定义选择编译源文件列表
3) 路径信息:TOPDIR, SUBDIRS
TOPDIR 定义 Linux 内核源代码所根目录例各目录 Makefile 通 $(TOPDIR)/Rules.make 找 Rules.make 位置
SUBDIRS 定义目录列表编译内核或模块顶层 Makefile 根据 SUBDIRS 决定进入哪些目录SUBDIRS 值取决于内核配置顶层 Makefile SUBDIRS 赋值 kernel drivers mm fs net ipc lib;根据内核配置情况 arch/*/Makefile 扩充 SUBDIRS 值参见4)例
4) 内核组信息:HEAD, CORE_FILES, NETWORKS, DRIVERS, LIBS
Linux 内核文件 vmlinux 由规则产:
vmlinux: $(CONFIGURATION) init/main.o init/version.o linuxsubdirs
$(LD) $(LINKFLAGS) $(HEAD) init/main.o init/version.o
--start-group
$(CORE_FILES)
$(DRIVERS)
$(NETWORKS)
$(LIBS)
--end-group
-o vmlinux
看vmlinux 由 HEAD、main.o、version.o、CORE_FILES、DRIVERS、NETWORKS LIBS 组些变量( HEAD)都用定义连接 vmlinux 目标文件库文件列表其HEADarch/*/Makefile 定义用确定先链接进 vmlinux 文件列表比于 ARM 系列 CPUHEAD 定义:
HEAD := arch/arm/kernel/head-$(PROCESSOR).o
arch/arm/kernel/init_task.o
表明 head-$(PROCESSOR).o init_task.o 需要先链接 vmlinux PROCESSOR armv 或 armo取决于目标 CPU CORE_FILESNETWORKDRIVERS LIBS 顶层 Makefile 定义并且由 arch/*/Makefile 根据需要进行扩充 CORE_FILES 应着内核核文件 kernel/kernel.omm/mm.ofs/fs.oipc/ipc.o看些组内核重要文件同arch/arm/Makefile CORE_FILES 进行扩充:
# arch/arm/Makefile
# If we have a machine-specific directory, then include it in the build.
MACHDIR := arch/arm/mach-$(MACHINE)
ifeq ($(MACHDIR),$(wildcard $(MACHDIR)))
SUBDIRS += $(MACHDIR)
CORE_FILES := $(MACHDIR)/$(MACHINE).o $(CORE_FILES)
endif
HEAD := arch/arm/kernel/head-$(PROCESSOR).o
arch/arm/kernel/init_task.o
SUBDIRS += arch/arm/kernel arch/arm/mm arch/arm/lib arch/arm/nwfpe
CORE_FILES := arch/arm/kernel/kernel.o arch/arm/mm/mm.o $(CORE_FILES)
LIBS := arch/arm/lib/lib.a $(LIBS)
5) 编译信息:CPP, CC, AS, LD, ARCFLAGSLINKFLAGS
Rules.make 定义编译通用规则具体特定场合需要明确给编译环境编译环境变量定义针交叉编译要求定义 CROSS_COMPILE比:
CROSS_COMPILE = arm-linux-
CC = $(CROSS_COMPILE)gcc
LD = $(CROSS_COMPILE)ld
......
CROSS_COMPILE 定义交叉编译器前缀 arm-linux-表明所交叉编译工具都 arm-linux- 所各交叉编译器工具前都加入 $(CROSS_COMPILE)组完整交叉编译工具文件名比 arm-linux-gcc
CFLAGS 定义传递给 C 编译器参数
LINKFLAGS 链接 vmlinux 由链接器使用参数LINKFLAGS arm/*/Makefile 定义比:
# arch/arm/Makefile
LINKFLAGS :=-p -X -T arch/arm/vmlinux.lds
6) 配置变量CONFIG_*
.config 文件许配置变量等式用说明用户配置结例 CONFIG_MODULES=y 表明用户选择 Linux 内核模块功能
.config 顶层 Makefile 包含形许配置变量每配置变量具确定值:y 表示本编译选项应内核代码静态编译进 Linux 内核;m 表示本编译选项应内核代码编译模块;n 表示选择编译选项;根本没选择配置变量值空
2.3 Rules.make 变量
前面讲Rules.make 编译规则文件所 Makefile 都包括 Rules.makeRules.make 文件定义许变量重要些编译、链接列表变量
O_OBJSL_OBJSOX_OBJSLX_OBJS:本目录需要编译进 Linux 内核 vmlinux 目标文件列表其 OX_OBJS LX_OBJS "X" 表明目标文件使用 EXPORT_SYMBOL 输符号
M_OBJSMX_OBJS:本目录需要编译装载模块目标文件列表同MX_OBJS "X" 表明目标文件使用 EXPORT_SYMBOL 输符号
O_TARGETL_TARGET:每目录都 O_TARGET 或 L_TARGETRules.make 首先源代码编译 O_OBJS OX_OBJS 所目标文件使用 $(LD) -r 链接 O_TARGET 或 L_TARGETO_TARGET .o 结尾 L_TARGET .a 结尾
Ⅲ 在Linux的命令行下如何弹出,弹入光驱以及听音乐
昨天我初试了这两个,感觉到非常方便,非常好使。 在Ubuntu下的桌面上,按Ctrl+F1,进入Linux下的命令行模式。 常用的功能就是听音乐了,输入play [musicFilename],musicFilename可以是mp3,ogg和其他的一些音乐文件,不过微软的wma好像无法识别阿Q播放音乐的效果一点儿也不次于其他图形化界面的音乐软件,而且在命令行的模式下,进行音乐播放时play还给出了音乐文件的基本信息,如频率、播放时间等等。 sox这个命令非常强大,想当年在Windows下想把两个音乐和到一起都要下载软件,许多软件还是试用版的,非常不爽。 现在只需要输入sox resultFilename,其中music1Filename和music2Filename是源音乐文件而resultFilename是你要转换成为的音乐文件,这样就可以把两个音乐文件转换成一个音乐文件了,多方便。