|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.06.2010, 16:23 | #1 |
Регистрация: 05.06.2010
Сообщений: 3
|
Не компилируются тесты NIST
Уважаемые участники форума, постараюсь подробно изложить свою проблему. Для людей, разбирающихся в теме помощь составит 5 минут, а я буду очень благодарен.
Я занимаюсь разработкой поточного шифра и для тестирования вырабатываемых им псевдослучайных последовательностей, мне необходимо использовать тесты, разработанные Национальным институтом стандартов и технологий (NIST). Тесты написаны на языке ANSI C. В архиве лежат 6 папок data/, experiments/, include/, obj/, src/ , templates/. и один файл makefile. Этот файл представлен ниже. Необходимо его выполнить, тогда исполняемый файл assess должен появиться в дирректории. В подробном описании программы (в секции 5) говориться о необходимости исправить 1-ю и 3-ю строчку файла, указав там свой компилятор и корневую папку соответственно. У меня установлен windows Seven. Я скачал компилятор gcc для windows и постарался сделать все как указано в инструкции: Сохранил папку STS c разархивированными файлами в корень диска C: Папку с компилятором поместил в STS. Однако не уверен, что верно прописывал путь (пытался разными способами) Переименовал файл в makefile.exe и постарался его запустить Появилось сообщение о следующей ошибке: he NTVDM CPU has encountered an illegal instruction CS:058c IP:017b OP:63 6c 75 64 65 Choose 'Close' to terminate the application Пытался изменять путь пребирая различные варианты (указывал путь начиная с $(ROOTDIR), с C:\ , менял / на \) - ничего не помогло. Потом установил себе виртуальную машину и поставил на нее Ubuntu. Так же пытался запустить этот файл через терминал, после каждой строчки отображалась ошибка. Посоветуйте пожалуйста, какой лучше использовать компилятор, в какой OS лучше компилировать, и как тогда изменить файл "makefile" У меня также установлена Visual Studio 2008. Возможно ли как то скомпилировать через нее? Буду очень благодарен за помощь файл "makefile" (конец пришлось обрезать из-за того что сообщение оказалось больше 5000 знаков) : CC = /usr/bin/gcc GCCFLAGS = -c -Wall ROOTDIR = . SRCDIR = $(ROOTDIR)/src OBJDIR = $(ROOTDIR)/obj VPATH = src:obj:include OBJ = $(OBJDIR)/assess.o $(OBJDIR)/frequency.o $(OBJDIR)/blockFrequency.o \ $(OBJDIR)/cusum.o $(OBJDIR)/runs.o $(OBJDIR)/longestRunOfOnes.o \ $(OBJDIR)/serial.o $(OBJDIR)/rank.o $(OBJDIR)/discreteFourierTransform.o \ $(OBJDIR)/nonOverlappingTemplateMatchings.o \ $(OBJDIR)/overlappingTemplateMatchings.o $(OBJDIR)/universal.o \ $(OBJDIR)/approximateEntropy.o $(OBJDIR)/randomExcursions.o \ $(OBJDIR)/randomExcursionsVariant.o $(OBJDIR)/linearComplexity.o \ $(OBJDIR)/dfft.o $(OBJDIR)/cephes.o $(OBJDIR)/matrix.o \ $(OBJDIR)/utilities.o $(OBJDIR)/generators.o $(OBJDIR)/genutils.o assess: $(OBJ) $(CC) -o $@ $(OBJ) -lm $(OBJDIR)/assess.o: $(SRCDIR)/assess.c defs.h decls.h utilities.h $(CC) -o $@ -c $(SRCDIR)/assess.c $(OBJDIR)/frequency.o: $(SRCDIR)/frequency.c defs.h externs.h $(CC) -o $@ $(GCCFLAGS) $(SRCDIR)/frequency.c $(OBJDIR)/blockFrequency.o: $(SRCDIR)/blockFrequency.c defs.h externs.h $(CC) -o $@ $(GCCFLAGS) $(SRCDIR)/blockFrequency.c $(OBJDIR)/cusum.o: $(SRCDIR)/cusum.c defs.h externs.h $(CC) -o $@ $(GCCFLAGS) $(SRCDIR)/cusum.c $(OBJDIR)/runs.o: $(SRCDIR)/runs.c defs.h externs.h $(CC) -o $@ $(GCCFLAGS) $(SRCDIR)/runs.c $(OBJDIR)/longestRunOfOnes.o: $(SRCDIR)/longestRunOfOnes.c defs.h externs.h $(CC) -o $@ $(GCCFLAGS) $(SRCDIR)/longestRunOfOnes.c $(OBJDIR)/rank.o: $(SRCDIR)/rank.c defs.h externs.h matrix.h $(CC) -o $@ $(GCCFLAGS) $(SRCDIR)/rank.c $(OBJDIR)/discreteFourierTransform.o: $(SRCDIR)/discreteFourierTransform.c \ defs.h externs.h utilities.h $(CC) -o $@ $(GCCFLAGS) $(SRCDIR)/discreteFourierTransform.c $(OBJDIR)/nonOverlappingTemplateMatchings.o: \ $(SRCDIR)/nonOverlappingTemplateMatchings.c defs.h externs.h utilities.h $(CC) -o $@ $(GCCFLAGS) $(SRCDIR)/nonOverlappingTemplateMatchings.c $(OBJDIR)/overlappingTemplateMatchings.o: \ $(SRCDIR)/overlappingTemplateMatchings.c defs.h externs.h utilities.h $(CC) -o $@ $(GCCFLAGS) $(SRCDIR)/overlappingTemplateMatchings.c clean: rm -f assess $(OBJDIR)/*.o rebuild: clean assess |
05.06.2010, 16:26 | #2 |
Регистрация: 05.06.2010
Сообщений: 3
|
Прошу прощения за дублирование тем. Выход в интернет через очень плохое соединение. Думал, что темы не создавались. Просьба модераторам убрать дубликаты.
|
05.06.2010, 18:30 | #3 | ||||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,725
|
Цитата:
Цитата:
Цитата:
Цитата:
|
||||
05.06.2010, 23:07 | #4 |
Регистрация: 05.06.2010
Сообщений: 3
|
Большое спасибо! Даже стыдно, что такой бред написал.
Сейчас вроде все настроил, но все равно не компилируется. Появляется сообщение make: commands defined twice for target c near line 27 |
09.09.2010, 20:40 | #5 |
Новичок
Джуниор
Регистрация: 09.09.2010
Сообщений: 2
|
У меня такая же проблема! Может кто-нибудь объяснить, как это скомпилировать с помощью Visual Studio 2010 ?
Большое спасибо. Вот что прочитал в Мануале: (section 5.3) одно из свойств системы это "Platform Independence: The source code was written in ANSI C. However, some modification may have to be made, depending on the target platform and the compiler." и "Portability:With minor modifications, source code may be ported to different platforms. The NIST source code was ported to a Windows XP system running Visual Studio 2005 compiler and a Ubuntu Linux system running gcc." |
10.09.2010, 10:39 | #6 |
Новичок
Джуниор
Регистрация: 10.09.2010
Сообщений: 1
|
А вот я имел несчастье скомпилировать тесты NIST по Visual Studio 2008, и поковыряться в исходниках. Вывод однозначный - они не пригодны для тестирования последовательностей случайных чисел. Вы хоть смотрели, для чего они нужны? Для тестирования битовых последовательностей. А последовательности чисел ими не протестируешь.
Последовательность чисел и последовательность битов - это разные вещи. Делаем мысленный эксперимент: Берем игральную кость. Т.е. обыкновенный кубик, на гранях которого написано 0, 1, 2, 3, 4, 5. В наших руках настоящий генератор случайных чисел. (Кто то сомневается?) Составляем последовательность чисел, выпавших при бросании кубика. Обозначим её как A, A[k] - это k-тое число этой последовательности. Последовательность имеет линейное равномерное распределение. Вероятность для каждого числа одинаковая - 1/6. Теперь попробует сделать то, что делают тесты NIST. А именно: выдрать биты из каждого числа последовательности, и составить из них битовую последовательность. B0[k] - это нулевой бит числа, B1[k] - первый, B2[k] - второй. B0 и B1 ведут себя сходным образом, т.е. это случайные значения 0 и 1, равномерно распреленные, с вероятностью 1/2. А вот B2 ведет себя по-другому. Это тоже случайные значения 0 и 1, но распределение будет не равномерным. Догадаться совсем не трудно. B2 принимает нулевое значение в четырех числах 0,1,2,3. А единичное значение только в двух 4,5. Поэтому вероятность 0 для B2 будет 2/3, а 1 - 1/3. Уже интересно. Была одна последовательность с равномерным распределением, стало три, одна из которых заведомо имеет кривое распределение, а остальные, хоть и имеют равномерное распределение, но оно также отличается от распределения исходной последовательности. Продолжаем. Сливаем три последовательности в одну. B[k] = B0[k],B1[k], B2[k]. Получиться тоже перекошенное распределение. Вероятность 0 = 11/18, вероятность 1 = 7/18. И вот для этой B расчитываются какие то статистические величины. Они кому нужны, если нужно было проверить характистики A ? Истинных характеристик последовательности A мы не узнаем никогда, потому что тесты NIST обчитывают не последовательность чисел A, а битовую последовательность B. И полученные результаты смысла никакого не имеют. Даже если у вас будет генератор чисел с диапазоном кратным 2^N, и распределение B не будет "кривым", оно все равно будет отличаться от распределения исходной последовательности. И с помощью тестов NIST вы узнаете не параметры того, что вы хотите, а параметры бес его знает чего. (распиливание числа тоже кстати криво сделано) Это принципиальная ошибка - распиливание чисел на последовательности битов. Впрочем для тестирования битовых последовательностей вполне пригодно, но черезвычайно не удобно. |
10.09.2010, 19:47 | #7 |
Новичок
Джуниор
Регистрация: 09.09.2010
Сообщений: 2
|
А у Вас не осталось скомпилированного проекта? И хотя бы исходников? Просто для меня это действительно то что нужно
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Хелп!!!Многие компоненты в т.ч. DelphiX не компилируются! | NNN | Компоненты Delphi | 4 | 29.04.2008 16:35 |
Не все готовые исходники компилируются (Вопрос новичка) | grey | Помощь студентам | 9 | 28.10.2007 19:18 |