zoukankan      html  css  js  c++  java
  • golang1.9编译openwrt运行程序 ,window7下liteide编译

    网上看了好多资料发现都很过时了,基本都是用的https://github.com/gomini/go-mips32编译的。

    但是go1.9早就支持mips了,设置好编译参数,开始build,这时在go/pkg下会出现linux_mips目录,就是编译环境,其他的一样。

    • GOOS是你的应用程序将要运行平台的操作系统
    • GOARCH是你的应用程序将要运行平台的处理器架构。

    有效的$GOOS$GOARCH组合如下:

        $GOOS        $GOARCH
        android     arm
        darwin      386
        darwin      amd64
        darwin      arm
        darwin      arm64
        dragonfly   amd64
        freebsd     386
        freebsd     amd64
        freebsd     arm
        linux       386
        linux       amd64
        linux       arm
        linux       arm64
        linux       ppc64
        linux       ppc64le
        linux       mips
        linux       mipsle
        linux       mips64
        linux       mips64le
        netbsd      386
        netbsd      amd64
        netbsd      arm
        openbsd     386
        openbsd     amd64
        openbsd     arm
        plan9       386
        plan9       amd64
        solaris     amd64
        windows     386
        windows     amd64

    1.首先通过putty连接到路由器,看看路由器cpu架构,我这里连接wr720n-v3,如下图

     cat /proc/cpuinfo

    cpu model                                 :   MIPS 24Kc V7.4  说明是mips架构

    还要看该cpu架构是big还是little,具体不知道怎么看,参考下面即可:

    big:用mips,如ar71xx是big
    little:用mipsle,如小米、极路由等MT76xx是little

    2.go可以通过GOARCH和GOOS设置编译后程序的运行架构和系统,所以在编译时设置环境如下:

    我是在window7下liteide编译,直接加个环境文件(liteide32.1shareliteideliteenvlinux32-mips.env):

    GOARCH=mips
    GOOS=linux

    3.golang编写如下代码,直接build,不要run:

    package main
    
    import (
        "fmt"
        "time"
    )
    
    func main() {
        for {
            fmt.Println("1111")
            time.Sleep(1 * time.Second)
            for {
                time.Sleep(1 * time.Second)
                fmt.Println("2222")
                break
            }
        }
    }

    4.用WinSCP将程序文件“openwrtTest“放到openwrt系统里面,这里放置到/tmp下,设置文件权限:

    chmod 777 -R /tmp/openwrtTest

    5.运行文件,顺利搞定。这里如果已经进入tmp目录的话用./openwrtTest

    /tmp/openwrtTest

     6.运行时可能出现"Illegal instruction",那是因为openwrt内核中没有开启FPU

    #1、可以设置
    GOMIPS=softfloat
    #2、或者开启FPU重新编译。

    参考以下网址https://blog.csdn.net/qq531456898/article/details/80095707或者http://www.iytc.net/wordpress/?p=1564

     7.运行时可能出现"syntax error: unexpected "("",那是因为编译时mips或者mipsle不对

  • 相关阅读:
    森林病虫防治系统 (七)
    森林病虫防治系统 (六)
    森林病虫防治系统 (五)
    森林病虫防治系统 (四)
    森林病虫防治系统 (三)
    森林病虫防治系统 (二.2)
    森林病虫防治系统 (二.1)
    森林病虫防治系统(二)
    森林病虫防治系统 (一)
    java web 机试
  • 原文地址:https://www.cnblogs.com/lxsky/p/8193988.html
Copyright © 2011-2022 走看看