就是想把项目里部分核心代码封装起来,不能直接查看源码,然后把项目源码交付给别人,别人可以类似引用 java jar 包方式本地编译开发和打包。 并不需要很高级别的代码保护,只是想不能直接简单查看部分源码
![]() |
1
nekoneko 13 天前
不能, 没有.
java 也没有方法不让看源码. |
![]() |
3
darkway 13 天前
可以把 go 文件打包成 zip ,然后后缀改成 jar
|
4
touchwithe 13 天前 via iPhone
编译成.lib 动态链接库
|
![]() |
5
danbai PRO 编译成 lib 库或者 wasm
|
![]() |
6
doraemonki 13 天前
理论上可以提供混淆后的源码,像这个库一样 https://github.com/unidoc/unipdf
|
![]() |
7
kk2syc 13 天前
jar 在 go 里面对应的是 package (.a 后缀) 静态链接
``` // print.go package staticpkg import "fmt" func Hello() { fmt.Println("hello") } //main.go package main import ( "staticpkg" ) func main() { staticpkg.Hello() } ``` 使用 tool 的 compile 命令编译 go tool compile -o print.a print.go 使用 tool 的 link 命令生成可执行文件 go tool link -o main.exe -L [print.a_dir] main.go 会生成一个 main.exe 程序,直接运行会输出 hello 如果直接 go run main.go 此时没有任何输出 |
![]() |
8
seers 12 天前 via iPhone
dll 或者 so 呗,动态链接库,还能混淆下
|
![]() |
9
ChunkitAu 12 天前
https://github.com/burrowers/garble
目前项目在使用该工具混淆代码。 |
![]() |
10
LitterGopher 12 天前
1. 以動態庫的方式提供調用(.dll .a .so .dylib)
2. 以 RPC 的方式提供調用(本地服務或遠程服務皆可) 3. 代碼混淆 |
![]() |
11
gongym 12 天前
你可以试试搜索 go plugin 模式,可以导出库然后动态引入调用
|
12
azraeljack 12 天前
go plugin 就行了,核心模块封装成 plugin 然后加载调用就行了。不过环境坑会有点多,比如 glibc 版本不一致可能会导致跑不起来之类的。建议弄到容器里跑。
|
13
visper 10 天前
jar 包不是直接 jd 反编译看源码么?
|
14
bli22ard 10 天前
java 为什么可以打 jar 包供其他程序调用,因为 Java 跨平台,你只要一个 jar 包,就能在其他所有平台使用。但是 go 不一样,编译产物是和平台完全对应的,所以,你不能为所有平台提供同一个 go 的编译产物,而要为所有平台都提供编译产物,然后就是链接阶段的动态链接还是静态链接了。
|
15
zhengfan2016 10 天前 via Android
@doraemonki 居然还有这种,这种要是国人写的 v2 和 issue 早被喷烂了吧
|
![]() |
16
AkinoKaedeChan 10 天前
如果考虑跨平台就 WASM
|