错误:没有规则使`pnacl / Release / udpclient_unstripped.bc需要目标`pnacl / Release / nacl_io.stamp'

时间:2014-09-23 14:25:33

标签: google-nativeclient

我正在尝试使用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/

1 个答案:

答案 0 :(得分:0)

我弄清楚出了什么问题。我的Makefile中缺少这一行:

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

在下面添加了#34;#生成规则..."

编辑:你也可以删除" DEPS"完全排队,因为只有在您对nacl_io本身进行更改时才有必要。谢谢@binji指出了这一点。