1. 首页
  2. 主题
  3. Go基础

请问一个初级问题:go install 后引用包的问题

liuyugan · · 2149 次点击
请问:go install 后,pkg文件夹多出了 *.a文件,然后是否可以直接引用包? 例如: pkg 中已经有了 \windows_amd64\go-mssqldb.a ,然后我在调用这个包的go文件中 import 包 ```go import( _ "go-mssqldb" ) ``` ,但是还是提示 :cannot find package "go-mssqldb" in any of: /usr/local/go/src/go-mssqldb (from $GOROOT)<br> /usr/local/go/bin/src/go-mssqldb (from $GOPATH)<br> /home/wliu/workspace/GolangSocketServer/src/go-mssqldb 使用 go install 后还为什么还需要保留 src下的go源文件?必须的吗?如果是 go install的作用是什么? 我在项目中已经有了 go-mssqldb.a 的引用了啊。
源码必须存在。 有一种解决方案,当然比较麻烦: 将要发布的闭源包.a文件放到 $GOROOT/pkg/$GOOS_$GOARCH/ 目录中. 再将发布包的源码保留只有包声明的源文件放到 $GOROOT/src/pkg/ 目录中. 操作如下: *发布方法*: 例如有say包要发布: ```go $cd $GOPATH/src/say $cat say.go // say something package package say import &#34;fmt&#34; // private function func say(str string){ fmt.Println(str) } // Say hi func Hi(){ say(&#34;Hi......&#34;) } // Say hello to someone func Hello(me string){ say(&#34;Hello&#34; + me) } ``` 首先编译生成say包的.a文件(如果要发布到多种系统架构,需要修改编译参数交叉编译出多种发布文件) $go install $ls $GOPATH/pkg/$GOOS_$GOARCH/say.a 其次修改发布包对应的源文件(两种方式任选) 最简单的修改方式 $echo &#39;package say&#39; &gt; say.go 保留导出的接口与API注释供查看使用 ```go $cat &gt; say.go &lt;&lt;EOF // say something package package say // Say hi func Hi(){} // Say hello to someone func Hello(me string){} EOF ``` 最后发布方提供两份文件: 编译生成say包的.a文件和修改之后的源文件 say.a say.go
#1
更多评论
感谢感谢,确实如您所说,比较麻烦。我还是老老实实的git clone src吧,再次感谢!
#2
Great! [kids bike](https://www.xjd.com/)
#3

用户登录

没有账号?注册

今日阅读排行

    加载中

一周阅读排行

    加载中