Есть ли прецеденты сборки парсера под amd64 ?
Elik 06.12.2006 01:23
Есть два сервера amd64
1. На первом стоит FreeBSD 6.1 Cходу собрать парсер не удалось, поэтому поставил скомпилированный от 4.10 и compat4x - работает без проблем.
2. На втором FreeBSD 5.5. Аналогичный трюк не получился - в системе не оказалось 32-битного линкера (/libexec/ld-elf32.so.1) и возможно вообще 32-битных библиотек. Решил собрать честный 64-битный парсер.
С какими проблемами столкнулся:
1. boehm-gc не знает про комбинацию amd64 + FreeBSD. Вылечилось установкой из ports - там есть все необходимые патчи.
2. WARNING в следуюущем месте:
union Languages {
struct {
#ifdef PA_LITTLE_ENDIAN
Language lang:8;
int is_not_just_lang:sizeof(CORD)*8-8;
#elif defined(PA_BIG_ENDIAN)
int is_not_just_lang:sizeof(CORD)*8-8;
Language lang:8;
#else
# error word endianness not determined for some obscure reason
#endif
} opt;
CORD langs;
warning: width of `String::Languages::<anonymous struct>::is_not_just_lang' exceeds its type
Подумал, увеличил is_not_just_lang до long long int. Ругаться перестало, но какие последствия могут быть - не знаю.
На этом этапе парсер стал запускаться и успешно обрабатывать файлик из двух строчек.
3. Не цеплялcя mysql-driver. Штатная диагностика - "Can't open module", пришлось залезть в исходники, чтобы вытащить ошибку dlopen'а. Ошибка оказалась невозможностью найти какой-то символ с длинным названием. Поскольку ранее приходилось писать свой драйвер, то нашел как пересобрать mysql'ный. Вот эта строчка помогает:
g++ -DHAVE_CONFIG_H -I. -I. -I. -I../../parser3/src/sql -I./libltdl -I/usr/local/include/mysql -g -O2 -fPIC -shared parser3mysql.C -o libparser3mysql.so -lc libltdl/ltdl.lo
Возможно нужно будет изменить пути при сборке в другом окружении.
4. ^xdoc::create[] падает в кору в следующем месте:
#0 0x0000000000417db3 in transcodeToUTF8 (.......)
at pa_charset.C:329
329 case 1: *--outPtr = XMLByte(curVal | gFirstByteMark[encodedBytes]);
На этом месте я сломался. Отладчик говорит, что encodedBytes=63, что по логике предыдущего фрагмента кода невозможно.
- Есть ли прецеденты сборки парсера под amd64 ?, Elik 06.12.2006 01:23