Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->网络应用 ->正文

高手进阶 学会做嵌入式Linux操作系统

来源:赛迪网技术社区  作者:Webmaster 时间:2007-06-03 点击: [收藏] [投稿]

[code]

memset(buf,0,80);

strcpy(buf,"/sbin/ifconfig");

if(ifcfg->onboot)

{

sprintf(buf,"%s %s %s netmask %s broadcast %s",

buf,

ifcfg->device,

ifcfg->ip,

ifcfg->netmask,

ifcfg->br);

/*直接调用system来实现,当然也可以自己通过ioctl来设置,相应源码,我以前在c/c++版发过*/

system(buf);

[/code]

两个问题

1、从这段代码看,实际调用了 /sbin/ifconfig 来完成网卡的设置,那么,这个程序是否必须用 root 来执行?

2、为何不用 system("command") 呢?

独孤九贱 2005-11-1 03:03

回复 19楼 platinum 的帖子

1、 ifconfig本身运行,应该不需要root吧?而至于在shell中的运行权限,要看看相应的权限位了,事实上它已经能够在我的系统中很好的运行了,测试过很多次的。不过现在我的系统,其实没有用这种方法的,我是自己封装了一个网卡管理的库,也就是重写了ifconfig,不过要把这些代码发上来,太麻烦了,所以,就用了解system简单了一点。

2、我不是很理解“为何不用 system("command") 呢?”这句话的含义,我用的是system(buf);你说的是不是为什么要去构建一个buf,而不是直接用system("/sbin/ifconfig ethXX……")?清楚一点……^o^

独孤九贱 2005-11-16 01:44

继续工作,交叉编译SNMP

一般系统都会有SNMP的支持,下载了net-snmp-5.1.3.1,先看看INSTALL和FAQ文档(因为以前从来没有碰过这个东东,见笑了……),按照说明,在原生主机上安装了一回,安装完成后,发现在指定安装目录下主要包括了几块文件:

bin:SNMP的一些功能脚本和程序;

sbin:主要的代理程序和trap程序:snmpd和snmptrap

include/lib:自身兼容及第三方开发所需的头文件及库文件;

share:主要是MIB文件;

然后回到安装目录下,运行./configuare --help,仔细查看了其安装编译选项,因为我定位的小型的系统,只需具备基本的SNMP功能即可,所以:

那些bin目录下的功能程序也不需要,对应--disable-applications

bin下的脚本也是不需要的,对应:--disable-scripts

用户手册也不需要:--disable-manuals

关闭ipv6支持:--disable-ipv6

还有一个--enable-mini-agent选项,说明是编译出一个最小化的snmpd,比较有趣,试试先。

对于交叉编译,还需要用--host指明目标平台。

OK,看完了帮助说明,开始编译了:

1、配置,根据以上确定的选项:

[root@skynet root]# CC=i386-linux-gcc ./configure --host=$TARGET --enable-mini-agent --disable-ipv6 --with-endianness=little --disable-applications --disable-manuals --disable-scripts --disable-ucd-snmp-compatibility

CC指明了编译器;--host指明了我的目标平台,这个环境变量在我前面定义的devedaq脚本中。

还算顺利,继续编译它:

[root@skynet net-snmp-5.1.3.1]# make LDFLAGS="-static"

呵呵,因为没有装lib库,所以我用了-static选项,指明是静态编译;

3、安装

安装就需要指明安装路径了,路径可以在.config的时候指定,因为那个时候,那串东东太长了,我在install时指定也不迟:

#make prefix=${TARGET_PREFIX} exec_prefix=${TARGET_PREFIX} install

4、检查一下:

[root@skynet net-snmp-5.1.3.1]# ls -l ${TARGET_PREFIX}/sbin

total 2120

-rwxr-xr-x 1 root root 2164301 Nov 16 09:22 snmpd

snmpd就是我们要的代理主程序了,大约静态编译有2M。

[root@skynet net-snmp-5.1.3.1]# ls -l ${TARGET_PREFIX}/bin

total 4380

-rwxr-xr-x 2 root root 391980 Oct 14 2004 ar

-rwxr-xr-x 2 root root 581228 Oct 14 2004 as

……

呵呵,那堆程序和脚本没有安装,如snmpwalk……

ls ${TARGET_PREFIX}/lib

ls -l ${TARGET_PREFIX}/include



 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:修正Linux下丑陋的FireFox表单控件问题   下一篇:实用技巧两则 主机名修改与Cat命令退出

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号