登录
首页 >  Golang >  Go问答

如何正确复制二进制文件

来源:stackoverflow

时间:2024-04-11 09:12:32 435浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《如何正确复制二进制文件》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

我使用以下代码以编程方式构建二进制文件 二进制文件构建成功,但现在我想通过代码将其复制到 go/bin 路径,并且我能够做到这一点,但是它复制文件但不能作为可执行文件

可能出了什么问题? 源文件是可执行的

bpath := filepath.fromslash("./integration/testdata/" + filename)
cmd := exec.command("go", "build", "-o", bpath, ".")
cmd.dir = filepath.fromslash("../")
err := cmd.run()
if err != nil {
    fmt.println("binary creation failed: ", err)
}

fmt.println(os.getenv("gopath"))
dir, _ := os.getwd()
srcpath := filepath.join(dir, "testdata", , filename)
targetpath := filepath.join(os.getenv("gopath"),"/bin/",filename)
copy(srcpath, targetpath)

副本是:

func copy(src string, dst string) error {
    // Read all content of src to data
    data, err := ioutil.ReadFile(src)
    if err != nil {
        return err
    }
    // Write data to dst
    err = ioutil.WriteFile(dst, data, 0644)
    if err != nil {
        return err
    }

    return nil
}

解决方案


问题出在您提供的权限位掩码上:0644。它不包括可执行权限,这是每个组中的最低位。

因此,请改用 0755,结果文件将可供所有人执行:

err = ioutil.writefile(dst, data, 0755)

查看 Wikipedia Chmod 了解位掩码的含义。

相关位掩码表:

#    Permission               rwx    Binary
-------------------------------------------
7    read, write and execute  rwx    111
6    read and write           rw-    110
5    read and execute         r-x    101
4    read only                r--    100
3    write and execute        -wx    011
2    write only               -w-    010
1    execute only             --x    001
0    none                     ---    000

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>