当前位置: 首页 > 工具软件 > Kphone > 使用案例 >

Kphone 4.2 在ok6410上的移植手册

贡威
2023-12-01

Kphone 是其于QT界面的开源SIP 软件电话,支持语音,视频和文字消息交流.经测试,可以在Redhat 9.0 直接编译通过.在Arm-Linux 上需要比较多移植工作以下是Kphone 是在ok6410 ,Arm-Linux 2.6.11 内核移植过程
Kphone 移植对内核要求:

  • Arm-Linux 2.6.11 (2.4均可)
  • OSS 接口.(ZC301 摄像头驱动可选)
  • 开发环境采用 Redhat 9.0,arm linux gcc 3.3.2
    软件支持:
  • 需要较高版本的QTE,本环境采用 qte 3.3.4
  • Openssl 库,版本0.9.8e
  • Kphone 4.2

Qte 3.3.4 的编译
1.解压源码

tar xfvj qt-embedded-free-3.3.4.tar.bz2
mv qt-embedded-free-3.3.4/ qt

2.创建Makefile

(echo yes ; echo yes )|./configure -prefix $PWD/.. /_install -embedded arm -depths 4,8,16,32 -no-cups 
# -embedded arm 表示用arm编译器,depths 表示显示位数

3.编译

make sub-src

4.make install

openssl 的编译
kphone 的编译需要ssl库.

1.解压源码

  tar xvzf openssl-0.9.7e.tar.gz
mv openssl-0.9.7e openssl

2.创建Makefile

./Configure linux-elf-arm --prefix=$PWD/.. -no-fips 
# -no-fips 表示不需要fips 支持,arm-linux 编译通不过
echo "y">patch -p1 Makefile< arm-linux.patch
 #修改Makefile ,将其所有gun 工具改为arm-linux-的版本包括 gcc,ar 
 编译共享openssl 版本,去掉fips库即
 SHLIBDIRS= fips crypto ssl 改成SHLIBDIRS=  crypto ssl

3.编译

make #编译openssl静态库
make build-shared #open编译openssl动态库

kphone 的编译
1.解压源码

tar xvzf kphone-4.2.tar.gz

2.修改configure 脚本

 patch -p1 configure  < kphone.conf.patch
     Configure 1608 将{ echo "configure: error: libssl not found" 1>&2; exit;  }改写成{ echo "configure: error: libssl not found" 1>&2;}  

跳过对libssl 的检查
3.生成Makefile

  ./configure --host=arm-linux --disable-alsa --enable-thread=no # --host采用arm-linux 编译,关闭alsa 声音驱动支持,关闭Qthread 的支持(QTE不支持)

4.修改Makefile
a)主模块Makefile 修改

patch -p1 Makefile < kphone.patch #主要是增加编译器支持,强制指定的arm gcc 3.3.2 为编译

修改如下,采用这个写法,主要是kphone 有多个Makefile 需要修改,为了减少工作量,统一在主Makefile 定义路径

CROSS_PREFIX=/usr/local/arm/3.3.2/bin/arm-linux-export CROSS_PREFIX

b)子模块的Makefile 修改
Kphone 有三个子模块, gsm,(GSM语音编码,解码库) , ilbc (ILBC 语音解码库),dissipate2 (SIP 协议栈),对其Makefile 修改如下

      CXX=$(CROSS_PREFIX)g++ #把C++编译器改为arm-linux 版本
      CC=$(CROSS_PREFIX)gcc #把C编译器改为arm-linux 版本
      $(CROSS_PREFIX)ar rcs $@ $(OBJS) #把ar改为arm-linux 版本
      CXXFLAGS=$(CFLAGS) -fno-exceptions -fno-rtti #关闭了C++异常机制和运行时类型信息
      CFLAGS=-I$(QTEDIR)/include -I$(OPENSSL)/include -DQWS -Wall -O3 -I. -I.. -DHAVE_CONFIG_H
      #头文件目录改为指向QTE目录,openssl 目录,-DQWS宏是一个重要宏,表示采用嵌入式库进行编译.而非X11 的机制
      MOC=$(QTEDIR)/bin/moc #把moc 用3.3.4的编译工具,而不能用桌面机的MOC
      LIBS=-L$(QTEDIR)/lib  -L$(OPENSSL)  -lqte  -lm -lssl -lcrypto –lresolv #库目录指QTE和openssl 目录

c)Kphone 应用程序Makefile的修改
Kphone 的修改类似于子模块的修改.
5.修改源码
a)嵌入式版本并未定义 PO_DIR,SHARE_DIR,为简化编译,在kphone.h 定义这两个宏定义
b)Trayicon.cpp 采用桌面的X11一些机制,所以将里面所有函数全部清空
6.编译
编译前要求预先设置几个环境变量,以便Make能设定一些值,主要是如下几个

export set QTDIR=$PWD/qt
export set QTEDIR=$QTDIR
export set OPENSSL=$PWD/openssl
make

7执行

.aaa  
 类似资料: