2015-10-13 1 views
-1

я запускаю команду «грим тест» в этом исходном коде:НКУ: ошибка: неопознанный параметр командной строки «-Wl» в Makfile

https://github.com/sanandrea/CSecretKey

но это даст мне эту ошибку :

gcc: error: unrecognized command line option '-Wl' 
Makefile:18: recipe for target 'lib_plain' failed 
make: *** [lib_plain] Error 1 

Это линия 18 в Makefile GCC -shared -Wl -o libhmacenc.so hmac_256_plain.o sha2.o -lc

Это список файлов:

  • Android.mk
  • hmac_sha256.c
  • hmac_sha256.h
  • reverse_test.py
  • sha2.c
  • sha2.h
  • test.c

Это полный «Makefile»:

all: lib test 
test: clean lib_plain 
    gcc -o test test.c -lhmacenc -L. 

production: clean lib 
    gcc -o test test.c -lhmacenc -L. 

hmac_256.o: hmac_sha256.c hmac_sha256.h 
    $(CC) -Wall -c hmac_sha256.c -o hmac_256.o 

hmac_256_plain.o: hmac_sha256.c hmac_sha256.h 
    $(CC) -Wall -DSHOW_PASS -c hmac_sha256.c -o hmac_256_plain.o 

lib: hmac_256.o sha2.o 
    gcc -shared -Wl -o libhmacenc.so hmac_256.o sha2.o -lc 

lib_plain: hmac_256_plain.o sha2.o 
    gcc -shared -Wl -o libhmacenc.so hmac_256_plain.o sha2.o -lc 

sha2.o: sha2.c sha2.h 
    $(CC) -c sha2.c -o sha2.o 

clean: 
    - rm -rf *.o hmac *.so 

Кто бы знает, как я могу исправить эту ошибку?

Спасибо!

+3

Похоже, что '-Wl' должен был быть' -Wall', или они пытались передать вариант компоновщику и забыть, что это за -Wl. См. Https://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html – missimer

+1

Да, это просто сломанный make-файл. И (я вообще не смотрел код), но я бы очень подумал ** об использовании «случайного» криптографического кода. –

+0

@EtanReisner Что вы подразумеваете под «очень осторожно»? Спасибо за ответ – josemwarrior

ответ

0

Существует еще одна ветвь кода, которая имеет дело с Cygwin и имеет другой Makefile.

https://github.com/sanandrea/CSecretKey/tree/cygwin

Всегда старайтесь использовать среду GNU-Linux для компиляции программ в чистом C. Избегайте Cygwin, потому что их поведение отличается в Makefile.

2

Как было предложено @missimer, в вашем файле make-файла есть опция поля, которая не указана в параметре '-Wl'.

Как правило, для создания разделяемой библиотеки, следующий синтаксис используется с '-Wl':

gcc -shared -Wl,-export-dynamic 

Надеется, что это помогает.

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