Компиляция Postgresql с использованием заголовочных файлов pycparser не найдена - PullRequest
0 голосов
/ 25 октября 2018

Я установил pycparser, который анализирует код C.

Используя pycparser, я хочу проанализировать проект с открытым исходным кодом, а именно PostgreSQL (версия-11.0).Я построил его с помощью пакета компилятора Visual Studio Express 2017.Однако во время компиляции он не может найти некоторые заголовочные файлы, а именно windows.h и winsock2.h.

. Просматривая структуру каталогов сборки PostgreSQL, я обнаружил, что у него нет этих заголовочных файлов.Как решить эту проблему?

Также произошла странная ошибка:

postgresql / src / include / ch: 363: 2: ошибка: # ошибка должна иметь работающую 64-бит целочисленный тип данных

Примечание: я использую 64-битную платформу Windows 10 и postgresql-11.0

Шаги следующие:
Я скачал Visual Studio 2017, Windows-10 SDK, активный Perl, как описано в шагах по сборке из исходного кода в PostgreSQL.

После этого я открываю командную строку разработчика Visual Studio и перехожу к папке postgresql-11.0/src/tools/msvc

. Используйте команду "build" для сборки postgresql.Процесс сборки прошел успешно, но все еще windows.h и winsock2.h не были найдены в структуре каталогов PostgreSQL.

1 Ответ

0 голосов
/ 26 октября 2018

Я не знаю pycparser, но у вашей проблемы, вероятно, есть два аспекта:

  1. Вы не указали pycparser правильный список включаемых каталогов.Упомянутые вами заголовочные файлы не являются частью PostgreSQL.

    Возможно, вы можете получить список из среды приглашения Visual Studio.У меня нет Windows, чтобы проверить это.

  2. Сообщение об ошибке означает, что ни HAVE_LONG_INT_64, ни HAVE_LONG_LONG_INT_64 не определены.

    Сейчас pg_config.h.win32, который копируется в pg_config.h во время процесса установки MSVC, имеет следующее:

    #if (_MSC_VER > 1200)
    #define HAVE_LONG_LONG_INT_64 1
    #endif
    

    Поскольку вы не используете MSVC, вероятно, у вас не установлено _MSC_VER, что вызывает ошибку.

    Вы можете определить _MSC_VER и посмотреть, сможете ли вы строить тогда.

По сути, вы находитесь здесь в затруднительном положении, потому что pycparser не поддерживается процедурой сборкитак что вам придется копаться в источнике и исправлять вещи по ходу дела.Без понимания исходного кода PostgreSQL и процесса сборки вы, вероятно, не уйдете далеко.

...