Я пытаюсь собрать GDAL (1.9.2) в x64.
В инструкции я вижу:
# Uncomment the following if you are building for 64-bit windows
# (x64). You'll need to have PATH, INCLUDE and LIB set up for 64-bit
# compiles.
!IF "$(PLATFORM)" == "x64"WIN64=YES
!ENDIF
А потом, ниже,
# Under win64, symbols for function names lack the underscore prefix
# present on win32. Also the STDCALL calling convention is not used.
!IFDEF WIN64
!UNDEF STDCALL
!ELSE
SYM_PREFIX=_
!ENDIF
Не могу найти PATH, INCLUDE и LIB, специфичные для x64, или что-нибудь еще, что я должен сделать …
Я могу встроить в Win32.
В x64 я получаю ошибки компоновщика:
LINK : error LNK2001: unresolved external symbol _OGRFeatureStylePuller
LINK : error LNK2001: unresolved external symbol _OSRValidate
...
gdal19.dll : fatal error LNK1120: 74 unresolved externals
NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual Studio
10.0\VC\BIN\link.EXE"' : return code '0x460'
Я поставил (чтобы встроить в Win32)
!IFNDEF PLATFORM
PLATFORM=WIN32
!ENDIF
Модифицировано в
!IFNDEF PLATFORM
PLATFORM=x64
!ENDIF
(для сборки в x64) — И это сработало. Но только если я строю изнутри Visual Studio.
Я хотел бы иметь возможность использовать bat-файл (и собрать все платформы / конфигурации)
Выше — пока он строит в VS, он не будет собираться из командной строки
(с командами:
start /b /wait nmake -f makefile.vc clean
start /b /wait nmake.exe /f makefile.vc PLATFORM=x64
start /b /wait nmake.exe /f makefile.vc devinstall PLATFORM=x64
Точно то же самое строит в Win32 …
Я не могу понять, что не так …
Мне удалось построить x64-версию GDAL под Visual Studio 2012, используя шаги из http://dominoc925.blogspot.ru/2013/03/build-64-bit-gdal-for-windows.html:
Распакуйте в какой-нибудь каталог, например C:\tmp\gdal-1.9.2\
Если вы пытались собрать GDAL ранее (например, x86), убедитесь, что каталог сборки (C:\warmerda\bld\
) и исходный каталог очищены от предыдущей попытки сборки. Если не уверены, попробуйте распаковать исходники в новый каталог.
Начните VS2012 x64 Native Tools Command Prompt
:
Пуск -> Все программы -> Microsoft Visual Studio 2012 -> Инструменты Visual Studio -> Open VS2012 x64 Native Tools Command Prompt
Или беги
%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" amd64
).
Перейдите в каталог с распакованными источниками GDAL:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC>cd /D C:\tmp\gdal-1.9.2
D:\trn4\gdal-1.9.2>
Сборка GDAL с файлами разработки:
nmake /f makefile.vc MSVC_VER=1700 WIN64=YES
nmake /f makefile.vc MSVC_VER=1700 WIN64=YES install
nmake /f makefile.vc MSVC_VER=1700 WIN64=YES devinstall
Вы можете получить свой номер MSVC_VER от Вот. GDAL будет построен и установлен в C:\warmerda\bld\
,
Для сборки с помощью командной строки nmake мне нужно было запустить команду из командной оболочки, в которой установлены соответствующие переменные для построения для 64 битов.
Вот что я сделал, чтобы настроить 64-битную среду сборки:
вызов «C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ vcvarsall.bat» amd64
Сначала вы должны как-то прояснить читателям этой ветки, что за 6 внесенных вами изменений, фокус вашего вопроса менялся не раз, как видно из лист регистраций изменений
Тем не мение:
Теперь это просто проблема, связанная с идеей сборки; попробуйте экспортировать make-файл из VS
ЭКСПОРТ! НЕ просто открывайте оригинальный пакет makefile.vc в окне редактора!
, сохраните его под именем, отличным от «makefile.vc» пакета, и используйте его в своем пакете.
«Я могу встроить в Win32».
Вы собирались для Win32 ДО вашей попытки сборки Win64?
Если это так, пожалуйста, посетите
http://trac.osgeo.org/gdal/ticket/4636, нижняя часть списка ответов:
Просто отметить, что для кого-то еще есть проблема .. Я постараюсь посмотреть больше
в это, когда я могу .. но в то же время, чистая сборка не
действительно делает «чистый», поэтому убедитесь, что вы вручную удалите свои файлы, если
вы делаете 32-битную сборку перед вашей 64-битной сборкой.
Вы также можете попытаться просто извлечь исходный код снова в другой каталог, чтобы получить чистое дерево и попытаться создать его для Win64.