gpt4 book ai didi

docker - 在Travis-CI中无法通过docker编译cpp:/usr/bin/ld:无法打开输出文件a.out:权限被拒绝

转载 作者:行者123 更新时间:2023-12-02 18:32:54 26 4
gpt4 key购买 nike

我正在使用一个非常简单的.travis.yml通过Travis-CI中的docker编译cpp程序。 (我的动机是尝试在Travis CI中运行docker。)

sudo: required

services:
- docker

before_install:
- docker pull glot/clang

script:
- sudo docker run --rm -v "$(pwd)":/app -w /app glot/clang g++ main.cpp

但是 build is failing出现以下错误: /usr/bin/ld: cannot open output file a.out: Permission denied。这与我是否使用 sudo无关。有人可以帮助我找出根本原因并帮助解决此问题吗?谢谢。

最佳答案

我建议您显式设置安装路径,而不要使用$(pwd)进行设置。然后,您需要从容器内部检查权限。尝试这样的事情:

sudo docker run --rm -v "$(pwd)":/app -w /app glot/clang stat /app

这将显示文件夹权限。可能没有人能够写入此文件夹。

另外,您应该避免使用 root权限来构建软件,因为它不安全。创建非特权用户并在运行编译器时使用它们。

UPD:
我无法使用 docker 1.6.0重现此问题,可能是Travis-CI虚拟机保留的某些文件系统设置引起的。这是我在本地主机上拥有的:
➜  /tmp  mkdir /tmp/code
➜ /tmp echo "int main(){}" > /tmp/code/main.cpp
➜ /tmp echo "g++ main.cpp && ls -l" > /tmp/code/build.sh
➜ /tmp docker run --rm -v /tmp/code:/app -w /app glot/clang bash /app/build.sh
total 20
-rwxr-xr-x 1 glot glot 8462 Dec 30 10:19 a.out
-rwxrwxr-x 1 glot glot 22 Dec 30 10:17 build.sh
-rw-rw-r-- 1 glot glot 13 Dec 30 10:10 main.cpp

如您所见,生成的二进制文件出现在 /app文件夹中

关于docker - 在Travis-CI中无法通过docker编译cpp:/usr/bin/ld:无法打开输出文件a.out:权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34503744/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com