Как собрать Google RE2 с помощью Cygwin? - PullRequest
6 голосов
/ 27 ноября 2011

Я получаю эти ошибки:

g ++: нераспознанная опция '-pthread'
util / test.cc: 1: 0: предупреждение: -fPIC игнорируется для цели (весь код не зависит от позиции)

(несколько), и наконец:

/ usr / lib / gcc / i686-pc-cygwin / 4.5.3 /../../../../ i686-pc-cygwin / bin / ld: не удается найти -lre2 collect2: ld вернул 1 статус выхода

Любой совет?

Полный журнал UPD

g++ -o obj/so/test/charclass_test obj/so/re2/testing/charclass_test.o obj/so/util/pcre.o obj/so/util/random.o obj/so/util/thread.o obj/so/re2/testing/backtrack.o obj/so/re2/testing/dump.o obj/so/re2/testing/exhaustive_tester.o obj/so/re2/testing/null_walker.o obj/so/re2/testing/regexp_generator.o obj/so/re2/testing/string_generator.o obj/so/re2/testing/tester.o obj/so/util/test.o -Lobj/so -lre2 obj/libre2.a -pthread
g++: unrecognized option '-pthread'
/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/bin/ld: cannot find -lre2
collect2: ld returned 1 exit status
make: *** [obj/so/test/charclass_test] Error 1

Ответы [ 2 ]

3 голосов
/ 06 декабря 2011

Я сделал следующие вещи для компиляции библиотеки re2 и тестов на cygwin

1) Компиляция и установка библиотеки

hg clone https://re2.googlecode.com/hg re2
cd re2
make
make install

2) Составление тестов. Измените Makefile и замените эту строку:

$(CXX) -o $@ obj/so/re2/testing/$*.o $(STESTOFILES) obj/so/util/test.o -Lobj/so -lre2 obj/libre2.a $(LDFLAGS) $(LDPCRE)

с этой строкой

$(CXX) -o $@ obj/so/re2/testing/$*.o $(STESTOFILES) obj/so/util/test.o -L/usr/local/lib -lre2 obj/libre2.a $(LDFLAGS) $(LDPCRE)

А после этого

make test

Библиотека скомпилирована для меня без проблем и, за исключением одного, все тесты пройдены.

Вы также можете проверить эту версию re2 для Visual Studio, если вам просто нужна версия библиотеки для Windows. http://code.google.com/p/re2win/

0 голосов
/ 05 декабря 2011

Вы можете изменить Makefile для прохождения компиляции. Однако тест все равно не пройден. Я бы посоветовал вам связаться с владельцем проекта hg, чтобы узнать, почему это не работает на cygwin.

$ hg diff
diff -r 9aa1d4f2954d Makefile
--- a/Makefile  Sun Oct 30 15:57:08 2011 +0000
+++ b/Makefile  Mon Dec 05 11:03:39 2011 -0800
@@ -191,7 +191,7 @@

 obj/so/test/%: obj/so/libre2.so obj/libre2.a obj/so/re2/testing/%.o $(STESTOFILES) obj/so/util/test.o
        @mkdir -p obj/so/test
-       $(CXX) -o $@ obj/so/re2/testing/$*.o $(STESTOFILES) obj/so/util/test.o -Lobj/so -lre2 obj/libre2.a $(LDFLAGS) $(LDPCRE)
+       $(CXX) -o $@ obj/so/re2/testing/$*.o $(STESTOFILES) obj/so/util/test.o -Lobj/so obj/libre2.a $(LDFLAGS) $(LDPCRE)

 obj/test/regexp_benchmark: obj/libre2.a obj/re2/testing/regexp_benchmark.o $(TESTOFILES) obj/util/benchmark.o
        @mkdir -p obj/test
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...