Ⅰ 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是你要轉換成為的音樂文件,這樣就可以把兩個音樂文件轉換成一個音樂文件了,多方便。