фатальная ошибка: открытие файла зависимостей

Я пытаюсь использовать библиотеку ECC на contiki os.
Но я получил ошибку из-за зависимости. Я думаю, что проблема в моем Makefile, но я не уверен, что не так.

Я скачал из источника https://github.com/nist-emntg/ecc-light-certificate, но у меня возникли проблемы с использованием git submodule update после git клонирования из исходного кода, поэтому я вручную загружаю и вставляю файл contiki в папку contiki.
Может ли быть проблема в этом?

Сообщение об ошибке

> make TARGET=cooja clean 
rm -f *~ *core core *.srec \
    *.lst *.map \
    *.cprg *.bin *.data contiki*.a *.firmware core-labels.S *.ihex *.ini \
    *.ce *.co
rm -rf 
rm -rf obj_cooja

> make sender-node.cooja TARGET=cooja 
  CC        sender-node.c
sender-node.c: In function 'process_thread_sender_node_process':
sender-node.c:104:11: warning: unused variable 'pubKey' [-Wunused-variable]
mkdir obj_cooja
  CC        ../../../platform/cooja/./contiki-cooja-main.c
../../../platform/cooja/./contiki-cooja-main.c: In function 'contiki_init':
../../../platform/cooja/./contiki-cooja-main.c:230:14: warning: variable 'shortaddr' set but not used [-Wunused-but-set-variable]
../../../platform/cooja/./contiki-cooja-main.c:288:5: warning: passing argument 1 of 'rimeaddr_copy' from incompatible pointer type [enabled by default]
../../../core/./net/rime/rimeaddr.h:79:6: note: expected 'union rimeaddr_t *' but argument is of type 'uint8_t *'
mv contiki-cooja-main.o obj_cooja/mtype371.o
  CC        ../../../../ecc/ecc.c
../../../../ecc/ecc.c:700:1: fatal error: opening dependency file obj_cooja/../../../../ecc/ecc.d: No such file or directory
compilation terminated.
make: *** [obj_cooja/../../../../ecc/ecc.o] Error 1
Process returned error code 2

Это мой make-файл

all: sender-node receiver-node root-node
extra: example tools tests
CONTIKI=../../..

WITH_UIP6=1
UIP_CONF_IPV6=1

include $(CONTIKI)/../Makefile.curve
CURVE_DIR=$(CONTIKI)/../ecc/curve-params
CFLAGS+= -DUIP_CONF_IPV6_RPL\
         -DSHA2_USE_INTTYPES_H \
         -DWITH_SHA256 \
         -D$(DOMAIN_PARAMS) \
         -DTHIRTYTWO_BIT_PROCESSOR \
         -DDOMAIN_PARAMS=$(DOMAIN_PARAMS)

CFLAGS+=-DPROJECT_CONF_H=\"project-conf.h\"

PROJECT_SOURCEFILES += $(CONTIKI)/../ecc/ecc.c $(CONTIKI)/../ecc/ecdsa.c $(CONTIKI)/../ecc/nn.c $(CONTIKI)/../sha2/sha2.c $(CONTIKI)/../certificate/certificate.c
PROJECTDIRS += sha2 ecc $(CURVE_DIR) certificate

include $(CONTIKI)/../ecc/curve-params/Makefile.curve_params

# mc1322x is little endian only
ifeq ($(TARGET),econotag)
CFLAGS+= -DWORDS_LITTLEENDIAN
endif

ifdef WITH_COMPOWER
APPS+=powertrace
CFLAGS+= -DCONTIKIMAC_CONF_COMPOWER=1 -DWITH_COMPOWER=1 -DQUEUEBUF_CONF_NUM=4
endif

ifdef SERVER_REPLY
CFLAGS+=-DSERVER_REPLY=$(SERVER_REPLY)
endif
ifdef PERIOD
CFLAGS+=-DPERIOD=$(PERIOD)
endif

include $(CONTIKI)/Makefile.include
example:
    make -C example

tools:
    make -C tools

tests:
    make -C tests

person lol    schedule 05.02.2017    source источник


Ответы (1)


но у меня возникла проблема с использованием обновления подмодуля git после того, как я git clone из исходного кода, поэтому я вручную загружаю и вставляю файл contiki в папку contiki.

Затем вы не можете просто загрузить любой файл contiki, поскольку идея подмодуля состоит в том, чтобы ссылаться на точный SHA1 другого репо.

Попробуйте еще раз клонировать основной репозиторий, на этот раз с --recursive (и обязательно используйте последнюю версию Git 2.11.1)

cd /path/to/ly/local/clone/of/ecc-light-certificate 
cd ..
move ecc-light-certificate ecc-light-certificate.old
git clone --recursive https://github.com/nist-emntg/ecc-light-certificate

Ошибка:

no such remote ref 7a493c44edb6952bf82fc808b9dd91c30d49c871 
Fetched in submodule path 'contiki', but it did not contain 7a493c44edb6952bf82fc808b9dd91c30d49c871.  
Direct fetching of that commit failed

First: https://github.com/tcheneau/contiki/tree/7a493c44edb6952bf82fc808b9dd91c30d49c871 does exist.

Однако, глядя на его страницу фиксации 7a493c4, можно увидеть, что он не принадлежит ни одному ветка или тег: это коммит, который все еще хранится в удаленном репозитории GitHub, но не извлекается по умолчанию (поскольку, опять же, ни ветка, ни тег не включают его)

Вам нужно открыть задачу в проекте nist-emntg/ecc-light-certificate/issues, чтобы предупредить их об этом. несуществующая ссылка фиксации для подмодуля contiki.

Если вы ищете это сообщение фиксации, вы найдете commit 1396dfd из родного fix-native-build ветка:

C:\Users\vonc\prog\git\ecc-light-certificate\contiki>git log --all --grep="prevent the native target"
commit 1396dfd817424eb7d3218cc6c51186f80b032e9f
Author: Tony Cheneau <[email protected]>
Date:   Fri Oct 25 17:53:27 2013 -0400

    Fix a typo (?) that would prevent the native target from building the examples.

Это типичный коммит, выбранный вишневым.

Чтобы решить вашу текущую ситуацию, непосредственно проверьте правильный коммит:

C:\Users\vonc\prog\git\ecc-light-certificate\contiki>git checkout 1396dfd817424eb7d3218cc6c51186f80b032e9f
Checking out files: 100% (3223/3223), done.
Note: checking out '1396dfd817424eb7d3218cc6c51186f80b032e9f'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at 1396dfd81... Fix a typo (?) that would prevent the native target from building the examples.

C:\Users\vonc\prog\git\ecc-light-certificate\contiki>git st
HEAD detached at 1396dfd81
nothing to commit, working tree clean
person VonC    schedule 05.02.2017
comment
привет @VonC относительно этой команды cd /path/to/ly/local/clone/of/ecc-light-certificate cd .. move ecc-light-certificate ecc-light-certificate.old следует использовать после клонирования? - person lol; 05.02.2017
comment
@lol Раньше: идея состоит в том, чтобы просто переместить ваш старый клон, прежде чем снова клонировать тот же репо в той же папке. Это позволит Git не клонировать, потому что имя папки уже было там. - person VonC; 05.02.2017
comment
я пытался использовать git clone --recursive. Но у него та же проблема, когда ему не удалось получить папку contiki. - person lol; 05.02.2017
comment
Ошибка @VnoC: нет такой удаленной ссылки 7a493c44edb6952bf82fc808b9dd91c30d49c871 Получено в пути подмодуля «contiki», но оно не содержит 7a493c44edb6952bf82fc808b9dd91c30d49c871. Прямая выборка этой фиксации не удалась. - person lol; 05.02.2017
comment
@VnoC хорошо, я предупрежу их. Спасибо за помощь - person lol; 05.02.2017
comment
После того, как я устал переклонировать и оформить заказ из этой ветки. Кажется, у меня все та же исходная проблема. Это сообщение ../../../../ecc/ecc.c:700:1: фатальная ошибка: открытие файла зависимостей obj_cooja/../../../../ecc/ecc. d: Нет такого файла или каталога - person lol; 05.02.2017
comment
@lol, это другое, и где ваша проблема поможет сертификату ecc-light: они ссылаются на старый коммит contiki 2013 года, который явно больше не подходит для их текущей основной ветки. - person VonC; 05.02.2017
comment
я сожалею об этом, но я не понимаю. Поскольку я новичок в contiki. Теперь мне пришлось ждать, пока они решат эту проблему, или мне нужно было найти способ обойти это? - person lol; 05.02.2017
comment
@lol Нет, вы также можете попробовать проверить разные коммиты, чтобы увидеть, может ли работать более поздняя contiki. Но в противном случае, да, вам нужно будет сообщить проекту ecc-light-certificate, что коммит contiki, на который они все еще ссылаются, не работает должным образом. - person VonC; 05.02.2017