我正在尝试通过AWS Lambda编译Swift代码。因此,我使用Ubuntu 18.04映像作为基础。Swift版本是5.0.1。
当映像在本地执行时,它工作正常。当我尝试在AWS Lambda中执行它时,我得到以下错误:
/usr/bin/ld.gold:致命错误:/tmp/project/src/a.out:不允许操作\nclang-7:错误:链接器命令失败,退出代码为1(使用-v查看调用)
我认为这个问题是由只读的aws lambda容器引起的,它只允许写入/tmp/文件夹。你知道如何修复这个错误吗?似乎swift需要文件夹的权限,它没有权限?
Dockerfile
FROM ubuntu:18.04
# install clang
RUN apt-get update
RUN apt-get install -y clang
# install wget
RUN apt-get install -y wget
# install swift dependencies
RUN apt-get install -y libcurl3 libpython2.7 libpython2.7-dev
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get install -y --no-install-recommends \
binutils \
git \
libc6-dev \
libcurl4 \
libedit2 \
libgcc-5-dev \
libpython2.7 \
libsqlite3-0 \
libstdc++-5-dev \
libxml2 \
pkg-config \
tzdata \
zlib1g-dev \
libbsd-dev
RUN apt-get install -y libicu-dev
# install swift 5.0.1
RUN wget https://swift.org/builds/swift-5.0.1-release/ubuntu1804/swift-5.0.1-RELEASE/swift-5.0.1-RELEASE-ubuntu18.04.tar.gz RUN tar xzf swift-5.0.1-RELEASE-ubuntu18.04.tar.gz RUN mv swift-5.0.1-RELEASE-ubuntu18.04 /usr/lib/swift RUN echo "export PATH=/usr/lib/swift/usr/bin:$PATH" >> ~/.bashrc
RUN . ~/.bashrc
RUN chmod -R o+r /usr/lib/swift
这是在AWS-Lambda处理函数中执行的命令:
swiftc hello_world.swift -o a.out
hello_world.swift
print("Hello World!")
1条答案
按热度按时间k10s72fa1#
您的输出必须设置在tmp文件夹中