• debian12下执行 go build test.go 使得目标机器debian11不依赖特定的GLCIBC版本 --chatGPT


    gpt:

    要确保在 Debian 12 上构建的 Go 可执行文件在 Debian 11 上不依赖于特定的 GLIBC 版本,可以使用 Go 的交叉编译和静态链接功能。这将确保生成的可执行文件包含所需的所有库,而不依赖于目标机器上的 GLIBC 版本。

    以下是在 Debian 12 上执行此操作的一般步骤:

    1. **安装所需的交叉编译工具**:

       在 Debian 12 上,你需要安装适用于 Debian 11 的交叉编译工具。你可以使用以下命令安装 `gcc` 和 `libc6-dev`,以便进行交叉编译:

       ```bash
       sudo apt-get update
       sudo apt-get install -y gcc-multilib libc6-dev-i386
       ```

    2. **设置交叉编译环境变量**:

       在构建之前,设置 `GOARCH` 和 `GOOS` 环境变量,以指定目标操作系统和体系结构。例如,如果目标是 Debian 11 的 amd64 架构,可以运行以下命令:

       ```bash
       export GOARCH=amd64
       export GOOS=linux
       ```

    3. **进行交叉编译和静态链接**:

       使用 `go build` 命令进行交叉编译和静态链接。确保在命令中添加 `-ldflags "-linkmode external -extldflags -static"` 来进行静态链接。例如:

       ```bash
       go build -o myprogram-linux-amd64 -ldflags "-linkmode external -extldflags -static" test.go
       ```

       这将生成一个名为 `myprogram-linux-amd64` 的可执行文件,它是静态链接的,不依赖于目标机器的 GLIBC 版本。

    4. **将生成的可执行文件复制到目标机器**:

       最后,将生成的可执行文件复制到 Debian 11 的目标机器上,并在目标机器上运行它。

    请注意,静态链接可能会导致可执行文件的大小较大,因为它包含了所需的所有库。此外,确保你的代码不依赖于与 Debian 11 不兼容的其他系统库。

  • 相关阅读:
    OpenCV杂记(2):图像拼接(hconcat, vconcat)
    浅谈电力物联网时代物联网技术在电力系统中的应用
    【云原生之K8s】Kubeadm搭建K8s
    多线程学习笔记-2.final关键字和不变性
    【Pytorch】pytorch中保存模型的三种方式
    ExpressLRS开源代码之框架结构
    Java手写循环队列算法和循环队列算法应用拓展案例
    std::async 源码解析
    时序数据库Kdb
    c++以十六进制直接给char *赋值
  • 原文地址:https://blog.csdn.net/glc22/article/details/133083362