【问题标题】:Error: No rule to make target `pnacl/Release/nacl_io.stamp', needed by `pnacl/Release/udpclient_unstripped.bc错误:没有规则来制作目标“pnacl/Release/nacl_io.stamp”,这是“pnacl/Release/udpclient_unstripped.bc”所需的
【发布时间】:2014-09-23 14:25:32
【问题描述】:

我正在尝试使用 nacl_io 库访问与套接字相关的 API。为了进行测试,我编写了一个示例 UDPClient.cpp 并将其添加到“getting_started/part2”教程并相应地修改了 Makefile。我还添加了一个 manifest.json 文件,它基于“examples/demo/nacl_io”项目的清单文件。

我的 Makefile 如下所示:

VALID_TOOLCHAINS := pnacl

NACL_SDK_ROOT ?= $(abspath $(CURDIR)/../..)

include $(NACL_SDK_ROOT)/tools/common.mk

CHROME_ARGS += --allow-nacl-socket-api=localhost

TARGET = udpclient
DEPS = nacl_io
LIBS = nacl_io ppapi_cpp ppapi pthread

CFLAGS = -Wall
SOURCES = hello_tutorial.cc \
            UDPClient.cpp

# Build rules generated by macros from common.mk:

$(foreach src,$(SOURCES),$(eval $(call COMPILE_RULE,$(src),$(CFLAGS))))

ifeq ($(CONFIG),Release)
$(eval $(call LINK_RULE,$(TARGET)_unstripped,$(SOURCES),$(LIBS),$(DEPS)))
$(eval $(call STRIP_RULE,$(TARGET),$(TARGET)_unstripped))
else
$(eval $(call LINK_RULE,$(TARGET),$(SOURCES),$(LIBS),$(DEPS)))
endif

$(eval $(call NMF_RULE,$(TARGET),))

这是我的 manifest.json(我已经删除了“keys”和“oauth2”条目,不确定是否需要):

{
  "name": "UDPClient",
  "version": "1.0",
  "minimum_chrome_version": "35.0.1916.114",
  "manifest_version": 2,
  "description": "UDP client test",
  "offline_enabled": false,
  "icons": {
    "128": "icon128.png"
  },
  "permissions": [
    {
        "socket": [
            "resolve-host"
        ]
    }
]
}

当我在这个项目上运行 make 时,这是我得到的错误:

  CXX  pnacl/Release/hello_tutorial.o
  CXX  pnacl/Release/UDPClient.o
make: *** No rule to make target `pnacl/Release/nacl_io.stamp', needed by `pnacl/Release/udpclient_unstripped.bc'.  Stop.

这个错误背后的原因是什么?

一些附加信息:UDPClient.cpp 中的函数实际上还没有被调用,因此我没有使用 nacl_io_init 初始化 nacl_io。我只是希望它首先成功编译。 UDPClient 基于此:http://www.cs.put.poznan.pl/csobaniec/examples/sockets/

【问题讨论】:

    标签: google-nativeclient


    【解决方案1】:

    我知道出了什么问题。我的 Makefile 中缺少这一行:

    $(foreach dep,$(DEPS),$(eval $(call DEPEND_RULE,$(dep))))
    

    在“# Build rules generated...”下面添加了它

    编辑:您也可以完全删除“DEPS”行,因为只有在您对 nacl_io 本身进行更改时才需要这样做。感谢@binji 指出这一点。

    【讨论】:

    • 您也可以从 DEPS 行中删除 nacl_io。这仅在对 nacl_io 进行更改时才有用。如果您正常使用该库,则可以将其关闭。
    • 是的,我后来意识到了这一点。谢谢。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多