【问题标题】:make command not working in Windows WSL Ubuntumake 命令在 Windows WSL Ubuntu 中不起作用
【发布时间】:2020-09-14 14:13:10
【问题描述】:

我正在尝试在 Ubuntu 中的 WSL 实例中构建一个项目。我使用的命令来自一个 chirpstack-simulator 项目:docker-compose run --rm chirpstack-simulator make clean build。 由于某种原因,make 拒绝正常工作,或者根本拒绝工作。

我不断收到错误消息:“make: *** No rule to make target 'clean'. Stop.”

这是 Makefile 代码:

VERSION := $(shell git describe --always |sed -e "s/^v//")

build:
    @echo "Compiling source"
    @mkdir -p build
    go build $(GO_EXTRA_BUILD_ARGS) -ldflags "-s -w -X main.version=$(VERSION)" -o build/chirpstack-simulator cmd/chirpstack-simulator/main.go

clean:
    @echo "Cleaning up workspace"
    @rm -rf build
    @rm -rf dist
    @rm -rf docs/public

docker-compose.yml 代码:

services:
  chirpstack-simulator:
    build:
      context: .
      dockerfile: Dockerfile-devel
    command: make
    volumes:
      - ./:/chirpstack-simulator

还有 Docker-devel 文件:

FROM golang:1.13-alpine

ENV PROJECT_PATH=/chirpstack-simulator
ENV PATH=$PATH:$PROJECT_PATH/build
ENV CGO_ENABLED=0
ENV GO_EXTRA_BUILD_ARGS="-a -installsuffix TDM-GCC-64"

RUN apk add --no-cache ca-certificates tzdata make git bash

RUN mkdir -p $PROJECT_PATH
COPY . $PROJECT_PATH
WORKDIR $PROJECT_PATH

如您所见,构建和清理都已定义。有没有人遇到过这个问题?

编辑: 这是我正在尝试构建的完整项目 https://github.com/brocaar/chirpstack-simulator

还有更多细节: 我试过做 sudo apt-get remove make sudo apt-get install make 然后 sudo apt-get install --reinstall build-essentials 它仍然给出错误。

Ubuntu 的版本是 16.04 LTS,如果它有助于缩小范围

【问题讨论】:

  • 你的 makefile 是不是叫Makefile(或makefile)(不是Makefile.mak 之类的东西)?当您运行 make 时,您的工作目录是包含 makefile 的目录吗?也许添加一个ls 和/或pwd 作为运行命令,以查看目录的内容以及您所在的目录。
  • @MadScientist 嗨,makefile 名为“Makefile”。我将如何添加这些命令?作为一个整体,我对 Linux/Ubuntu 和 Docker 还是很陌生。我尝试将它们添加到 docker-compose.yml 的 'command': 部分,例如“command: ls pwd make”,但它们被忽略了。我还尝试将它们添加到原始命令中以运行构建“ls | pwd | docker-compose run --rm chirpstack-simulator make clean build”
  • 我不太了解 yaml 格式的工作原理;你得问一个码头工人。可能您需要调整问题标签以包含 docker。但是,你绝对不能使用像ls pwd make 这样的东西。您至少需要在它们之间放置分号:ls; pwd; make(不是管道符号)。或者这可能行不通,你应该用ls替换make,看看你得到了什么输出,然后当你弄清楚时放回make
  • docker-compose run 不接受参数。你在换行吗make clean build?另外,我不确定我为什么真的需要 Compose
  • 老实说,我只是按照自述文件中的命令进行操作。我对 Go/Docker 的第一次体验是在两天前,这不是我通常的工作类型,所以很抱歉,但我没有足够的知识知道什么可以替代这里的任何给定命令。

标签: docker ubuntu makefile docker-compose windows-subsystem-for-linux


【解决方案1】:

我至少会用ls -larth 替换make 命令,只是为了确保docker-compose run ls -alrth 确实在其执行上下文中显示Makefile

如果没有,那么任何make 命令都会失败并显示您提到的错误消息。

【讨论】:

  • 感谢您的帮助。不幸的是,当我尝试此操作时,我收到一条错误消息,指出“错误:没有此类服务:ls”。这让我认为这是 WSL 的一个普遍问题,或者我想更有可能的是,我可能无意中没有下载一些基本的东西
  • @JMurphySmith 奇怪。和serverfault.com/a/1007812/783类似吗?
  • 好像不是这样。我从来没有用 snap 安装过 docker。我使用的命令是 sudo apt-get install docker-compose 从第一次设置开始并从那里继续解决问题中提到的问题
猜你喜欢
  • 1970-01-01
  • 2021-07-20
  • 1970-01-01
  • 1970-01-01
  • 2016-02-21
  • 2014-08-03
  • 2019-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多