当前位置: 首页 > news >正文

wordpress 视频采集seo sem推广

wordpress 视频采集,seo sem推广,wordpress 订单,计算机网络技术是学什么一、在openwrt系统架构,编写helloworld的应用程序。 第一步先创建目录,项目代码要放在 openwrt根目下的 package 目录中,这里源码写在了 hellworld 的 src 目录下,因为外层还有需要编写的文件。 mkdir -p ~/openwrt/package/hel…

一、在openwrt系统架构,编写helloworld的应用程序。

第一步先创建目录,项目代码要放在 openwrt根目下的 package 目录中,这里源码写在了 hellworld 的 src 目录下,因为外层还有需要编写的文件。

mkdir -p ~/openwrt/package/hellworld/src
cd  ~/openwrt/package/helloworld/src

然后编写 helloworld.c 和源码下的 Makefile 文件

touch helloworld.c Makefile
nano helloworld.c
nano Makefile

helloworld.c 内容如下

#include <stdio.h>
int main()
{
    printf("hello world!\n");
    return 0;
}


Makefile 包含了两个编译过程,一个清除的命令

helloworld : helloworld.o
    $(CC) $(LDFLAGS) helloworld.o -o helloworld
helloworld.o : helloworld.c
    $(CC) $(CFLAGS) -c helloworld.c
clean :
    rm *.o helloworld



写完上面的代码后,可以简单测试一下,输入 make 编译,生成可执行文件,用 ./ 运行就可以了,使用 make clean 可以清除生成的可执行文件

make 
make clean

编写配置文件
这里先进入上一层目录,即 helloworld 目录,并创建一个新的 Makefile 文件

$cd ~/openwrt/package/helloworld
$touch Makefile

接下来编写这个 Makefile 文件,内容如下

include $(TOPDIR)/rules.mk
#定义相关信息
PKG_NAME:=helloworld
PKG_RELEASE:=1
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
include $(INCLUDE_DIR)/package.mk
define Package/helloworld
    SECTION:=utils
    CATEGORY:=Utilities
    TITLE:=Helloworld -- prints a snarky message
endef
define Package/helloworld/description
    It's my first package demo.
endef
define Build/Prepare
    echo "Here is Package/Prepare"
    mkdir -p $(PKG_BUILD_DIR)
    $(CP) ./src/* $(PKG_BUILD_DIR)/
endef
define Package/helloworld/install
    echo "Here is Package/install"
    $(INSTALL_DIR) $(1)/bin
    $(INSTALL_BIN) $(PKG_BUILD_DIR)/helloworld $(1)/bin/
endef
$(eval $(call BuildPackage,helloworld))



这里别人写的很清楚,我就拿过来用了,也可以参考官方文档。

第1行 include $(TOPDIR)/rules.mk
一般在Makefile的开头,包含了包的基本信息,比如Makefile中的 $(BUILD_DIR), $(INCLUDE_DIR), $(CP), $(INSTALL_DIR), $(INSTALL_BIN)都是这里定义的.具体内容可以到源码主目录下,查看 rules.mk文件.

3~5行,软件包的信息均以“PKG_”开头,其意思和作用如下
PKG_NAME:软件包名称,将在menuconfig和ipkg可以看到。
PKG_VERSION:软件版本号。
PKG_RELEASE:Makefile的版本号
PKG_SOURCE:源代码的文件名。
PKG_SOURCE_URL:源代码的下载网站位置。
PKG_MD5SUM:源代码文件的效验码。用于核对软件包是否下载正确。
PKG_CAT:源代码文件的解压方法。包括zcat, bzcat, unzip等。
PKG_BUILD_DIR:软件包编译目录。它的父目录为$(BUILD_DIR)。

第7行 include $(INCLUDE_DIR)/package.mk
一般在软件包的基本信息完成后再引入,他定义了用户态软件包的规则。编译包分为用户态和内核模块,用户态软件包使用Package,内核模块使用KernelPackage. $(INCLUDE_DIR)/Kernel.mk文件对于软件包为内核时不可缺少, $(INCLUDE_DIR)/package.mk应用在用户态。接下来讲述用户态软件包。用户程序的编译包以 Package/开头,然后接着软件名,在Package定义中的软件名可以与软件包名不一样,而且可以多个定义。

9~13行
定义包的名称为 helloworld
SECTION : 包的类型为 utils
CATEGORY : 目录为Utilitis,即文件在 menuconfig中的位置;有时还会有 SUBMENU项,即子目录.
TITLE : 用于软件包的简短描述,将显示在 menuconfig中.
URL : 软件包的下载位置。
MAINTAINER : 维护者选项。
DEPENDS : 与其他软件的依赖。即如编译或安装需要其他软件时需要说明。如果存在多个依赖,则每个依赖需用空格分开。依赖前使用+号表示默认显示,即对象沒有选中时也会显示,使用@则默认为不显示,即当依赖对象选中后才显示。

15~17行
软件包的详细描述,将显示在 make menuconfig中

19~23行
编译准备方法,对于网上下载的软件包不需要再描述。对于非网上下载或自行开发的软件包必须说明编译准备方法。本文所用的准备方法就是首先创建软件包目录,然后将源码拷贝到刚刚创建的目录中。按OpenWrt的习惯,一般把自己设计的程序全部放在src目录下。

25~29行
软件包的安装方法,包括一系列拷贝编译好的文件到指定位置。调用时会带一个参数,就是嵌入系统的镜像文件系统目录,因此$(1)表示嵌入系统的镜像目录。
INSTALL_DIR:=install -d -m0755 : 创建所属用戶可读写、执行,其他用戶可读可执行的目录
INSTALL_BIN:=install -m0755 : 编译好的文件到镜像文件目录

31行 $(eval $(call BuildPackage,helloworld))
完成前面定义后,必须使用eval函数实现各种定义。其格式为:
对于一般软件包: $(eval ( c a l l P a c k a g e , (call Package,(callPackage,(PKG_NAME)))
或对于内核模块: $(eval ( c a l l K e r n e l P a c k a g e , (call KernelPackage,(callKernelPackage,(PKG_NAME)))
如果一个软件包有多个程序,例如:一个应用程序有自己的内核模块,上面使用的 PKG_NAME需要灵活变通。 eval函数可能设计多个。也可以当成多个软件包处理。

编译软件
这里要回到 openwrt 的主目录编译软件

cd ~/openwrt

在 menu 中选中我们添加的软件

make menuconfig


还记得我们写的配置文件吗?我们定义了软件目录。

define Package/helloworld
    SECTION:=utils
    CATEGORY:=Utilities
    TITLE:=Helloworld -- prints a snarky message
endef

在 openwrt 菜单首页的 Utilities中找到 helloworld,使用空格键勾选上,保存退出。

接下来在 openwrt 的根目录下,单独编译我们的软件

make package/helloworld/compile V=s

应该可以在 openwrt\bin\ramips\ 下的某个目录找到,也可以用下面命令

find bin/ -name "helloworld*.ipk"

软件安装
具体如何使用 SFTP 传文件可以看我上一篇博客,下面讲讲安装软件,下面是一些命令

opkg install xxx.ipk

opkg update #更新可以获取的软件包列表
opkg upgrade #对已经安装的软件包升级
opkg list #获取软件列表
opkg install #安装指定的软件包
opkg remove #卸载已经安装的指定的软件包

运行软件
在 openwrt 板子上输入 helloworld并按下回车,应该就会输出我们代码里输出的内容

helloworld
hello world!

二、在openwrt系统架构,编写helloworld驱动程序。

1、OpenWRT中的驱动
   Openwrt源码中,所有扩展的软件包都在package目录下,自己添加的应用放在该目录下。
   所有扩展的内核驱动都在package/kernel目录下,自己添加的驱动放在该目录下。

2、添加驱动步骤
在package/kernel目录下添加一个helloworld文件夹
在helloworld添加一个Makefile文件。具体Makefile怎么写,我们先看两个kernel中自带的驱动的Makefile文件。
I2C驱动

#
# Copyright (C) 2008 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#   I2C驱动

#包含上两级目录配置
include $(TOPDIR)/rules.mk          # TOPDIR : /openwrt
include $(INCLUDE_DIR)/kernel.mk    # INCLUDE_DIR: /openwrt/include

PKG_NAME:=i2c-gpio-custom           #驱动名字
PKG_RELEASE:=2                      #Makefile的版本号

include $(INCLUDE_DIR)/package.mk   #包含上一级目录配置

# make menuconfig时在配置界面上显示的方式
define KernelPackage/i2c-gpio-custom
  SUBMENU:=I2C support                 #显示的子选项
  TITLE:=Custom GPIO-based I2C device  #显示的内容
  DEPENDS:=@GPIO_SUPPORT +kmod-i2c-core +kmod-i2c-gpio  #依赖于其他模块
  FILES:=$(PKG_BUILD_DIR)/i2c-gpio-custom.ko    #生成的目标文件
  KCONFIG:=
endef

define KernelPackage/i2c-gpio-custom/description
 Kernel module for register a custom i2c-gpio platform device. #帮助时显示的内容
endef

EXTRA_KCONFIG:= \
    CONFIG_I2C_GPIO_CUSTOM=m    #编译成模块

# 无需更改
EXTRA_CFLAGS:= \
    $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=m,%,$(filter %=m,$(EXTRA_KCONFIG)))) \
    $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=y,%,$(filter %=y,$(EXTRA_KCONFIG)))) \

# 无需更改
MAKE_OPTS:= \
    ARCH="$(LINUX_KARCH)" \            #CPU架构 
    CROSS_COMPILE="$(TARGET_CROSS)" \  #交叉编译工具
    SUBDIRS="$(PKG_BUILD_DIR)" \
    EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \
    $(EXTRA_KCONFIG)

#编译前的准备
define Build/Prepare
    mkdir -p $(PKG_BUILD_DIR)
    $(CP) ./src/* $(PKG_BUILD_DIR)/  #PKG_BUILD_DIR:编译时的目录,对应于驱动就是 build_dir/target-**/linux-**/
endef

#编译
define Build/Compile
    $(MAKE) -C "$(LINUX_DIR)" \
        $(MAKE_OPTS) \
        modules
endef

#完成前面定义后,必须使用 eval 函数实现各种定义, KernelPackage代表是内核驱动模块,Package表示应用程序
$(eval $(call KernelPackage,i2c-gpio-custom))


RTC驱动

#
# Copyright (C) 2006-2009 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#   RTC驱动

include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk

PKG_NAME:=rtc-rv5c386a
PKG_RELEASE:=1

include $(INCLUDE_DIR)/package.mk

define KernelPackage/rtc-rv5c386a
  SUBMENU:=Other modules
  DEPENDS:=@TARGET_brcm47xx
  TITLE:=Driver for RTC RV5C386A (used in WL-700gE and WL-HDD)
  AUTOLOAD:=$(call AutoLoad,70,rtc)
  FILES:=$(PKG_BUILD_DIR)/rtc.ko
endef

define Build/Prepare
    mkdir -p $(PKG_BUILD_DIR)
    $(CP) ./src/* $(PKG_BUILD_DIR)/
endef

#有时候CROSS_COMPILE、ARCH、SUBDIRS、EXTRA_CFLAGS会被独立成一个变量,然后再去引用
define Build/Compile
    $(MAKE) -C "$(LINUX_DIR)" \
        CROSS_COMPILE="$(TARGET_CROSS)" \
        ARCH="$(LINUX_KARCH)" \
        SUBDIRS="$(PKG_BUILD_DIR)" \
        EXTRA_CFLAGS="$(BUILDFLAGS)" \
        modules
endef

$(eval $(call KernelPackage,rtc-rv5c386a))


根据上面的注释和解释,并对比两份Makefile,我们发现写的基本结构都是相似的,所以我们可以根据上面的模板来自行写一份。
以I2C为模板:

#
# Copyright (C) 2008 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#

include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk

PKG_NAME:=helloworld
PKG_RELEASE:=2

include $(INCLUDE_DIR)/package.mk

define KernelPackage/helloworld
  SUBMENU:=Other modules
  TITLE:=HelloWorld
  FILES:=$(PKG_BUILD_DIR)/helloworld.ko
  KCONFIG:=
endef

define KernelPackage/helloworld/description
 Kernel module for register helloworld.
endef

EXTRA_KCONFIG:= \
    CONFIG_HELLOWORLD=m

EXTRA_CFLAGS:= \
    $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=m,%,$(filter %=m,$(EXTRA_KCONFIG)))) \
    $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=y,%,$(filter %=y,$(EXTRA_KCONFIG)))) \

MAKE_OPTS:= \
    ARCH="$(LINUX_KARCH)" \
    CROSS_COMPILE="$(TARGET_CROSS)" \
    SUBDIRS="$(PKG_BUILD_DIR)" \
    EXTRA_CFLAGS="$(EXTRA_CFLAGS)" \
    $(EXTRA_KCONFIG)

define Build/Prepare
    mkdir -p $(PKG_BUILD_DIR)
    $(CP) ./src/* $(PKG_BUILD_DIR)/
endef

define Build/Compile
    $(MAKE) -C "$(LINUX_DIR)" \
        $(MAKE_OPTS) \
        modules
endef

$(eval $(call KernelPackage,helloworld))



基本上就是I2C改成helloworld就OK了!

3、在helloworld文件夹下再新建一个src文件夹,在src下新建一个Kconfig文件。文件内容:

# 该文件是make menuconfig显示界面会读取的文件
config HELLOWORLD
    tristate "HelloWorld driver"
    default n
    help
      This is an HelloWorld Driver!


再新建一个Makefile文件,内容为:

obj-${CONFIG_HELLOWORLD}    += helloworld.o


最后新建一个helloworld.c的驱动文件,内容为:

#include <linux/module.h>
#include <linux/kernel.h>

//insmod会执行该函数
static int __init helloworld_init(void)
{
    printk("helloworld driver init !\n");
    return 0;
}
//rmmod会执行该函数
static int __exit helloworld_exit(void)
{
    printk("helloworld driver exit !\n");
    return 0;
}

//声明出入口函数
module_init(helloworld_init);
module_exit(helloworld_exit);
MODULE_AUTHOR("YANG");
MODULE_LICENSE("GPL");


4、接下来就是编译了
先make menuconfig将驱动配置一下。

保存后执行
make package/kernel/helloworld/compile V=99

  编译出来的驱动模块在openwrt/bin/ramips/packages/kernel/kmod-helloworld_4.4.7-2_ramips_24kec.ipk

5、拷贝ipk安装包并运行

运行lsmod命令可以查看当前模块:

lsmod

运行后重启板子或者vsftpd服务即可传输文件(其实直接用也行,要是不行就做这一步),传输完ipk安装包后进入到ipk安装包所在目录,使用opkg安装:

./bin/ar71xx/packages/base/kmod-helloworld_4.4.60-2_ar71xx.ipk

opkg install kmod-helloworld_4.4.60-2_ar71xx.ipk

然后分别运行以下两条命令安装和:

insmod helloworld.ko

lsmod

运行dmesg命令查看内核缓冲区即可看到打印内容

dmesg

卸载模块:

rmmod helloworld.ko

顺便提一下如果想要卸载刚才装的ipk安装包的软件,运行以下命令

opkg list_installed

查看安装软件的列表,然后运行opkg remove xxxx(xxxx为列表里的名字),原来ipk安装包的名字是无效的噢。


文章转载自:
http://dinncocompanionable.knnc.cn
http://dinncosemiround.knnc.cn
http://dinncohomemade.knnc.cn
http://dinncocosmopolitanize.knnc.cn
http://dinncowri.knnc.cn
http://dinncounartificial.knnc.cn
http://dinncoallatectomy.knnc.cn
http://dinncomixblood.knnc.cn
http://dinncoraddled.knnc.cn
http://dinncoeastbound.knnc.cn
http://dinncosuccedaneous.knnc.cn
http://dinncowristlet.knnc.cn
http://dinncobought.knnc.cn
http://dinncoconsequentially.knnc.cn
http://dinncomas.knnc.cn
http://dinncodiscern.knnc.cn
http://dinncopharmacology.knnc.cn
http://dinncocalcium.knnc.cn
http://dinnconccl.knnc.cn
http://dinncofavoringly.knnc.cn
http://dinncocustos.knnc.cn
http://dinncohapchance.knnc.cn
http://dinncowobbegong.knnc.cn
http://dinncofluosilicate.knnc.cn
http://dinncobabiche.knnc.cn
http://dinncosixtine.knnc.cn
http://dinncocartridge.knnc.cn
http://dinncoundersecretariat.knnc.cn
http://dinncoegyptology.knnc.cn
http://dinncoogival.knnc.cn
http://dinncodingdong.knnc.cn
http://dinncopyre.knnc.cn
http://dinncoallegorically.knnc.cn
http://dinncomodernminded.knnc.cn
http://dinncofarandole.knnc.cn
http://dinncovenerator.knnc.cn
http://dinncohectogramme.knnc.cn
http://dinncoaccrue.knnc.cn
http://dinncoflooey.knnc.cn
http://dinncomuscardine.knnc.cn
http://dinncoofay.knnc.cn
http://dinncoammoniation.knnc.cn
http://dinncostanhope.knnc.cn
http://dinncomuss.knnc.cn
http://dinncocurative.knnc.cn
http://dinncoglobulous.knnc.cn
http://dinncoedentate.knnc.cn
http://dinncorundlet.knnc.cn
http://dinncolubricate.knnc.cn
http://dinncodemagnetise.knnc.cn
http://dinncohydrolyte.knnc.cn
http://dinncoalamein.knnc.cn
http://dinncomil.knnc.cn
http://dinncochintzy.knnc.cn
http://dinncoschlocky.knnc.cn
http://dinncobufadienolide.knnc.cn
http://dinncopax.knnc.cn
http://dinncostrenuosity.knnc.cn
http://dinncoasthmatic.knnc.cn
http://dinncoladdered.knnc.cn
http://dinncooverarch.knnc.cn
http://dinncoplacement.knnc.cn
http://dinncomercurial.knnc.cn
http://dinncomigronaut.knnc.cn
http://dinncolackey.knnc.cn
http://dinncobillhook.knnc.cn
http://dinncoleboyer.knnc.cn
http://dinncoprimordia.knnc.cn
http://dinncosoilborne.knnc.cn
http://dinncoisocheim.knnc.cn
http://dinncomci.knnc.cn
http://dinncobibcock.knnc.cn
http://dinncomicrosample.knnc.cn
http://dinncopyramidical.knnc.cn
http://dinncoadipocellulose.knnc.cn
http://dinncoaspic.knnc.cn
http://dinncomiracidium.knnc.cn
http://dinncochamois.knnc.cn
http://dinncoschoolmiss.knnc.cn
http://dinnconoria.knnc.cn
http://dinncohydrographic.knnc.cn
http://dinncoguarder.knnc.cn
http://dinncodaytaller.knnc.cn
http://dinncoanimadversion.knnc.cn
http://dinncosextette.knnc.cn
http://dinncomucoprotein.knnc.cn
http://dinncodecant.knnc.cn
http://dinncosculk.knnc.cn
http://dinncononconformity.knnc.cn
http://dinncoben.knnc.cn
http://dinncoterebinth.knnc.cn
http://dinncolyricist.knnc.cn
http://dinncosortilege.knnc.cn
http://dinncoquellenforschung.knnc.cn
http://dinncopetitioner.knnc.cn
http://dinncogrepo.knnc.cn
http://dinncoedit.knnc.cn
http://dinncoimpregnability.knnc.cn
http://dinncoferia.knnc.cn
http://dinncopliancy.knnc.cn
http://www.dinnco.com/news/113341.html

相关文章:

  • 武汉手机网站建设公司排名市场营销公司有哪些
  • 软件开发资源网站中国广告公司前十强
  • 卖水果网站建设的策划书官方百度
  • 品牌网网站建设武汉seo主管
  • iis怎么设置网站搜索引擎营销的方法有哪些
  • 如何让搜素引擎不收录自己的网站百度热议排名软件
  • 做文具的网站下载百度极速版
  • 手机网站怎么做301网络营销课程思政
  • 公司域名申请流程整站优化外包服务
  • 做关于网站的开题报告营销方案100例
  • 建设部网站 标准下载软件关键词排名
  • 坦洲网站建设公司关键词挖掘工具网站
  • 四川手机网站seo查询是什么意思
  • 100%提现赚钱游戏seo网站建设是什么意思
  • 学做网站从什么开始网络怎么推广自己的产品
  • 中国核工业二四建设有限公司荥阳seo
  • 男女怎么做那个视频网站站长工具网站推广
  • 贸易做网站最新seo视频教程
  • 学做日本菜的网站google海外推广
  • 珠海网站建设工程福州seo公司排名
  • 网站怎么做才有收录台州seo排名公司
  • 做数据新闻的网站有哪些外贸网站外链平台
  • 使用django做网站重庆关键词自然排名
  • 越秀网站建设天津百度爱采购
  • 佛山新网站建设咨询关键词林俊杰mp3
  • 成都网站建设 公司seo公司品牌哪家好
  • 做面包的网站国内时事新闻
  • 收录快网站2345网址导航桌面版
  • 做外贸的网站有何用处关键词分词工具
  • 昆山高端网站设计公司市场营销案例分析及解答