移植libeXosip2和libosip2到arm开发板
2017-07-26 16:26
204 查看
Linux linux
本篇主要是为了补充之前写的《编译libeXosip以及向代理服务器注册》
http://blog.csdn.net/dreamintheworld/article/details/72939454
下载解压
libosip2-4.1.0.tar.gz
libeXosip2-4.1.0.tar.gz
编译 libosip2-4.1.0(使用arm-none-linux-gnueabi-gcc交叉编译器)
编译 libeXosip2-4.1.0(添加一个空文件config.h否则编译会报错找不到该文件)
编译注册demo(libeXosip2-4.1.0/tools/sip_reg.c)
开发板中运行可执行程序(需要添加动态库搜索路径)
抓包后可以看到例程已经发起注册并且服务器回复200 OK表示注册成功。
到此为止,应用程序已经测 试完成了
其中使用到了三个脚本 myconfigure.sh, build_reg.sh, reg.sh 分别如下 :
myconfigure.sh (编译libeXosip2-4.1.0时需要配置libosip2的路径以及部分编译选项参数)
build_reg.sh(需要指定libosip2库和libeXosip2库的路径)
reg.sh (192.168.1.2为服务器IP地址)
运行程序的时候出现了一个问题
DEBUG: [get_output_if] connect: Network is unreachable
这是由于在开源库的程序中直接使用了默认的方式获取IP地址,但是在我的开发板中需要指定网卡获取到IP地址
所以需要按如下方式修改库的程序(修改libeXosip2-4.1.0/src/eXutils.c)
函数 _eXosip_default_gateway_ipv4 (struct eXosip_t *excontext, char *address, int size)
开发环境是ubuntu64位的电脑和ubuntu32位的arm开发板
本篇主要是为了补充之前写的《编译libeXosip以及向代理服务器注册》
http://blog.csdn.net/dreamintheworld/article/details/72939454
下载解压
libosip2-4.1.0.tar.gz
libeXosip2-4.1.0.tar.gz
编译 libosip2-4.1.0(使用arm-none-linux-gnueabi-gcc交叉编译器)
$ ./configure --prefix=$PWD/_install --host=arm-none-linux-gnueabi $ make $ make install
编译 libeXosip2-4.1.0(添加一个空文件config.h否则编译会报错找不到该文件)
$ sh myconfigure.sh $ touch config.h $ make $ make install
编译注册demo(libeXosip2-4.1.0/tools/sip_reg.c)
~/project/demo/osip_arm_demo/libeXosip2-4.1.0/tools$ sh build_reg.sh
开发板中运行可执行程序(需要添加动态库搜索路径)
/mnt/libosip2-4.1.0/_install/lib # export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH /mnt/libeXosip2-4.1.0/_install/lib # export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH /mnt/libeXosip2-4.1.0/tools # sh reg.sh
抓包后可以看到例程已经发起注册并且服务器回复200 OK表示注册成功。
到此为止,应用程序已经测 试完成了
其中使用到了三个脚本 myconfigure.sh, build_reg.sh, reg.sh 分别如下 :
myconfigure.sh (编译libeXosip2-4.1.0时需要配置libosip2的路径以及部分编译选项参数)
echo "BUILD libeXosip2-4.1.0" ./configure --prefix=$PWD/_install \ CC=arm-none-linux-gnueabi-gcc \ --host=arm-none-linux-gnueabi \ --disable-tools \ --disable-debug \ --disable-trace \ --disable-shared \ --enable-openssl \ --enable-static \ CFLAGS='-I/home/admin/project/demo/osip_arm_demo/libosip2-4.1.0/_install/lib/include' \ LDFLAGS='-L/home/admin/project/demo/osip_arm_demo/libosip2-4.1.0/_install/lib' \ LIBS='-losipparser2 -losip2' \ SIP_CFLAGS='-I/home/admin/project/demo/osip_arm_demo/libosip2-4.1.0/_install/lib/include' \ OSIP_LIBS='-L/home/admin/project/demo/osip_arm_demo/libosip2-4.1.0/_install/lib -losipparser2 -losip2'
build_reg.sh(需要指定libosip2库和libeXosip2库的路径)
arm-none-linux-gnueabi-gcc -g -O2 -I/home/admin/project/demo/osip_arm_demo/libosip2-4.1.0/_install/include \ -L/home/admin/project/demo/osip_arm_demo/libosip2-4.1.0/_install/lib \ -I/home/admin/project/demo/osip_arm_demo/libeXosip2-4.1.0/_install/include \ -L/home/admin/project/demo/osip_arm_demo/libeXosip2-4.1.0/_install/lib \ sip_reg.c \ -o sipreg \ -leXosip2 -losip2 -losipparser2 -lpthread -lresolv
reg.sh (192.168.1.2为服务器IP地址)
./sipreg \ -r sip:192.168.1.2:5060 \ -u sip:01c001b01u0102@192.168.1.2 \ -c sip:01c001b01u0102@192.168.1.2:5060 \ -U 01c001b01u0102 \ -P 01c001b01u0102 \ -p 5061 \ -e 1800 \ -d
运行程序的时候出现了一个问题
DEBUG: [get_output_if] connect: Network is unreachable
这是由于在开源库的程序中直接使用了默认的方式获取IP地址,但是在我的开发板中需要指定网卡获取到IP地址
所以需要按如下方式修改库的程序(修改libeXosip2-4.1.0/src/eXutils.c)
函数 _eXosip_default_gateway_ipv4 (struct eXosip_t *excontext, char *address, int size)
static int _eXosip_default_gateway_ipv4 (struct eXosip_t *excontext, char *address, int size) { socklen_t len; int sock_rt, on = 1; struct sockaddr_in iface_out; struct sockaddr_in remote; memset (&remote, 0, sizeof (struct sockaddr_in)); remote.sin_family = AF_INET; { printf("%s(%d)\n", __FILE__, __LINE__); int sockfd; struct sockaddr_in sin; struct ifreq ifr; sockfd = socket(AF_INET, SOCK_DGRAM, 0); if (sockfd == -1) { return -1; } strncpy(ifr.ifr_name, "eth0", IFNAMSIZ); // 指定网卡 ifr.ifr_name[IFNAMSIZ - 1] = 0; if (ioctl(sockfd, SIOCGIFADDR, &ifr) < 0) { return -1; } memcpy(&sin, &ifr.ifr_addr, sizeof(sin)); remote.sin_addr.s_addr = sin.sin_addr.s_addr; printf("%s(%d)%s\n", __FILE__, __LINE__, inet_ntoa(sin.sin_addr)); } //remote.sin_addr.s_addr = inet_addr (excontext->ipv4_for_gateway); remote.sin_port = htons (11111);
开发环境是ubuntu64位的电脑和ubuntu32位的arm开发板
相关文章推荐
- 交叉编译Python3.6.2,使用海思arm-hisiv200-linux-gcc,移植到arm开发板上
- 移植dhcp到ARM开发板
- vnc移植成功 VNC移植到arm开发板(4.1.3)
- ARM开发板上的usb驱动移植及U盘挂载
- MiniGUI 移植到pc和arm开发板全过程详解 及错误解答
- 嵌入式linux web服务器boa的移植方法/arm开发板linux嵌入式web服务器boa
- 20121107——移植madplay到arm开发板
- 移植BlueZ到ARM开发板【转】
- 移植sqlite3.8到arm开发板过程
- 移植opencv到ARM开发板
- gdb移植到arm开发板
- 移植vsftpd到ARM开发板
- Apache 2 移植到Arm开发板
- 移植minicom到ARM开发板 (转)
- libpcap1.0.0移植到arm开发板上
- SQLite3 移植到ARM开发板
- Mplayer移植到Arm开发板
- 移植madplay到arm开发板
- python和json 移植到 ARM开发板
- 移植SQLite3到ARM开发板