Discussion:
PostgreSQL
(слишком старое сообщение для ответа)
Sergey Gernichenko
2008-11-06 12:28:38 UTC
Permalink
Доброго времени суток тебе, *All*!

Поставил во фре сабж из портов, то есть имею исходники:
postgresql-opt-8.3beta2.tar.bz2 и postgresql-base-8.3beta2.tar.bz2.

Как можно собрать их под виндой с помощью mingw? Если точнее, то мне нужен
только libpq. Или может где собранная лежит ?



До скорых встреч, *All* С уважением, *Sergey*.
Alexander Sychenko
2008-11-06 16:50:58 UTC
Permalink
Thu, 06 Nov 2008 15:28:38 +0300
Post by Sergey Gernichenko
postgresql-opt-8.3beta2.tar.bz2 и postgresql-base-8.3beta2.tar.bz2.
Как можно собрать их под виндой с помощью mingw? Если точнее, то мне
нужен только libpq. Или может где собранная лежит ?
http://www.dll.ru/dll/L/7.html
Alex Mizrahi
2008-11-06 18:12:46 UTC
Permalink
SG> Поставил во фре сабж из портов, то есть имею исходники:
SG> postgresql-opt-8.3beta2.tar.bz2 и postgresql-base-8.3beta2.tar.bz2.

почему beta? видимо не очень хорошая версия..

SG> Как можно собрать их под виндой с помощью mingw? Если точнее, то мне
SG> нужен только libpq. Или может где собранная лежит ?

ты не поверишь, непосредственно на сайте postgresql.org лежат бинари под
венду:

http://www.postgresql.org/ftp/binary/v8.3.5/win32/

там libpg.lib, заголовки и прочая фигня. только я подозреваю что оно не
под mingw, а под msvc.
Sergey Gernichenko
2008-11-10 11:44:28 UTC
Permalink
Доброго времени суток тебе, *Alex*!

В четверг, 06 ноября 2008 года, в 21:12, ты писал(а) мне:

AM> почему beta? видимо не очень хорошая версия..

SG>> Как можно собрать их под виндой с помощью mingw? Если точнее, то
SG>> мне нужен только libpq. Или может где собранная лежит ?
AM> ты не поверишь, непосредственно на сайте postgresql.org лежат бинари
AM> под
AM> венду:
AM> http://www.postgresql.org/ftp/binary/v8.3.5/win32/
Да верю я, был я там, и уже стянул....

AM> там libpg.lib, заголовки и прочая фигня. только я подозреваю что оно
AM> не под mingw, а под msvc.
Собрался без проблем пример из документации с помощью mingw, но вылезла одна
проблема:

в висте полученный экзешник не запускается, появляется месседжбокс
"ошибка при инициализации приложения (0xc0150002). Для выхода из приложения
нажмите кнопку "ОК"". С помощью DEPENDS выяснил, что не хватает нескольких DLL,
нашёл их в дистрибе постгре, подставил... но всё равно при запуске вываливается
тот же месседжбокс. В ХР вроде запускается нормально. Что можно сделать, чтобы
запускать клиента в висте? или только на msvc переходить?



До скорых встреч, *Alex* С уважением, *Sergey*.
Sergey Gernichenko
2008-11-10 14:06:04 UTC
Permalink
Доброго времени суток тебе, *Alex*!

В понедельник, 10 ноября 2008 года, в 14:44, я писал(а) тебе:

AM>> там libpg.lib, заголовки и прочая фигня. только я подозреваю что
AM>> оно не под mingw, а под msvc.
SG> Собрался без проблем пример из документации с помощью mingw, но
SG> вылезла одна проблема:

SG> в висте полученный экзешник не запускается, появляется месседжбокс
SG> "ошибка при инициализации приложения (0xc0150002). Для выхода из
SG> приложения нажмите кнопку "ОК"". С помощью DEPENDS выяснил, что не
SG> хватает нескольких DLL, нашёл их в дистрибе постгре, подставил... но
SG> всё равно при запуске вываливается тот же месседжбокс. В ХР вроде
SG> запускается нормально. Что можно сделать, чтобы запускать клиента в
SG> висте? или только на msvc переходить?
Эх невнимательность... в общем ДЛЛ-ки-то я добавил, которых не хватало, но
depends говорит:

Error: The Side-by-Side configuration information for
"c:\#mydocuments\#scripts\frombook\postgreeclient\LIBPQ.DLL" contains errors.
   ,    
.       
(14001).
Warning: At least one module has an unresolved import due to a missing export
function in a delay-load dependent module.

В списке модулей при этом отмечает shlwapi.dll и ieframe.dll, которые лежат в
\windows\system32\

Я так понял, что это ошибки в этих 2 системных длл. Как устранить проблему?
откуда стянуть правильные версии этих библиотек ? (Если делать виндовс-апдейт
через интернет, я тут разорюсь...)



До скорых встреч, *Alex* С уважением, *Sergey*.
Alex Mizrahi
2008-11-10 14:42:07 UTC
Permalink
SG> В списке модулей при этом отмечает shlwapi.dll и ieframe.dll, которые
SG> лежат в \windows\system32\

SG> Я так понял, что это ошибки в этих 2 системных длл. Как устранить
SG> проблему?

честно говоря не знаю. я бы попробовал, во-первых, получить более
детальную информацию спомощью depends -- каких функций не хватает в этих
DLL, и кто их просит. может быть их можно "оторвать".

во-вторых, может быть действительно имеет смысл собрать msvc. штатный
psql.exe ведь как-то работает под вистой?

ну и, вероятно, такие вопросы лучше спрашивать в мэйлинг листе postgresql.

SG> откуда стянуть правильные версии этих библиотек ?

неправильность этих библиотек маловероятна, скорее что-то не так со
с твоей сборкой. хотя хотя бы первый сервиспак наверное не помешает.
Sergey Gernichenko
2008-11-11 06:26:54 UTC
Permalink
Доброго времени суток тебе, *Alex*!

В понедельник, 10 ноября 2008 года, в 17:42, ты писал(а) мне:

SG>> Я так понял, что это ошибки в этих 2 системных длл. Как устранить
SG>> проблему?
AM> честно говоря не знаю. я бы попробовал, во-первых, получить более
AM> детальную информацию спомощью depends -- каких функций не хватает в
AM> этих DLL, и кто их просит. может быть их можно "оторвать".

AM> во-вторых, может быть действительно имеет смысл собрать msvc. штатный
AM> psql.exe ведь как-то работает под вистой?
Под ВИH32 я скачал зип-архив постгрескл (нужна только либа клиента), сервер под
фрёй установлен и работает. Так что из этого архива пскл не работает, говорит
что не настроено. Hо работает pgadmin. В этой же висте. Вот и хочется собрать
такой же экзешник, чтоб работало. Вижл Си и меня в данный момент нет, вечером
закатают мне. Так бы давно попробовал.

AM> ну и, вероятно, такие вопросы лучше спрашивать в мэйлинг листе
AM> postgresql.

SG>> откуда стянуть правильные версии этих библиотек ?
AM> неправильность этих библиотек маловероятна, скорее что-то не так со
AM> с твоей сборкой. хотя хотя бы первый сервиспак наверное не помешает.
Интересно, что может быть не так со сборкой...

gcc -I C:\Tools\pgsql\include\ -L C:\Tools\pgsql\lib\ -lpq -o testlibpq
testlibpq.c

Полученный экзешник не запускается в висте, но запускается в ХР.

До скорых встреч, *Alex* С уважением, *Sergey*.
Alex Mizrahi
2008-11-11 10:05:35 UTC
Permalink
AM>> во-вторых, может быть действительно имеет смысл собрать msvc. штатный
AM>> psql.exe ведь как-то работает под вистой?
SG> Под ВИH32 я скачал зип-архив постгрескл (нужна только либа клиента),
SG> сервер под фрёй установлен и работает. Так что из этого архива пскл не
SG> работает, говорит что не настроено.

ну там как раз всё просто -- ему нужен MSVC runtime библиотеки (msvcrt) от
VS2005. сильно подозреваю что инсталлер msi эти библиотеки ставил.
можно отдельно найти vc2005 redist.

SG>>> откуда стянуть правильные версии этих библиотек ?
AM>> неправильность этих библиотек маловероятна, скорее что-то не так со
AM>> с твоей сборкой. хотя хотя бы первый сервиспак наверное не помешает.
SG> Интересно, что может быть не так со сборкой...

"не так" может быть то что либы скомпилены MSVC, а собираешь екзешник
ты спомощью mingw. есть много разных тонкостей, типа тех же манифестов.

возможно имеет смысл сами либы и dll postgresql собрать mingw, хотя как
правило
в таких случаях лучше не идти против течения -- если авторы postgresql
пользуются msvc для сборок под винду, проще всего будет им же и
воспользоваться.

SG> Полученный экзешник не запускается в висте, но запускается в ХР.

странно, конечно, но ещё и не такие чудеса встречаются :)
Sergey Gernichenko
2008-11-11 08:51:26 UTC
Permalink
Доброго времени суток тебе, *Alex*!

В понедельник, 10 ноября 2008 года, в 17:42, ты писал(а) мне:

SG>> В списке модулей при этом отмечает shlwapi.dll и ieframe.dll,
SG>> которые лежат в \windows\system32\

SG>> Я так понял, что это ошибки в этих 2 системных длл. Как устранить
SG>> проблему?
AM> честно говоря не знаю. я бы попробовал, во-первых, получить более
AM> детальную информацию спомощью depends -- каких функций не хватает в
AM> этих DLL, и кто их просит. может быть их можно "оторвать".
интересно, кто додумался в Dependency Walker хелп-файле организовать только
оглавление со ссылками в инет... короче в данный момент мне хелп недоступен.

Когда открываю в нем экзешник, в логе в нижнем окне вижу, еррор и варнинг:
Error: The Side-by-Side configuration information for
"c:\#mydocuments\#scripts\frombook\postgreeclient\LIBPQ.DLL" contains errors.
(14001).
Warning: At least one module has an unresolved import due to a missing export
function in a delay-load dependent module.


В окошке чуть выше список ДЛЛ, из них подсвечено 2: shlwapi.dll и ieframe.dll,
выделил shlwapi.dll и нажал Ctrl+M, в дереве выделилось:
libpq.dll->libeay32.dll->user32.dll->POWRPROF.DLL->SHLWAPI.DLL. Что это значит
? Цепочка вызова функций из этих ДЛЛ? Hу и если выделить имя SHLWAPI.DLL в этом
дереве, то в правом окне вижу 2 функции SHDeleteKeyW и SHCopyKeyW, для каждой
PI: C (в зеленом прямоугольнике), Ordinal: N/A, Hint:N/A, Entry Point: Not
Bound

Аналогично для IEFRAME.DLL:
LIBPQ.DLL->SHELL32.DLL->SHDOCVW.DLL->IEFRAME.DLL

Там выделяется 3 строки, функции: #160, #159, #141, в столбце PI буква C в
красном прямоугольнике, Ordinal, Hint, Entry Point также.

Если открыть в депендс pgadmin3.exe, то подсвечивается всё также, но при этом
пгадмин работает без проблем (вроде, по крайней мере, запускается и коненктится
к базе), но в варнингах: по крайней мере 1 модуль имеет неотресолвенный импорт
на отсутсвующую экспортированную функцию в модуле с отложенной загрузкой...
(Warning: At least one module has an unresolved import due to a missing export
function in a delay-load dependent module.)

Может надо собирать аналогично свой пример? как интересно включить такой режим
в minwg ? или всё-таки найти msvc?

До скорых встреч, *Alex* С уважением, *Sergey*.
Alex Mizrahi
2008-11-11 12:39:23 UTC
Permalink
SG> Аналогично для IEFRAME.DLL:
SG> LIBPQ.DLL->SHELL32.DLL->SHDOCVW.DLL->IEFRAME.DLL

похоже проблема не в этих либах..

я подозреваю проблема всё-таки с рантаймом MSVC 2005 -- libpq.dll
с ним линкуется динамически. у тебя под XP есть такая фигня:

\windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700\MSVCR80.dll

? а под вистой?

psql.exe и твой екзешник вываливаются разным образом потому что в psql.exe
есть манифест который явно просит эту фигню, а в твоём манифеста нет, так
что
оно падает во время загрузки.

SG> Если открыть в депендс pgadmin3.exe,

может его собирали отдельно каким-то другим образом. в старой версии 8.1
рантайм MSVC 2005 не требовался.

SG> Может надо собирать аналогично свой пример? как интересно включить
SG> такой режим в minwg ? или всё-таки найти msvc?

не думаю что дело в delay-load'ах.
Sergey Gernichenko
2008-11-12 06:04:30 UTC
Permalink
Доброго времени суток тебе, *Alex*!

Во вторник, 11 ноября 2008 года, в 15:39, ты писал(а) мне:

SG>> Аналогично для IEFRAME.DLL:
SG>> LIBPQ.DLL->SHELL32.DLL->SHDOCVW.DLL->IEFRAME.DLL
AM> похоже проблема не в этих либах..

AM> я подозреваю проблема всё-таки с рантаймом MSVC 2005 -- libpq.dll
AM> с ним линкуется динамически. у тебя под XP есть такая фигня:

AM> \windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.762_
AM> x-ww_6b128700\MSVCR80.dll

AM> ? а под вистой?
А под вистой эту длл я скопировал из каталога pgadmin\...\bin
pqlib.dll и которые он требует тоже их пгадмин копировал, но и также пробовал
их копировать из pgsql\lib


AM> psql.exe и твой екзешник вываливаются разным образом потому что в
AM> psql.exe есть манифест который явно просит эту фигню, а в твоём
AM> манифеста нет, так что оно падает во время загрузки.
хм, а можно ли с мингв прицепить манифест и как его написать?


SG>> Если открыть в депендс pgadmin3.exe,
AM> может его собирали отдельно каким-то другим образом. в старой версии
AM> 8.1 рантайм MSVC 2005 не требовался.


SG>> Может надо собирать аналогично свой пример? как интересно
SG>> включить такой режим в minwg ? или всё-таки найти msvc?

AM> не думаю что дело в delay-load'ах.
хм. Ща буду пробовать собрать с помощью мсвц.

До скорых встреч, *Alex* С уважением, *Sergey*.
Sergey Gernichenko
2008-11-12 12:59:08 UTC
Permalink
Доброго времени суток тебе, *Alex*!

В среду, 12 ноября 2008 года, в 09:04, я писал(а) тебе:


SG>>> Если открыть в депендс pgadmin3.exe,
AM>> может его собирали отдельно каким-то другим образом. в старой
AM>> версии 8.1 рантайм MSVC 2005 не требовался.
SG>>> Может надо собирать аналогично свой пример? как интересно
SG>>> включить такой режим в minwg ? или всё-таки найти msvc?
Установил MVS 9.0. Экзешник, собранный с помощью mingw, стал запускаться.

До этого ставил "Microsoft Visual C++ 2005 Redistributable Package (x86)", но
как-то странно заверщалась программа установки, без всяких сообщений типа "всё
ок". Это не повлияло на результат запуска собранного EXE.


До скорых встреч, *Alex* С уважением, *Sergey*.
Alex Mizrahi
2008-11-12 11:13:22 UTC
Permalink
AM>> \windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.762_
AM>> x-ww_6b128700\MSVCR80.dll

AM>> ? а под вистой?
SG> А под вистой эту длл я скопировал из каталога pgadmin\...\bin
SG> pqlib.dll и которые он требует тоже их пгадмин копировал, но и также
SG> пробовал их копировать из pgsql\lib

почему-то мне кажется что для корректной работы side-by-side недостаточно
просто переписать dll'ку, а нужно установить эту х-ню, чтобы она где-то
прописалась..

AM>> psql.exe и твой екзешник вываливаются разным образом потому что в
AM>> psql.exe есть манифест который явно просит эту фигню, а в твоём
AM>> манифеста нет, так что оно падает во время загрузки.
SG> хм, а можно ли с мингв прицепить манифест и как его написать?

вроде бы можно рядом c exe подложить файлик манифеста, типа
testpqlib.exe.manifest
такого содержания

<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC80.CRT'
version='8.0.50727.762' processorArchitecture='x86'
publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
</assembly>

хотя я особо не интересовался -- vc2005 всё делает автоматически..
Sergey Gernichenko
2008-11-12 14:27:16 UTC
Permalink
Доброго времени суток тебе, *Alex*!

В среду, 12 ноября 2008 года, в 14:13, ты писал(а) мне:

AM>>> ? а под вистой?
SG>> А под вистой эту длл я скопировал из каталога pgadmin\...\bin
SG>> pqlib.dll и которые он требует тоже их пгадмин копировал, но и
SG>> также пробовал их копировать из pgsql\lib
AM> почему-то мне кажется что для корректной работы side-by-side
AM> недостаточно просто переписать dll'ку, а нужно установить эту х-ню,
AM> чтобы она где-то прописалась..
Да вроде не надо их нигде прописывать, если приложение явно вызывает из них
функции.


SG>> хм, а можно ли с мингв прицепить манифест и как его написать?
AM> вроде бы можно рядом c exe подложить файлик манифеста, типа
AM> testpqlib.exe.manifest
AM> такого содержания

AM> <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
AM> <assembly xmlns='urn:schemas-microsoft-com:asm.v1'
AM> manifestVersion='1.0'> <dependency>
AM> <dependentAssembly>
AM> <assemblyIdentity type='win32' name='Microsoft.VC80.CRT'
AM> version='8.0.50727.762' processorArchitecture='x86'
AM> publicKeyToken='1fc8b3b9a1e18e3b' />
AM> </dependentAssembly>
AM> </dependency>
AM> </assembly>

AM> хотя я особо не интересовался -- vc2005 всё делает автоматически..
Я обратил внимание на манифест... в каталоге с пгадмин лежит файлец:
Microsoft.VC80.CRT.manifest, я его скопировал к себе и всё запустилось. Даже
попробовал на машине без мсвц, рунтайма и т.д. Получается, разработчики пг не
встроили этот манифест в pqlib.dll, я так понял он нужен для какой-то из длл,
которой пользуется pqlib.dll.


До скорых встреч, *Alex* С уважением, *Sergey*.
Loading...