作者qazwsxee (灰雁)
看板LinuxDev
标题[问题] arm平台上写的程式呼叫socket() (仍有问题)
时间Thu May 26 00:15:07 2011
我写了一个Vedio/Voice over IP 程式(网路视讯电话)采用SCTP协定,要在arm平台上执行
,我不透过Qtopia而是直接以QT/Embedded的执行方式,用终端机执行以下2行指令:
$ export QWS_MOUSE_PROTO="MouseMan:/dev/mouse0"
$ ./ihu –qws
执行成功有画面,也可以操作那些选项按钮,但在呼叫socket()时总是回传失败。
程式执行後,终端机第一行会先有这段讯息:
QServerSocket: failed to bind or listen to the socket
按下[WaitCall]按钮会有
ERROR: can't initalize SCTP socket( socket() )
按下[Call]按钮会有
ERROR: can't initalize socket(Protocol not supported)
但同样的程式码编译成x86版本的,在电脑上却可以正常执行...
有哪位先进对於此种Error有头绪吗?
如果有人可以帮我点出确实问题点所在,好让我可以依此修改,
小弟愿赠送3000P给第一位解决的先进,其他人若有点出对我有所帮助的观念,
也给予500P~2000P不等的报酬。
(小弟目前身家约6000P而已~很穷~也只能给这点报酬了~)
可以用推、回文或者来信告知
--
『老板你好 我国立硕士』
『老板你好 我私立硕士』 『老~~~~~~~板~~~~~~』 喔喔
◢ ◣有消息会跟你联络 ◢ ◣有消息会跟你联络 ◢ ◣你明天就开始上班!
◤ ◥ ◥ ◢ ◤◥ ◥ ◢ ◥◢ ◣ 国立
-○=○- ◤ -□=□- ◤ ◥● ●● ◤ ◥ 私立
◥ ◤ ︶ ◥ ◤ ︶ ● ▼◤ ● ) 尬不过
◢ ◥◣╱
◥ -? ◢ ◣◣╱
ψQSWEET◥ - ◢ )●) ▼ ◤ 两粒
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.171.243.179
※ 编辑: qazwsxee 来自: 218.171.243.179 (05/26 00:29)
1F:推 cole945:你应该是kernel少编sctp吧? 05/26 01:24
2F:→ cole945:/proc/net/sctp或/sys/module/sctp应该要有东西 05/26 01:24
3F:→ cole945:modprobe sctp看看, 不然你kernel要重编了 05/26 01:25
4F:推 askacis:推楼上,或是你也可以用C直接写个简单的socket程式试试看 05/26 02:05
5F:→ askacis:正常情况下,单纯的bind or listen不应该会fail的... 05/26 02:07
6F:→ askacis:如果连C code都不行,看是port有冲到或检查kernel config.. 05/26 02:09
7F:推 mecs:看起来在 socket() 就出错, procotol not supported 基本上 05/26 12:18
8F:→ mecs:就如同一楼所说, sctp 这个 module 不在 kernel 内 ... 05/26 12:20
[root@WinFast310 /root]
#modprobe sctp
modprobe: module 'sctp' not found
[root@WinFast310 /root]
#modprobe tcp
modprobe: module 'tcp' not found
[root@WinFast310 /root]
#modprobe udp
modprobe: module 'udp' not found
[root@WinFast310 /root]#cd /proc/net/
[root@WinFast310 net]#ls
arp netstat raw sockstat udplite
dev packet route softnet_stat unix
dev_mcast pnp rpc stat wireless
irda pppoe rt_cache tcp
netlink protocols snmp udp
[root@WinFast310 net]#cd tcp
-sh: cd: can't cd to tcp
[root@WinFast310 net]#
----------------------
以上是我去arm平台里面打的指令,确实没有sctp
modprobe tcp
modprobe udp 也都是失败,不知什麽原因,但我这台是可以上网的
(有连上Google首页,只是会乱码)
重编kernel的过程,具体要在哪些资料夹底下做什麽事才可以包sctp进去核心?
在目录下输入make menuconfig
qaz@qaz-desktop:/media/disk/source_data/WinFast310/src$ make menuconfig
我的menuconfig画面是这个
http://imageshack.us/photo/my-images/402/winfast310.jpg/
System Type
---> PXA3xx Processor Variants (PXA310)
---> ( ) PXA300
---> (X) PXA310
---> PXA3xx Development Platform (PXA3xx Processor Platform)
--->( ) PXA3xx Handheld Platform
--->(X) PXA3xx Processor Platform
Debug/Release Version (Release Version)
---> ( ) Debug Version
---> (X) Release Version
VGA/QVGA Version (VGA Version)
---> (X) VGA Version
---> ( ) QVGA Version
Preview Kit BSP(Board Support Package)
---> [*] PXA Linux Preview Kit Kernel (Linux Kernel 2.6.21)
---> (X) Linux Kernel 2.6.21
---> [*] UDEV Support
---> [*] PXA Linux Root File System
---> [*] Power Management (Marvell(TM) Scalable Power Management)
---> ( ) Dynamic Power Management
---> (X) Marvell(TM) Scalable Power Management
---> [*] ALSA Libs
---> [*] ALSA Tools
---> [*] Buffer Management Module(BMM)
---> [ ] Baseband Subsystem Support
---> [*] Bluetooth Subsystem Support
---> [*] WLAN Subsystem Support
---> [*] 2-D Graphics
---> [*] Hardware Vide Accelerator
---> [*] Blob (Download by Ethernet)
---> (X) Download by Ethernet
---> ( ) Download by USB Client 2.0
---> [*] Preview Kit Sample
Marvell(TM) Integrated Performance Primitives (IPP)
---> [*] IPP Library
Marvell Impementation of OpenGL ES
---> [*] OpenGL ES Library
---> [*] Graphisc Sample Based On OpenGL*ES
Marvell IPP Based GStreamer Plug-ins
---> [*] GStreamer plug-ins
Usage Mode for Linux
---> [*] Qtopia PDA edition
---> [*] Audio Playback Usage Mode
---> [*] Video Playback Usage Mode
---> [*] Still Capture Usage Mode
---> [*] Video Record Usage Mode
---> [*] Demo for Qtopia
Marvell(TM) Performance Data Collector
---> [ ] Marvell (TM) Performance Data Collector
Marvell(TM) WTPTP
---> [*] OEM Boot Module
---
Load an Alternate Configuration File
Save Configuration to an Alternate File
我的kernel目录是这个画面
http://imageshack.us/photo/my-images/199/winfast3101.jpg/
我要把sctp相关文件摆在kernel目录下的哪,才能使menucohfig中出现SCTP的选项?
或是怎样使sctp包到kernel里?
※ 编辑: qazwsxee 来自: 140.127.200.80 (05/26 15:29)
※ 编辑: qazwsxee 来自: 140.127.200.80 (05/26 15:59)
9F:推 q1mail:make menuconfig ->networking support->networking option 05/26 16:03
10F:→ q1mail:里面有 The SCTP protocol 05/26 16:04
11F:推 cole945:menuconfig的话,楼上说的就是了..或是你可以直接改kernel 05/26 20:23
12F:→ cole945:目录下的.config档,搜IP_SCTP那行, 改成=y 05/26 20:23
可以先结案了,大家讲的都是我要的答案了。(我还没有时间重编去验证~忙碌中)
依时间先後、讲述详细:
cole945大大 最早、也有回答到我的问题点,我才知道arm里面没包SCTP 给您3000P
askacis大大 有来信指正我的make menuconfig弄错kernel目录 给您2000P
http://imageshack.us/photo/my-images/819/winfast3102.jpg/
其他2人就发个250P聊表心意
已转帐:
http://imageshack.us/photo/my-images/856/winfast3103.jpg/
感谢各位先进的指导!
※ 编辑: qazwsxee 来自: 140.127.208.148 (05/26 22:11)
13F:推 final01:XD !!赞喔 05/27 18:00
=ˇ=安安各位~我又回来了~我已经重编了kernel
[root@WinFast310 /root]
#modprobe sctp
[root@WinFast310 /root]
#modprobe tcp
modprobe: module 'tcp' not found
sctp已经包进去了,但是TCP好像没有包的关系,我还是有socket()的问题
要包TCP协定进去核心要选哪些选项呀?
那些TCP/IP的选项超多,有哪边可以看相关的参数说明?
我想知道选什麽选项会有什麽效果
※ 编辑: qazwsxee 来自: 140.127.208.148 (05/28 02:18)
※ 编辑: qazwsxee 来自: 114.27.153.206 (05/28 02:46)
14F:推 cole945:.....module才会用modprobe动态载入. 直接编进不用每次载 05/28 12:39
15F:→ cole945:就是你menuconfig前面的[y]或[m]的接别. 你可以改用[y] 05/28 12:39
哦哦喔~!! 我了解了!
TCP因为预设就有了,所以不用modprobe
我刚开机後忘记打第一行,所以怪怪的
$ modprobe sctp
$ export QWS_MOUSE_PROTO="MouseMan:/dev/mouse0"
$ ./ihu –qws
现在打这3行出来,进去图形化介面後,
按下[WaitCall]按钮 回应正常!
按下[Call]按钮 回应正常!
感谢你们了~!
※ 编辑: qazwsxee 来自: 140.127.208.148 (05/28 13:44)
※ 编辑: qazwsxee 来自: 140.127.208.148 (05/28 15:47)