SQlite3 проблема с плавающей точкой для arm-linux - PullRequest
2 голосов
/ 19 апреля 2011

Я пытаюсь использовать sqlite-3.7.2 для кросс-компиляции на двух машинах, arm-linux и xscale , я кросс-компилирую, используя. для обеих систем очень нормальным способом, указывая, конечно, хост для компиляции.

Дело в том, что у меня есть некоторые РЕАЛЬНЫЕ значения в базе данных. Я получаю правильные значения для xscale системы, но на arm7 я получаю неправильное значение для тех, которые имеют десятичную часть, я имею в виду;

Если в моей базе данных есть таблица:
РЕАЛЬНО 2.00
REAL 2.02

Когда я выбираю эти значения, я получаю:
2,00
-4310086189061,12

Для xscale работает нормально, поэтому я полагаю, что это проблема компиляции sqlite для arm.

Я провел исследование и не нашел так много, только это: http://www.mail-archive.com/sqlite-users@sqlite.org/msg40528.html Где предлагается использовать флаг -DSQLITE_MIXED_ENDIAN_64BIT_FLOAT = 1 во время компиляции, но я не могу найти его в коде и не работает, просто добавляя его в файлы configure или Makefie.am.

Я буду очень признателен, если у кого-то есть решение или информация по этому вопросу, потому что я полностью застрял

Большое вам спасибо

JC

EDIT: Решение, которое работает для меня, прежде чем кросс-компиляция sqlite3, определите переменную CFLAGS в среде:

$ CFLAGS = "- DSQLITE_MIXED_ENDIAN_64BIT_FLOAT = 1 -DSQLITE_DEBUG = 1"
$ экспорт CFLAGS

1 Ответ

1 голос
/ 06 августа 2014

Из комментария ОП:

Для тех, у кого может быть такая же проблема, я наконец-то решил ее. На коде поясняется для флага SQLITE_MIXED_ENDIAN_64BIT_FLOAT в чем проблема.

Чтобы решить ее, необходимо определить в среде CFLAGS этот флаг (-DSQLITE_MIXED_ENDIAN_64BIT_FLOAT=1) и флаг -DSQLITE_DEBUG=1, этот последний флаг гарантирует получение правильного значения. Итак,

$ CFLAGS = "- DSQLITE_MIXED_ENDIAN_64BIT_FLOAT = 1 -DSQLITE_DEBUG = 1"

и

$ экспорт CFLAGS

...