相对GOPATH/src路径。goWorkSpace // goWorkSpace为GOPATH目录 -- bin -- myApp1 // 编译生成 -- myApp2 // 编译生成 -- myApp3 // 编译生成 -- pkg -- src -- common 1 -- common 2 -- common utils ...-- myApp1 // project1 -- models -- controllers -- others -- main.go -- myApp2 // project2 -- models -- controllers -- others -- main.go -- myApp3 // project3 -- models -- controllers -- others -- main.go.
这就是 Go 程序的入口地址,我是在 linux 上运行的,所以入口文件为 src/runtime/rt0_linux_amd64.s,runtime 目录下有各种不同名称的程序入口文件,支持各种操作系统和架构,代码为:例如 main 包里引用的 fmt 的源码路径是 /usr/local/go/src/fmt,而 util 的源码路径是 /Users/qcrao/hello-world/src/util,正好我们设置的 GoPath = /Users/qcrao/hello-world。【Go 编译命令执行过程】https://halfrost.com/go_command/
package mainimport "C"func main() {}//export Hellofunc Hello() string { return "Hello"}//export Testfunc Test() { println("export Test")}package main/*#include <stdio.h>#include "libhello.h"#cgo linux CFLAGS: -L./ -I./#cgo linux LDFLAGS: -L./ -I./ -lhello*/import "C"import ( "fmt")func main() { str := C.Hello() C.Test() fmt.
Golang项目目录结构组织 | Go语言中文网 | Golang中文社区 | Golang中国。package b import "fmt" func PrintB(){ printB1() fmt.go build a/a1go install a/a1go build a/a2go install a/a2go build bgo install bgo build cgo install c.如果两者不一致,例如上面的b1.go、b2.go里面的package是package bbbbb,则在c.go里import的时候要import "b",然后下面的b.PrintB(),则需要改为bbbbb.PrintB()
batu.thrift文件:thrift -r --gen go batu.thriftthrift -r --gen php batu.thrift thrift -r --gen php:server batu.thrift #生成PHP服务端接口代码有所不一样Golang Service 实现。package mainimport ( "batu/demo" "fmt" "git.apache.org/thrift.git/lib/go/thrift" "net" "os" "strconv" "time")const ( HOST = "127.0.0.1" PORT = "9090")func main() { startTime := currentTimeMillis() transportFactory := thrift.
使用Golang写C的动态库,当前项目目录root@working-srv: tree ././|-- hello| `-- main.go`-- main.c.root@working-srv: more hello/main.go package mainimport "C"func main() {}//export Hellofunc Hello() string { return "Hello"}//export Testfunc Test() { println("export Test")}项目目录root@working-srv:/data/code/src# tree project workspace/project└── pro.goworkspace/└── main.go.
4,Go程序中指定 CFLAGS 和 LDFLAGS#cgo CFLAGS: -I ./include #cgo LDFLAGS: -L .b -lhello -Wl,-rpath,/usr/localb.package main /* #cgo CFLAGS: -I ./include #cgo LDFLAGS: -L ./lib -lhello #include "hello.h" */ import "C" func main() { C.hello(C.CString("call C hello func")) }#include "hello.h"#include <stdio.h>void hello(const char *str){ printf("%s(%d): %s\n", __FUNCTION__, __LINE__, str);
Golang Go语言简单的文件服务器。package main.import “http”func main(){h := http.FileServer(http.Dir(“/Users/skey/Sites”))http.ListenAndServe(“:8080″, h)}
Go语言实践技巧(15)——禁止编译优化。
[leconte@localhost demolib]$ sconsscons: Reading SConscript files ...gcc -o a.o -c a.cgcc -o b.o -c b.cgcc -o main.o -c main.car rc libdemo.a a.o b.oranlib libdemo.agcc -o demo main.o -L. -ldemoscons: done building targets.[leconte@localhost demolib]$ cat SConstructSConscript([''test1/SConscript'', ''test2/SConscript'', ''test3/SConscript'', ''test4/SConscript''])
以前から c-archive は作れたけど DLL にするとシンボルが被ったりして上手く DLL が作れなかった。LIBRARY helloworldEXPORTS HelloWorld.gcc -m64 -shared -o xxx.dll xxx.def libxxx.a -Wl,--allow-multiple-definition -static -lstdc++ -lwinmm -lntdll -lWs2_32.NewLazyDLL("xxx.dll") helloworld = lib.let xxx = libcallex#load("xxx.dll")call xxx.call("HelloWorld", [], "")"call xxx.free()
go build -ldflags "-X main.GitTag=2016.06.11.release -X main.BuildTime=2016-06-11T16:11:49+0800" main.go.# Setup the -ldflags option for go build here, interpolate the variable valuesLDFLAGS=-ldflags "-X main.GitTag=${GITTAG} -X main.BuildTime=${BUILD_TIME}"最后的优化:git tag现在还是我们手动输入的,其实我们可以通过git命令 git describe –tags 来获取当前代码的tag,我们的Makefile最终可以改成这样:
windows下使用makefile编译C语言准备工作:然后运行compile.bat就可以生成test.exe文件了,同时会附加生成func.o和main,o两个中间代码的文件,类似于VC中的obj文件。GCC在提示符下编译程序,并没有如同VC那样的冗长而晦涩的编译参数。不得不承认,不懂GCC编译参数的人,确实会损失一些GCC的强大功能。这条指令将会让GCC在连接时除了在默认Lib存放目录中搜索指定的静态库以外,还会在Your_Lib_Files_Document_Path中搜索。
值得一提的是,在Windows下的动态链接也可以用到.lib为后缀的文件,但这里的.lib文件叫做导入库,是由.dll文件生成的。接下来使用ar工具把test.o和main.o打包成一个静态库文件lib_test.lib,输入命令:ar rv lib_test.lib test.o main.o.我们把test.c编译成动态库文件dll_test.dll,输入命令:gcc test.c -shared -o dll_test.dll.我们用该动态库文件dll_test.dll与main.c一起编译生成可执行文件dll_test.exe,输入命令:
Golang 在windows下编译Linux下可执行文件 原创 2017年08月11日 09:41:30.Golang 在 Mac、Linux、Windows 下如何交叉编译 Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。go语言在Windows系统下的安装并运行Hello World程序 Windows系统下安装Windows 下可以使用 .msi 后缀(在下载列表中可以找到该文件,如go1.8.1.windows-amd64.msi)的安装包来安装。
解决因SDL同时使用静态库和动态库出现的编译问题在包含 的文件下面添加:#ifdef main#undef main#endif在自己的main函数中添加:if( SDL_Init(SDL_INIT_NOPARACHUTE) <0 ){return(FALSE);}SDL_SetModuleHandle(GetModuleHandle(NULL));原因分析:编译时 运行库使用MTD 由于SDL同时使用静态库和动态库 所以链接会出错。
Golang中的GOPATH变量如何设置1.2 GOPATH与工作空间GOPATH设置。建立包和目录:$GOPATH/src/mymath/sqrt.go(包名:"mymath")以后自己新建应用或者一个代码包都是在src目录下新建一个文件夹,文件夹名称代码包名称,当然也允许多级目录,例如在src下面新建了目录$GOPATH/src/github.com/astaxie/beedb 那么这个包名称就是“github.com/astaxie/beedb”cd $GOPATH/pkg/平台名/mymath.a.// $GOPATH/src/mathapp/main.go 源码:
Fix cannot find package “golang.org/x/net/context”2017年08月26日 23:08:44阅读数:3977.cannot find package "golang.org/x/net/context" in any of:.../projects/go-projects/src/github.com/blevesearch/bleve/vendor/golang.org/x/net/context (vendor tree)/usr/local/go/src/golang.org/x/net/context (from $GOROOT).../projects/go-projects/src/golang.org/x/net/context (from $GOPATH)
go1.5beta2已经发布,正式版将在8月份发布.而早在go1.4就已发布了golang/mobile项目用以实现Android应用的开发.当前gomobile的环境部署已经相对成熟了.但项目声明必须基于go1.5,所以go1.4的同学必须要升级.因为在go1.4执行gomobile init的时候是不能通过的.com/go/mobile/gomobile-openal-soft-1.16.$ cd $GOPATH/src/golang.org/x/mobile/example/basic$ go run main.go第四步 使用gomobile直接生成apk格式Android应用.
现在开始创建一个包对象(也就是库文件),首先建立包路径 github.com/name5566/newmath,在此目录下创建文件 sqrt.go:复制代码 代码如下:package newmath.创建文件 _test.go 来编写测试,例如为 sqrt.go 创建的测试文件为 sqrt_test.go:复制代码 代码如下:package newmath.Example 函数命名有这样的习惯:复制代码 代码如下:func Example() { ...}func ExampleF() { ...}func ExampleT() { ...}func ExampleT_M() { ...}
Go语言中如何开启 TCP keepalive?TCP keepalive发送没有(或者几乎没有)包体负载的 TCP 报文给对端,并且对端会回复 keepalive ACK确认包。# Retry intervalcat /proc/sys/net/ipv4/tcp_keepalive_intvl.func (c *TCPConn) SetKeepAlive(keepalive bool) error的调用方式十分简单:传入true从而打开 TCP keepalive 机制。Notes on TCP keepalive in Go | TheNotExpert: https://thenotexpert.com/golang-tcp-keepalive/[2]
ReadString go_workspace/src/github.com/CodisLabs/redis-port/pkg/rdb/reader.go 0 0% 99.78% 3.70GB 98.94% github.com/CodisLabs/redis-port/pkg/rdb.(*rdbReader).readFull go_workspace/src/github.com/CodisLabs/redis-port/pkg/rdb/reader.go 0 0% 99.78% 3.70GB 98.94% github.com/CodisLabs/redis-port/pkg/rdb.(*rdbReader).readObjectValue go_workspace/src/github.com/CodisLabs/redis-port/pkg/rdb/reader.go.
LTIB详解一、LTIB简介。对于LTIB,目标镜像被放在子目录’rootfs’目录下,该目录需要被NFS输出,并且用于您选择目标的根文件系统。执行./ltib是LTIB的默认配置,事实上可以通过./ltib –c 来配置编译选项。举例: ./ltib -m prep -p helloworld //对helloworld文件包解压 输出目录为/../安装目录/ltib-mpc8313erdb-20070824/rpm/BUILD.LTIB原来的U-boot版本为u-boot-2009.11-rc1,本节的内容是移植最新的u-boot到ltib中。
移植OpenWrt到pcDuino.pillar@monster :/media/1$ cp ~/openwrt/trunk/bin/sunxi/sun4i-a10-pcduino.dtb .pillar@monster :/media/1$ cp ~/openwrt/trunk/bin/sunxi/openwrt-sunxi-uImage uImage pillar@monster :/media/1$ ls #第一分区文件boot.scr sun4i-a10-pcduino.dtb uImagepillar@monster :/media$ sudo dd if=~/openwrt/trunk/bin/sunxi/openwrt-sunxi-root.ext4 of=/dev/sdb2 bs=1M #拷贝第二分区文件。
5、Makefileall : writer reader clean : rm -f writer reader msg.*.cc msg.*.h *.o log proto_msg : protoc --cpp_out=. msg.proto write : msg.pb.cc writer.cc g++ msg.pb.cc writer.cc -o write `pkg-config --cflags --libs protobuf` reader : msg.pb.cc reader.cc g++ msg.pb.cc reader.cc -o reader `pkg-config --cflags --libs protobuf` 【结束】Allen Lin2013/06/26.
//获取源代码[root]# yum install git[root]# git clone https://github.com/json-c/json-c.git//编译安装[root]# cd json-c[root]# ./autogen.sh[root]# ./configure[root]# make[root]# make install.CFLAGS += $(shell pkg-config --cflags json-c)LDFLAGS += $(shell pkg-config --libs json-c)//或者简单一点gcc `pkg-config --cflags --libs json-c` -o target xxx.c.
-l参数和-L参数-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?放在/lib和/usr/lib和/usr/local/lib里的库直接用-l参数就能链接了,但如果库文件没放在这三个目录里,而是放在其他目录里,这时我们。gtk1.2的链接参数生成程序是gtk-config,执行gtk-config --libs就能得到以下输出"-L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic.包的安装路径,Libs参数和Cflags参数等等。
golang Go 删除文件。
如何编译运行HanLP自然语言处理包。·该方法不会将src/main/resources目录下的任何资源(包括hanlp.properties)打包进jar,如果需要打包资源文件,请切换到portable分支。命令行需要指定jar包和hanlp.properties所在的目录:$ java -cp target/hanlp-1.6.0.jar:src/main/resources com.hankcs.hanlp.model.perceptron.·Windows用户请使用分号java -cp target/hanlp-1.6.0.jar;src/main/resources.