2013-05-13 62 views
4

我正在嘗試在x64中構建GDAL(1.9.2)。無法在x64中構建gdal

在說明中,我看到:

# 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 

(打造64) - 它的工作。但只有當我從Visual Studio內部構建時。

我想能夠使用一個bat文件(和構建alll平臺/配置) 上面 - 而它建立在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中......

我無法弄清楚什麼是錯的...

回答

3

要使用nmake命令行進行構建,我必須從命令外殼運行該命令,該命令外殼具有設置爲64位構建的適當變量。

這是我做過什麼來設置64位建築環境:

調用「C:\ Program Files文件(x86)的\微軟的Visual Studio 10.0 \ VC \ vcvarsall。蝙蝠」 AMD64

1

「我可以建立在W​​in32中。」

在Win64構建企圖之前,您是否爲Win32構建過?

如果是這樣,請參加答辯名單 http://trac.osgeo.org/gdal/ticket/4636,底部:

只是要注意的其他任何人遇到的問題。我會嘗試看看更多 到這個時候我可以..但與此同時,一個乾淨的版本不是 確實在做一個「乾淨的」,所以請確保你手動刪除你的文件,如果你在64位版本之前做了32位版本的構建。

你也可以嘗試簡單地在不同的目錄下再次提取源代碼,以便擁有一個乾淨的樹並嘗試爲Win64構建。

+0

我實際上注意到即使在不同的Win32版本(Debug/Release)之間也需要「乾淨」的問題。我已經運行了「clean」 - 我有一個bat文件,它只是調用「start/b/wait nmake -f makefile.vc clean」 - 我也用手刪除了文件...似乎我必須告訴它某處否則它是x64。 – Thalia 2013-05-13 16:34:12

+0

請注意,我沒有在目標機器和模塊機器類型之間發生衝突 - 就像在該機器中 - 似乎_WIN64標記未設置或者完全忽略。 – Thalia 2013-05-13 16:38:34

+0

當你的機器可以幫助你追蹤問題時,爲什麼更喜歡花時間手動分類呢?新鮮提取,讓機器在Win64上工作,同時喝杯咖啡。 ;) – Solkar 2013-05-13 16:53:31

3

你應該先以某種方式明確這個線程在6名編輯你做的是,讀者你的問題的重點改變不止一次,因爲人們可以從revision history

看總之: 現在它只是一個批次VS IDE構建工作的問題;嘗試從VS

EXPORTING導出生成文件不只是打開包裝原單makefile.vc在編輯器窗口

,保存下!一個名字不同從包的「makefile.vc」中,並在批處理中使用。

+0

謝謝。我不知道我可以這麼做 - 從VS導出一個makefile! VS makefile的唯一改進就是設置構建環境 - 如果我知道的話,我可以更快地理解這個問題。 (對我的文章進行編輯:我嘗試使用VS來構建這個事實,它幫助我追蹤了這個問題,並且我在帖子中添加了這些信息 - 並沒有以任何方式改變問題或問題的範圍。不意味着迷惑讀者...恰恰相反,猜猜不成功。) – Thalia 2013-05-14 17:35:31

+0

很高興工作。 – Solkar 2013-05-14 17:57:12

10

我設法從http://dominoc925.blogspot.ru/2013/03/build-64-bit-gdal-for-windows.html的Visual Studio 2012使用的步驟下建立GDAL的64版:

  1. 下載@中-1.9.2.tar.gz(或者其它版本的源)從http://download.osgeo.org/gdal/
  2. 解壓到某個目錄,例如C:\tmp\gdal-1.9.2\

    如果您之前嘗試構建GDAL(例如x86),請確保構建目錄(C:\warmerda\bld\)和源目錄與先前的構建嘗試完全一致。如果不確定,請嘗試在新目錄中解壓源文件。

  3. 開始VS2012 x64 Native Tools Command Prompt: 開始 - >所有程序 - >微軟的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)。

  4. 目錄更改爲與解壓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> 
    
  5. 構建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 
    

您可以從here讓您MSVC_VER號。 GDAL將建成並安裝到C:\warmerda\bld\

+0

也爲我工作,謝謝你的明確指示。 – enriched 2014-10-17 03:30:58

+0

這三個答案的組合對我有效。正如@Thalia所評論的那樣,我使用C:\ Program Files文件(x86)\ Microsoft Visual Studio 12.0 \ VC \ bin \ x86_amd64 \ vcvarsx86_amd64.bat「'將變量放在一起,因爲之前必須清除構建目錄x86安裝以下@Solkar評論,最後@ rutsky指令作爲魅力。 Rutsky的指示比gdal網頁上的指示要清晰得多, – quimnuss 2015-07-17 08:00:47

+0

@quimnuss樂於幫忙!我添加了關於在構建之前清理構建/源目錄的註釋。如果你有東西要添加說明---隨意編輯它們 – rutsky 2015-07-17 13:12:10