busubox官网安装在stsyem怎么找

3831人阅读
openwrt(37)
& & & & & & & & & &&&&& 我的openwrt学习笔记(三十):webserver之uhttpd
&&&&&&&& Openwrt使用的WEBSERVER是UHTTP。
一.Uhttp简介
1.网页的挂载方式
openwrt挂载网页启动的是uhttpd,uhttp是LuCI所在的Web Server。用户登录所用网页放置在/www下边,index-htm指向了/www/cgi-bin/luci。openwrt中利用它作为web服务器,实现客户端web页面配置功能。对于request处理方式,采用的是cgi脚本,而所用的cgi程序就是luci。
2.工作框架如下:
& Client端和serv端采用cgi方式交互,uhttpd服务器的cgi方式中,fork出一个子进程,子进程利用execl替换为luci进程空间,并通过setenv环境变量的方式,传递一些固定格式的数据(如PATH_INFO)给luci。另外一些非固定格式的数据(post-data)则由父进程通过一个w_pipe写给luci的stdin,而luci的返回数据则写在stdout上,由父进程通过一个r_pipe读取。
二.编译uhttp源代码包
&& Uhttp的编译时cmake编译系统,按照cmake编译方法编译即可。Uhttp是基于ubox ubus json-c的,如果加上SSL ,还需要openssl库。
git clone git://git.openwrt.org/project/libubox.git
&git clonegit://git.openwrt.org/project/ubus.git
1.openwrt libubox 开发简介
libubox是openwrt新版本中的一个基础库,在openwrt1407中有很多应用程序是基于libubox开发的。(如:uhttpd,libubus等)。
&&&&libubox主要提供一下两种功能:
&&&&&&&&1、提供一套基于事件驱动的机制。
&&&&&&&&2、提供多种开发支持接口。(如:链表、kv链表、平衡查找二叉树、md5、json)
&&&&使用libubox开发的好处有如下几点:
&&&&&&&&1、可以使程序基于事件驱动,从而可实现在单线程中处理多个任务。
&&&&&&&&2、基于libubox提供的开发API可以加快开发进度的同事提高程序的稳定性。
&&&&&&&&3、能更好的将程序融入openwrt的架构中,因为新的openwrt的很多应用和库都基于libubox开发的。
&&&&综上所述,libubox是您玩新版openwrt必修的一个东东,相信它也值得大家去研究学习。
2.openwrt ubus简介以及libubus开发说明
ubus是新openwrt引入的一个消息总线,主要作用是实现不同应用程序之间的信息交互。
&&&&ubus启动后会在后台运行ubusd进程,该进程监听一个unix套接字用于与其他应用程序通信。其他应用程序可基于libubox提供的接口(或自己实现)与其通信。
&&&&使用ubus的方式主要有:1、向其注册消息或控制接口。2、向其调用其他应用程序的消息或控制接口。3、向其注册关心的事件。
ubus命令使用说明
ubus命令用于控制调试相关ubus接口,主要命令说明如下:
linux@ubuntu:~/linux_c/ubus/ubus-$./ubus
Usage: ./ubus [&options&]&command& [arguments...]
&-s&socket&:&&&&&&&&&&& Set the unixdomain socket to connect to
&-t&timeout&:&&&&&&&&& Set the timeout (inseconds) for a command to complete
&-S:&&&&&&&&&&&&&&&&&&&& Use simplified output (forscripts)
&-v:&&&&&&&&&&&&&&&&&&&& More verbose output
&-list [&path&]&&&&&&&&&&&&&&&&&& Listobjects
&-call &path& &method& [&message&]&&& Call an object method
&-listen [&path&...]&&&&&&&&&&&&&&&&&&& Listenfor events
&- send&type& [&message&]&&&&&&&&&&& Sendan event
&-wait_for &object& [&object&...]&& Waitfor multiple objects to appear on ubus
ubus (OpenWrt micro bus 架构)& http://wiki.openwrt.org/zh-cn/doc/techref/ubus&
3.编译uhttp
Uhttp编译需要先安装cmake工具链
linux@ubuntu:~/linux_c/uhttpd/uhttpd-2014-10-27$ sudo apt-get install cmake
Reading package lists... Done
Building dependency tree&&&&&&
Reading state information... Done
The following extra packages will be installed:
& cmake-data emacsen-common libxmlrpc-core-c3
The following NEW packages will be installed:
& cmake cmake-data emacsen-common libxmlrpc-core-c3
0 upgraded, 4 newly installed, 0 to remove and 623 not upgraded.
Need to get 196 kB/5,348 kB of archives.
After this operation, 13.9 MB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://cn./ubuntu/ precise-updates/main libxmlrpc-core-c3 i386 1.16.33-3.1ubuntu5.1 [179 kB]
Get:2 http://cn./ubuntu/ precise/main emacsen-common all 1.4.22ubuntu1 [16.9 kB]
Fetched 196 kB in 0s (608 kB/s)&&&&&
Selecting previously unselected package libxmlrpc-core-c3.
(Reading database ... 148423 files and directories currently installed.)
Unpacking libxmlrpc-core-c3 (from .../libxmlrpc-core-c3_1.16.33-3.1ubuntu5.1_i386.deb) ...
Selecting previously unselected package emacsen-common.
Unpacking emacsen-common (from .../emacsen-common_1.4.22ubuntu1_all.deb) ...
Selecting previously unselected package cmake-data.
Unpacking cmake-data (from .../cmake-data_2.8.7-0ubuntu5_all.deb) ...
Selecting previously unselected package cmake.
Unpacking cmake (from .../cmake_2.8.7-0ubuntu5_i386.deb) ...
Processing triggers for man-db ...
Setting up libxmlrpc-core-c3 (1.16.33-3.1ubuntu5.1) ...
Setting up emacsen-common (1.4.22ubuntu1) ...
emacsen-common: Handling install of emacsen flavor emacs
Setting up cmake-data (2.8.7-0ubuntu5) ...
emacsen-common: Handling install of emacsen flavor emacs
Setting up cmake (2.8.7-0ubuntu5) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place
& 执行编译,注意点号
linux@ubuntu:~/linux_c/uhttpd/libubox-$ cmake .
-- The C compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- checking for modules 'json-c;json'
--&& package 'json-c' not found
--&& package 'json' not found
-- Looking for clock_gettime
-- Looking for clock_gettime - not found
-- Looking for clock_gettime in rt
-- Looking for clock_gettime in rt - found
CMake Error at lua/CMakeLists.txt:36 (MESSAGE):
& Lua was not found on your system
CMake Error at lua/CMakeLists.txt:49 (INSTALL):
& install TARGETS given no LIBRARY DESTINATION for module target &uloop_lua&.
n&&&&&& Configuring incomplete, errors occurred!
Jsonc 编译安装
linux@ubuntu:~/linux_c/jsonc/json-c-0.11$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make sets $(MAKE)... (cached) yes
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking for strings.h... (cached) yes
checking syslog.h usability... yes
checking syslog.h presence... yes
checking for syslog.h... yes
checking for unistd.h... (cached) yes
checking sys/cdefs.h usability... yes
checking sys/cdefs.h presence... yes
checking for sys/cdefs.h... yes
checking sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking stdarg.h usability... yes
checking stdarg.h presence... yes
checking for stdarg.h... yes
checking locale.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
checking for inttypes.h... (cached) yes
checking for an ANSI C-conforming const... yes
checking for size_t... yes
checking for vprintf... yes
checking for _doprnt... no
checking for working memcmp... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible realloc... yes
checking for strcasecmp... yes
checking for strdup... yes
checking for strndup... yes
checking for strerror... yes
checking for snprintf... yes
checking for vsnprintf... yes
checking for vasprintf... yes
checking for open... yes
checking for vsyslog... yes
checking for strncasecmp... yes
checking for setlocale... yes
checking if .gnu.warning accepts long strings... no
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for a sed that does not truncate output... /bin/sed
checking for fgrep... /bin/grep -F
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands &+=&... yes
checking for /usr/bin/ld option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for ar... ar
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC -DPIC
checking if gcc PIC flag -fPIC -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating json.pc
config.status: creating json-c.pc
config.status: creating tests/Makefile
config.status: creating json-c-uninstalled.pc
config.status: creating config.h
config.status: config.h is unchanged
config.status: creating json_config.h
config.status: json_config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands
linux@ubuntu:~/linux_c/jsonc/json-c-0.11$ make
linux@ubuntu:~/linux_c/jsonc/json-c-0.11$ sudo make install
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
test -z &/usr/local/include/json-c& || /bin/mkdir -p &/usr/local/include/json-c&
&/usr/bin/install -c -m 644 arraylist.h bits.h debug.h json.h json_config.h json_c_version.h json_inttypes.h json_object.h json_object_iterator.h json_object_private.h json_tokener.h json_util.h linkhash.h printbuf.h '/usr/local/include/json-c'
test -z &/usr/local/lib/pkgconfig& || /bin/mkdir -p &/usr/local/lib/pkgconfig&
&/usr/bin/install -c -m 644 json-c.pc json.pc '/usr/local/lib/pkgconfig'
make& install-data-hook
make[3]: Entering directory `/home/linux/linux_c/jsonc/json-c-0.11'
test \! -e &/usr/local/include/json& || rm &/usr/local/include/json&
ln -s json-c &/usr/local/include/json&
make[3]: Leaving directory `/home/linux/linux_c/jsonc/json-c-0.11'
make[2]: Leaving directory `/home/linux/linux_c/jsonc/json-c-0.11'
make[1]: Leaving directory `/home/linux/linux_c/jsonc/json-c-0.11'
Making install in tests
make[1]: Entering directory `/home/linux/linux_c/jsonc/json-c-0.11/tests'
make[2]: Entering directory `/home/linux/linux_c/jsonc/json-c-0.11/tests'
make[2]: Nothing to be done for `install-exec-am'.
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/home/linux/linux_c/jsonc/json-c-0.11/tests'
make[1]: Leaving directory `/home/linux/linux_c/jsonc/json-c-0.11/tests'
重新编译libubox
linux@ubuntu:~/linux_c/uhttpd/libubox-$ cmake -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_LUA=off
-- checking for modules 'json-c;json'
--&& found json-c, version 0.11
--&& found json, version 0.11
-- Configuring done
-- Generating done
-- Build files have been written to: /home/linux/linux_c/uhttpd/libubox-
&Json c错误以及LUA错误没了,并生成了Makefile
执行编译ubox
linux@ubuntu:~/linux_c/uhttpd/libubox-$ make
OK& 编译通过
linux@ubuntu:~/linux_c/uhttpd/libubox-$ sudo make install
[sudo] password for linux:
[ 45%] Built target ubox
[ 48%] Built target blobmsg_json
[ 51%] Built target jshn
[ 54%] Built target json_script
[100%] Built target ubox-static
Install the project...
-- Install configuration: &&
-- Installing: /usr/include/libubox/uloop.h
-- Installing: /usr/include/libubox/vlist.h
-- Installing: /usr/include/libubox/blobmsg.h
-- Installing: /usr/include/libubox/blobmsg_json.h
-- Installing: /usr/include/libubox/runqueue.h
-- Installing: /usr/include/libubox/ustream.h
-- Installing: /usr/include/libubox/utils.h
-- Installing: /usr/include/libubox/blob.h
-- Installing: /usr/include/libubox/safe_list.h
-- Installing: /usr/include/libubox/list.h
-- Installing: /usr/include/libubox/md5.h
-- Installing: /usr/include/libubox/kvlist.h
-- Installing: /usr/include/libubox/usock.h
-- Installing: /usr/include/libubox/json_script.h
-- Installing: /usr/include/libubox/avl-cmp.h
-- Installing: /usr/include/libubox/avl.h
-- Installing: /usr/lib/libubox.so
-- Installing: /usr/lib/libubox.a
-- Installing: /usr/lib/libblobmsg_json.so
-- Removed runtime path from &/usr/lib/libblobmsg_json.so&
-- Installing: /usr/bin/jshn
-- Removed runtime path from &/usr/bin/jshn&
-- Installing: /usr/lib/libjson_script.so
-- Removed runtime path from &/usr/lib/libjson_script.so&
-- Installing: /usr/share/libubox/jshn.sh
Ubus编译安装
linux@ubuntu:~/linux_c/ubus/ubus-$ cmake .
-- The C compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
CMake Error at lua/CMakeLists.txt:36 (MESSAGE):
& Lua was not found on your system
CMake Error at lua/CMakeLists.txt:49 (INSTALL):
& install TARGETS given no LIBRARY DESTINATION for module target &ubus_lua&.
-- checking for module 'systemd'
--&& package 'systemd' not found
-- Configuring incomplete, errors occurred!
linux@ubuntu:~/linux_c/ubus/ubus-$ cmake -DBUILD_LUA=off
-- checking for module 'systemd'
--&& package 'systemd' not found
-- Configuring done
-- Generating done
-- Build files have been written to: /home/linux/linux_c/ubus/ubus-
linux@ubuntu:~/linux_c/ubus/ubus-$ make
Scanning dependencies of target ubus
[& 6%] Building C object CMakeFiles/ubus.dir/libubus.c.o
[ 13%] Building C object CMakeFiles/ubus.dir/libubus-io.c.o
[ 20%] Building C object CMakeFiles/ubus.dir/libubus-obj.c.o
[ 26%] Building C object CMakeFiles/ubus.dir/libubus-sub.c.o
[ 33%] Building C object CMakeFiles/ubus.dir/libubus-req.c.o
Linking C shared library libubus.so
[ 33%] Built target ubus
Scanning dependencies of target cli
[ 40%] Building C object CMakeFiles/cli.dir/cli.c.o
Linking C executable ubus
[ 40%] Built target cli
Scanning dependencies of target ubusd
[ 46%] Building C object CMakeFiles/ubusd.dir/ubusd.c.o
[ 53%] Building C object CMakeFiles/ubusd.dir/ubusd_id.c.o
[ 60%] Building C object CMakeFiles/ubusd.dir/ubusd_obj.c.o
[ 66%] Building C object CMakeFiles/ubusd.dir/ubusd_proto.c.o
[ 73%] Building C object CMakeFiles/ubusd.dir/ubusd_event.c.o
Linking C executable ubusd
[ 73%] Built target ubusd
Scanning dependencies of target client
[ 80%] Building C object examples/CMakeFiles/client.dir/client.c.o
[ 86%] Building C object examples/CMakeFiles/client.dir/count.c.o
Linking C executable client
[ 86%] Built target client
Scanning dependencies of target server
[ 93%] Building C object examples/CMakeFiles/server.dir/server.c.o
[100%] Building C object examples/CMakeFiles/server.dir/count.c.o
Linking C executable server
[100%] Built target server
linux@ubuntu:~/linux_c/ubus/ubus-$ sudo make install
[sudo] password for linux:
[ 33%] Built target ubus
[ 40%] Built target cli
[ 73%] Built target ubusd
[ 86%] Built target client
[100%] Built target server
Install the project...
-- Install configuration: &&
-- Installing: /usr/local/lib/libubus.so
-- Installing: /usr/local/bin/ubus
-- Removed runtime path from &/usr/local/bin/ubus&
-- Installing: /usr/local/sbin/ubusd
-- Installing: /usr/local/include/ubusmsg.h
-- Installing: /usr/local/include/ubus_common.h
-- Installing: /usr/local/include/libubus.h
编译并安装了json-c ubox& ubus基础包后重新进入Uhttpd
linux@ubuntu:~/linux_c/uhttpd/uhttpd-$ cmake .
-- The C compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Looking for getspnam
-- Looking for getspnam - found
-- Configuring done
-- Generating done
-- Build files have been written to: /home/linux/linux_c/uhttpd/uhttpd-
生成Makefile
linux@ubuntu:~/linux_c/uhttpd/uhttpd-$ ls -l|grep Makefile
-rw-rw-r-- 1 linux linux 14339 Sep 13 16:20 Makefile
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:135583次
积分:2775
积分:2775
排名:第10411名
原创:104篇
转载:100篇
评论:35条
(1)(3)(33)(21)(16)(22)(2)(5)(1)(26)(22)(5)(3)(1)(2)(3)(1)(2)(12)(11)(2)(6)(6)}

我要回帖

更多关于 fv30bus2c 安装 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信