set GOARCH=386
set GOOS=windows
set GOROOT=c:\go
set GOBIN=%GOROOT%\bin
set GOPATH=%GOROOT%;F:\workspace\goSample01;
设置好go-env.bat后,就可以点击Console.bat来启动编译和运行窗口 。
4、编写一个带C代码的go程序 。例如 , testc.go
5、编译
例如:
go build -compiler gccgo test_c.go
运行调用C代码的go文件(可?。?
1、testc.go.
创建rand目录,然后在rand里面创建testc.go. 代码如下:
package rand
/*
//
#include stdio.h
*/
import "C"
func PrintHello() {
C.puts(C.CString("Hello, world\n"))
}
2、a.go
在rand下创建a.go.代码如下:
package rand
import "fmt"
func SayHello(name string){
fmt.Println(name)
}
3、test_import.go
在rand的上一级创建test_import.go 。代码如下:
package main
import "./rand"
func main(){
rand.SayHello("tom")
rand.PrintHello()
}
4、运行test_import.go
go run test_import.go
在测试其它几个C代码的时候,发现windows版本的cgo还有些编译问题 , 同样的代码转移到苹果的XCODE下就没有问题 。后来终于发现原因了 , 原来有些例子是unix平台下的,而在windows平台下,方法名和参数需要做调整 。
例如:下面代码在windows下编译报一堆错误 。
package rand
/*
#include stdlib.h
*/
import "C"
func Random() int {
return int(C.random())
}
func Seed(i int) {
C.srandom(C.uint(i))
}
这里需要把return int(C.random()) 修改为“return int(C.rand())”
C.srandom(C.uint(i))修改为“C.srand(C.uint(i))”编译就OK了 。
golang SSH客户端三件套 - 1远程连接 shell golang SSH客户端系列文章目录
SSH(Secure Shell)协议在远程登录时比较常用,但是除此之外还有一些其它的功能也很好用,比如端口映射,X11转发,sftp文件传输等 。
以下三篇文章将介绍golang版SSH的远程登录功能,端口映射功能及sftp文件传输功能 。X11包含GUI的一些操作,没有找到相关的包,故不做介绍
通过golang自带的ssh包 golang.org/x/crypto/ssh 可以实现远程登录功能, 默认是不支持tab键和上下箭头的 ,
通过导入golang.org/x/crypto/ssh/terminal来创建VT100终端可以支持tab等功能,让golang版本的ssh客户端体验和平时用的其它客户端差不多 。
如何使用Go语言实现远程执行命令一般命令
所谓一般命令go语言导入远程包,就是在一定时间内会执行完go语言导入远程包的命令 。比如 grep, cat 等等 。执行命令go语言导入远程包的步骤是go语言导入远程包:连接,执行,获取结果
连接
连接包含了认证,可以使用 password 或者 sshkey 2种方式来认证 。下面的示例为了简单,使用了密码认证的方式来完成连接 。
import (
"fmt"
"time"
"golang.org/x/crypto/ssh"
)
func connect(user, password, host string, port int) (*ssh.Session, error) {
var (
auth[]ssh.AuthMethod
addrstring
clientConfig *ssh.ClientConfig
client *ssh.Client
session *ssh.Session
errerror
)
// get auth method
auth = make([]ssh.AuthMethod, 0)
auth = append(auth, ssh.Password(password))
clientConfig = ssh.ClientConfig{
User: user,
Auth: auth,
Timeout: 30 * time.Second,
}
// connet to ssh
addr = fmt.Sprintf("%s:%d", host, port)
if client, err = ssh.Dial("tcp", addr, clientConfig); err != nil {
【go语言导入远程包 go语言怎么运行】return nil, err
}
// create session
if session, err = client.NewSession(); err != nil {
推荐阅读
- 虎牙app直播语音没声音,虎牙开直播说话没声音
- 怎么显示手机型号,微博怎么显示手机型号
- 包含phpcms支持https的词条
- 如何扫描文件为pdf格式,如何把文件扫描pdf格式文件
- 包含python在函数里计时的词条
- zblog上传照片失败,zblog模板文件
- linux启用接口的命令,linux启用端口
- 如何除去excel中的0,如何除去excel中的前面空格
- vb.net画线条 vb中用line方法画直线