2014-09-23 7 views
0

Я пытаюсь получить доступ к API-интерфейсам, связанным с сокетами, используя библиотеку nacl_io. Чтобы проверить это, я написал образец UDPClient.cpp и добавил его в учебник «get_started/part2» и соответствующим образом изменил Makefile. Я также добавил файл manifest.json, который я основал на манифесте файла проекта "examples/demo/nacl_io".Ошибка: нет правила для создания цели `pnacl/Release/nacl_io.stamp ', необходимой` pnacl/Release/udpclient_unstripped.bc

Мой 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 (Я удалил «ключи» и «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" 
     ] 
    } 
] 
} 

Когда я бегу сделать на этом проекте, это ошибка, я получаю:

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 с помощью nacl_io_init. Я просто хочу, чтобы он успешно скомпилировался первым. UDPClient основан на этом: http://www.cs.put.poznan.pl/csobaniec/examples/sockets/

ответ

0

Я понял, что случилось. Эта линия была отсутствует из моего Makefile:

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

Добавлен его ниже «правила # Строительные генерироваться ...»

Edit: Вы также можете удалить строку «DEPS» полностью, так как это необходимо, только если внесение изменений в nacl_io. Спасибо @binji за указание на это.

+0

Вы также можете удалить nacl_io из линии DEPS. Это действительно полезно при внесении изменений в nacl_io. Если вы обычно используете библиотеку, вы можете ее отключить. – binji

+0

Да, я понял, что позже. Благодарю. :) –

Смежные вопросы