我正在尝试使用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/
答案 0 :(得分:0)
我弄清楚出了什么问题。我的Makefile中缺少这一行:
$(foreach dep,$(DEPS),$(eval $(call DEPEND_RULE,$(dep))))
在下面添加了#34;#生成规则..."
编辑:你也可以删除" DEPS"完全排队,因为只有在您对nacl_io本身进行更改时才有必要。谢谢@binji指出了这一点。