一个交叉编译GO的小脚本

所谓交叉编译

所谓交叉编译,就是在一个平台上去编译出其他操作系统和CPU架构的二进制文件供其他环境使用。比如linux下写出的玩意想编译完能在win上用,这就是交叉编译。

最近在看GO的基础,突然想把在linux上用GO写出来的玩意,弄到win上用,于是有了这么个小脚本,虽然没啥大用(╯‵□′)╯︵┻━┻

垃圾脚本

#!/usr/bin/bash
selectOS(){
    echo "Please select the target OS"  
    echo "1. windows, 2. linux, 3. freebsd, 4. darwin"
    read -p "Target OS > " os
    case $os in
        1) echo "selected windows"
        target_os=windows
        ;;
        2) echo "selected linux"
        target_os=linux
        ;;
        3) echo "selected freebsd"
        target_os=freebsd
        ;;
         4) echo "selected darwin"
        target_os=darwin
        ;;
        *) echo "A wrong input !!!"
        exit
        ;;
    esac
}

selectArch(){
    echo "Please select the target CPU architecture"  
    echo "1. amd64, 2. arm, 3. 386"
    read -p "Target CPU ARCH > " arch
    case $arch in
        1) echo "selected amd64"
        target_arch=amd64
        ;;
        2) echo "selected arm"
        target_arch=arm
        ;;
        3) echo "selected 386"
        target_arch=386
        ;;
        *) echo "A wrong input !!!"
        exit
        ;;
    esac
}

inputOutputname(){
    echo "Please input the output name "
    read -p "Outputname > " outputname
}

startBuild(){
    enable=0
    CGO_ENABLED=$enable GOOS=$target_os GOARCH=$target_arch go build -o $outputname $1
}

run(){
    selectOS
    selectArch
    inputOutputname
    startBuild
}
run

效果如下:
效果

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
编译JNI的Pipeline脚本通常包括以下步骤: 1. 检查JNI代码的源文件是否存在,如果不存在则退出。 2. 创建一个目录来存放JNI代码的编译结果,例如build目录。 3. 检查是否已经安装了Java Development Kit(JDK),如果没有安装则退出。 4. 设置JDK的路径和其他必要的环境变量。 5. 编译JNI代码,生成对应的动态链接库(.so或.dll文件),并将其保存到build目录中。 6. 如果编译成功,则将动态链接库拷贝到需要使用JNI的应用程序的目录中。 以下是一个可能的编译JNI的Pipeline脚本示例: ``` #!/bin/bash # 检查JNI代码的源文件是否存在 if [ ! -f MyNativeCode.c ]; then echo "Error: MyNativeCode.c file not found" exit 1 fi # 创建一个目录来存放JNI代码的编译结果 mkdir -p build # 检查是否已经安装了Java Development Kit(JDK) if [ ! -d /path/to/jdk ]; then echo "Error: JDK not found" exit 1 fi # 设置JDK的路径和其他必要的环境变量 export JAVA_HOME=/path/to/jdk export PATH=$PATH:$JAVA_HOME/bin # 编译JNI代码,生成对应的动态链接库(.so或.dll文件),并将其保存到build目录中 gcc -I"$JAVA_HOME/include" -I"$JAVA_HOME/include/linux" -shared -o build/libMyNativeCode.so MyNativeCode.c # 检查编译是否成功 if [ $? -ne 0 ]; then echo "Error: Compilation failed" exit 1 fi # 将动态链接库拷贝到需要使用JNI的应用程序的目录中 cp build/libMyNativeCode.so /path/to/application ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

basi-a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值