go 有什么好的类似 Java jar 包方案 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
momowei
V2EX    Go 编程语言

go 有什么好的类似 Java jar 包方案

  •  
  •   momowei 49 天前 3225 次点击
    这是一个创建于 49 天前的主题,其中的信息可能已经有所发展或是发生改变。

    就是想把项目里部分核心代码封装起来,不能直接查看源码,然后把项目源码交付给别人,别人可以类似引用 java jar 包方式本地编译开发和打包。 并不需要很高级别的代码保护,只是想不能直接简单查看部分源码

    16 条回复    2025-08-25 19:10:02 +08:00
    nekoneko
        1
    nekoneko  
       49 天前
    不能, 没有.
    java 也没有方法不让看源码.
    momowei
        2
    momowei  
    OP
       49 天前
    @nekoneko jar 没办法直接用记事本看源码把,只是很容易反编译很好还原而已
    darkway
        3
    darkway  
       49 天前
    可以把 go 文件打包成 zip ,然后后缀改成 jar
    touchwithe
        4
    touchwithe  
       49 天前 via iPhone
    编译成.lib 动态链接库
    danbai
        5
    danbai  
    PRO
       49 天前
    编译成 lib 库或者 wasm
    doraemonki
        6
    doraemonki  
       49 天前
    理论上可以提供混淆后的源码,像这个库一样 https://github.com/unidoc/unipdf
    v1
        7
    v1  
    &nbp;  48 天前
    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 此时没有任何输出
    seers
        8
    seers  
       48 天前 via iPhone
    dll 或者 so 呗,动态链接库,还能混淆下
    ChunkitAu
        9
    ChunkitAu  
       48 天前
    https://github.com/burrowers/garble
    目前项目在使用该工具混淆代码。
    LitterGopher
        10
    LitterGopher  
       48 天前
    1. 以的方式提供用(.dll .a .so .dylib)
    2. 以 RPC 的方式提供用(本地服或程服皆可)
    3. 代混淆
    gongym
        11
    gongym  
       48 天前
    你可以试试搜索 go plugin 模式,可以导出库然后动态引入调用
    azraeljack
        12
    azraeljack  
       48 天前
    go plugin 就行了,核心模块封装成 plugin 然后加载调用就行了。不过环境坑会有点多,比如 glibc 版本不一致可能会导致跑不起来之类的。建议弄到容器里跑。
    visper
        13
    visper  
       46 天前
    jar 包不是直接 jd 反编译看源码么?
    bli22ard
        14
    bli22ard  
       46 天前
    java 为什么可以打 jar 包供其他程序调用,因为 Java 跨平台,你只要一个 jar 包,就能在其他所有平台使用。但是 go 不一样,编译产物是和平台完全对应的,所以,你不能为所有平台提供同一个 go 的编译产物,而要为所有平台都提供编译产物,然后就是链接阶段的动态链接还静态链接了。
    zhengfan2016
        15
    zhengfan2016  
       46 天前 via Android
    @doraemonki 居然还有这种,这种要是国人写的 v2 和 issue 早被喷烂了吧
    AkinoKaedeChan
        16
    AkinoKaedeChan  
       46 天前
    如果考虑跨平台就 WASM
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2889 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 43ms UTC 13:44 PVG 21:44 LAX 06:44 JFK 09:44
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86