Golang的模块想让其他人用,但不想其他人看到源代码,那怎么做?
都啥时代了, 还不给看代码. 现在技术根本不值钱. 比你写的好的代码多了去了, Go源码本身就开源
要不开源可以啊, 直接做成服务
说说使用plugin的问题:
- 你的plugin和用户代码使用的go 编译器版本必须一样
- 你的plugin和用户代码依赖同样的库的话,依赖库的版本必须完全一致
- plugin不支持windows
- 还有很多细节。。。
参考一下这个:https://www.reddit.com/r/golang/comments/b6h8qq/is_anyone_actually_using_go_plugins/
plugin更适合项目内部使用,你有全部的源码
比如我在学MIT6.824分散式系统这门课的时候,第一个lab是MapReduce,就用了plugin
MapReduce框架会通过plugin载入用户提供的map函数和reduce函数,每次共同依赖的代码一变动就需要重新编译。
参考:https://pdos.csail.mit.edu/6.824/labs/lab-mr.html
发布于 2020-04-15继续浏览内容知乎发现更大的世界打开Chrome继续乌合之众老夫聊发少年狂方法有很多,例举下面几个简单的:
- 指定
go build
参数-buildmode=plugin
,编译为go plugin
,让别人通过插件方式调用 - 写成一个RPC服务程序(闭源),然后包装一个客户端(开源)。
- 指定
go build
参数为-buildmode=archive
,编译为静态库。
参考:
用 Go Plugin 构建模块化系统
Go生成go动态库或静态库_移动开发_github_33719169的博客-CSDN博客
请问 .a 是什么文件?如何使用 .a文件?
方法有很多,例举下面几个简单的:
- 指定
go build
参数-buildmode=plugin
,编译为go plugin
,让别人通过插件方式调用 - 写成一个RPC服务程序(闭源),然后包装一个客户端(开源)。
- 指定
go build
参数为-buildmode=archive
,编译为静态库。
参考:
用 Go Plugin 构建模块化系统
Go生成go动态库或静态库_移动开发_github_33719169的博客-CSDN博客
请问 .a 是什么文件?如何使用 .a文件?
可以用C++实现, 然后导出C API给golang用
不用golang
编译成so plugin
只开源sdk不就行了么
谢邀。 搞成一个dll
dll 一个公司的 可以rest api
Internal目录应该是你需要的。
编译成静态库吧。最好还是开源
做成API服务。开源挺好,大家一起进步嘛
推荐阅读: