GSM是常见的VOIP的语音编解码库,在Linux下用libgsm来实现。在项目中需要用到libgsm库。因此试着直接编译GSM库来编译.官网已经停止服务了,因此在这个网址下了最新版来编译
解压后发现,这个Makefile是一个手写而非 Au
toconf生成的Makefile,并且只有编译静态库,而没有常见的动态库的Makefile.
因此将其修改一下,使用其能在ARM编译并且成动态库。这也是一个典型的Makefile的修改练习,如果想编译成静态库,简单把 LIBEXT 改成 a即可
# Copyright 1992-1996 by Jutta Degener and Carsten Bormann, Technische # Machine- or installation dependent flags you should configure to port SASR = -DSASR # MULHACK = -DUSE_FLOAT_MUL # FAST = -DFAST # LTP_CUT = -DLTP_CUT WAV49 = -DWAV49 # Choose a compiler. The code works both with ANSI and K&R-C. # CC = cc # CC = /usr/lang/acc LD = $(CC) # LD = gcc
# CCINC = -I/usr/gnu/lib/gcc-2.1/gcc-lib/sparc-sun-sunos4.1.2/2.1/include # LDINC = -L/usr/gnu/lib/gcc-2.1/gcc-lib/sparc-sun-sunos4.1.2/2.1 # LDLIB = -lgcc
INSTALL_ROOT = $(PWD)/../output/arm-linux # Where do you want to install the gsm library, header file, and manpages? GSM_INSTALL_ROOT = $(INSTALL_ROOT)
TOAST_INSTALL_ROOT = $(INSTALL_ROOT) # Other tools SHELL = /bin/sh #
ROOT = . # Flags # DEBUG = -DNDEBUG CFLAGS = $(CCFLAGS) $(SASR) $(DEBUG) $(MULHACK) $(FAST) $(LTP_CUT) LFLAGS = $(LDFLAGS) $(LDINC)
LIBEXT = so TOAST = $(BIN)/toast # Headers GSM_HEADERS = $(INC)/gsm.h HEADERS = $(INC)/proto.h # Sources GSM_SOURCES = $(SRC)/add.c TOAST_SOURCES = $(SRC)/toast.c SOURCES = $(GSM_SOURCES) # Object files GSM_OBJECTS = $(SRC)/add.o TOAST_OBJECTS = $(SRC)/toast.o OBJECTS = $(GSM_OBJECTS) $(TOAST_OBJECTS) # Manuals GSM_MANUALS = $(MAN)/gsm.3 TOAST_MANUALS = $(MAN)/toast.1 MANUALS = $(GSM_MANUALS) $(TOAST_MANUALS) $(MAN)/bitter.1 # Other stuff in the distribution STUFF = ChangeLog
GSM_INSTALL_TARGETS = TOAST_INSTALL_TARGETS =
.c.o: # Target rules all: $(LIBGSM) $(TOAST) $(TCAT) $(UNTOAST) tst: $(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/test-result addtst: $(ADDTST)/add $(ADDTST)/add_test.dta misc: $(TLS)/sweet $(TLS)/bitter $(TLS)/sour $(TLS)/ginger
cp -f inc/* $(GSM_INSTALL_ROOT)/inc
$(LIBGSM): $(LIB) $(GSM_OBJECTS)
$(TOAST): $(BIN) $(TOAST_OBJECTS) $(LIBGSM) $(UNTOAST): $(BIN) $(TOAST) $(TCAT): $(BIN) $(TOAST)
上一篇:Linux 驱动分析--s3c6410 的SDIO驱动分析 推荐阅读最新更新时间:2026-03-23 12:06
ARM-Linux移植之(三)——init进程启动流程分析
我们通常使用Busybox来构建根文件系统的必要的应用程序。Busybox通过传入的参数来决定执行何种操作。当init进程启动时,实际上调用的是Busybox的init_main()函数,下面我们来分析这个函数,看init进程究竟是怎样一个流程。我分析的Busybox源码是1.7.0版本的,其他版本会略有不同。部分代码省略我们只看关键性代码。 首先看init_main函数 int init_main(int argc, char **argv); int init_main(int argc, char **argv) { …………………………….. …………………………….. //初始化控制台 console_i
[单片机]
ARM-Linux触摸屏驱动移植--问题总结
硬件平台:FL2440 内核版本:2.6.28 主机系统:Ubuntu 11.04 内核版本:2.6.39 1、由于自己编译的内核触摸屏驱动选项选择的问题,触摸屏搞了好久 由于自己编译内核将触摸屏驱动以模块的形式编译的,方便自己调试ADC驱动和触摸屏驱动。遇到以下问题: 编译完触摸屏驱动完成后,利用insmod ts.ko加载驱动,之后在/dev/下生成鼠标结点文件mouse0,没有生成ts0 由于将触摸屏接口也一M的形式编译了,改成* /dev下不生成event*节点,编译选项中选择Event interface 后面的touch screen驱动以模块的形式编译进内核,手动加载,方便自己调试 重
[单片机]
ARM-Linux驱动移植--DM9000网卡驱动移植
硬件平台:FL2440 内核版本:2.6.39 主机平台:Ubuntu 11.04 内核版本:2.6.35 交叉编译器:arm-linux-gcc 4.3.2 原创作品,转载请标明出处 http://blog.csdn.net/yming0221/article/details/6641579 1、DM9000网卡驱动的分析请见 http://blog.csdn.net/yming0221/article/details/6609742 2、如果想自己调试DM9000网卡驱动,那么在编译内核之前将网卡驱动不要编译进内核,启动后自己编译并加载内核 由于一般的驱动或者程序是通过NFS挂载到开发板上的,所以,如果没有网卡
[单片机]
Konqueror/embedded向ARM-Linux平台的移植和汉化
引言 目前,嵌入式浏览器已经逐渐成为高端手机和PDA的标准配置。 Konqueror/embeded作为嵌入式Linux操作系统的首选浏览器得到了广泛使用。但是由于该浏览器是自由软件,因此向具体嵌入式平台移植时存在一定的难度。本文主要介绍了Konqueror/embedded向ARM-Linux平台上的整个移植和汉化过程,以便工程师参考和使用。 Konqueror/embedded的结构 Konqueror/embedded是由底层网络连接,图形化用户界面和处理HTML绘制的引擎KHTML构成的。底层的通信协议实现是基于KIO/slave机制来实现的;GUI界面采用Kparts组建技术和Qt的基本构件;
[单片机]
ARM-Linux S5PV210 UART驱动(2)---- 终端设备驱动
在Linux中,UART串口驱动完全遵循tty驱动的框架结构,但是进行了底层操作的再次封装,所以先介绍tty终端设备驱动。 一、终端设备 1.串行端口终端(/dev/ttySACn) 2.伪终端(/dev/pty/) 3.控制台终端(/dev/ttyn,/dev/console) 二、驱动结构 1.tty分层结构如下图所示: 包含tty核心、tty线路规程、tty驱动,其中tty规程的工作是以特殊的方式格式化从一个用户或者硬件接收到的数据,常采用一个协议转换的形式,如PPP、Bluetooth。 2.tty主要源文件关系及数据流向如下图: 特定的tty设备驱动的主体工作是填充tty_driv
[单片机]
ARM-Linux S5PV210 UART驱动(4)----串口驱动初始化过程
对于S5PV210 UART驱动来说,主要关心的就是drivers/serial下的samsung.c和s5pv210.c连个文件。 由drivers/serial/Kconfig: config SERIAL_SAMSUNG depends on ARM && PLAT_SAMSUNG config SERIAL_S5PV210 depends on SERIAL_SAMSUNG && (CPU_S5PV210 || CPU_S5P6442) && SERIAL_SAMSUNG_CONSOLE 可以看出模块的依赖关系,先加载samsung.ko,然后再加载s5pv210.ko。 所以串
[单片机]
arm-Linux 编译动态库 简单实例
本文讲述了一个简单的例子 ,很好的解释了“编译动态库”。 一、准备工作 1.使用oracle VM Virtualbox软件安装Ubuntu虚拟机 2.下载好相关的软件并传输到虚拟机下,安装好交叉编译器。 二、编译应用 该例子以 1.c , 2.c, 2.h组成 1. 代码编辑 下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件:2.h,一个.c文件:2.c,我们将这个文件编译成一个动态库:libtest2.so。 在Linux下编辑代码,可以使用vi,也可以使用gedit; 使用degit编辑 2.c, 2.h 如下图所示 然后我们用交叉编译器命令 :(用交叉编译是为了让生
[单片机]
ARM-Linux开发与MCU开发比较
1.ARM-Linux应用开发和单片机开发的不同 这里先要做一个说明,对于ARM的应用开发主要有两种方式:一种是直接在ARM芯片上进行应用开发,不采用操作系统,也称为裸机编程,这种开发方式主要应用于一些低端的ARM芯片上,其开发过程非常类似单片机,这里不多叙述。还有一种是在ARM芯片上运行操作系统,对于硬件的操作需要编写相应的驱动程序,应用开发则是基于操作系统的,这种方式的嵌入式应用开发与单片机开发差异较大。ARM-Linux应用开发和单片机的开发主要有以下几点不同: 应用开发环境的硬件设备不同 单片机:开发板、仿真器(调试器)、USB线; ARM-Linux:开发板、网线、串口线、SD卡; 对于ARM-Linux
[单片机]
小广播
热门活动
换一批 更多
最新单片机文章
更多开源项目推荐
更多精选电路图
更多热门文章
更多每日新闻
03月25日历史上的今天
|




CANopen移植工程(源代码)
智能车平衡轮腿
uCOS-II移植到STM32的详细步骤
现代雷达系统的信号设计
BFR340T






京公网安备 11010802033920号