x64的無奈只有自己編譯了。
在這個過程中還是費了一些力氣,在linux上可以直接make,在windows使用visual studio來管理工程,不過有一些工程並沒有及時更新,因此會遇到一些莫名其妙的問題。在這裡就把這個過程中遇到的問題總結一下,將來可以省點力氣。
一、 準備工作
1. 首先需要下一些**。
名稱當前版本
subversion
1.8.8
apr1.5.0
apr-iconv
1.2.1
apr-uti
1.5.3
zlib
1.2.8
sqlite-amalgamation
3080301
swigwin
2.0.12
iconv_module.obj : error lnk2019: unresolved external symbol __imp_apr_stat referenced in function iconv_getpathname等等。右鍵單擊libapriconv,選擇屬性(properties),在屬性對話方塊中:iconv_module.obj : error lnk2019: unresolved external symbol __imp_apr_snprintf referenced in function iconv_getpathname
iconv_module.obj : error lnk2019: unresolved external symbol __imp_apr_pool_destroy referenced in function iconv_getpath
a) 選擇 configuration properties -> c/c++ -> preprocessor ,右側的 preprocessor definitions 增加乙個巨集 apr_declare_static;
b) 選擇 configuration properties -> linker -> general,右側的 additional library directories增加乙個路徑 c:\temp\apr\x64\libr;
c) 選擇 configuration properties -> linker -> input,右側的 additional dependencies增加兩個靜態庫 ws2_32.lib和apr-1.lib;
類似的,對libaprutil工程增加巨集(api_declare_static, apr_declare_static),增加附加庫路徑(c:\temp\apr\x64\libr, c:\temp\apr-util\xml\expat\lib\x64\libr, c:\temp\apr-iconv\x64\libr, c:\temp\apr-util\x64\libr),增加附加庫(rpcrt4.lib, apr-1.lib, apriconv-1.lib, aprutil-1.lib, xml.lib)
(3) 對 libaprutil 重新編譯即可。
(4) 為了方便subversion的使用,我們將編譯好的*.lib檔案放到release目錄下面。
a) 將 c:\temp\apr\x64\release\*.lib 放到 c:\temp\apr\release 下
b) 將 c:\temp\apr-util\x64\release\*.lib 放到 c:\temp\apr-util\release 下
c) 將 c:\temp\apr-util\xml\expat\lib\x64\libr\*.lib 放到 c:\temp\apr-util\release 下
d) 將 c:\temp\apr-iconv\x64\release\*.lib 放到 c:\temp\apr-iconv\release 下
4. 編譯subversion,在這裡我們需要的是swig python bindings(終於進入正題)。
(1) 進入 subversion 目錄,執行下面的命令(目的是生成vcproj工程)
python gen-make.py -t vcproj --vsnet-version=2010 --with-swig=c:\temp\swigwin --with-zlib=c:\temp\zlib --with-apr=c:\temp\apr --with-apr-util=c:\temp\apr-util --with-apr-iconv=c:\temp\apr-iconv --with-sqlite= c:\temp\sqlite-amalgamation注意--vsnet-version,填寫你的visual studio的版本,這裡我用的是2010. 其他的目錄填寫絕對路徑。
(2) 在這個目錄下面生成乙個subversion_vcnet.sln,開啟,將配置改為release,平台改為x64。
5. 選擇__swig_python__ 進行編譯,共編譯31個工程,全部成功。(如果libsvn_subr_dll和libsvn_delta_dll失敗,是由於zlib編譯非64位的版本,重新編譯zlib即可。)
6. 至此,編譯工作結束,下面可以把編譯生成的檔案複製出來了。我們假設放到c:\temp\svnpy下面。
(1) 在svnpy下面新建目錄svn,把c:\temp\subversion\subversion\bindings\swig\python\svn下面的*.py檔案都複製c:\temp\svnpy\svn下面。
(2) 在svnpy下面新建目錄libsvn,把c:\temp\subversion\release\subversion\bindings\swig\python 下面的*.pyd檔案都複製到c:\temp\svnpy\libsvn下面。
(3) 在c:\temp\subversion\release\subversion下搜尋所有的.dll檔案,都複製到c:\temp\svnpy\libsvn下面。(共有9個,libsvn_client-1.dll, libsvn_delta-1.dll, libsvn_diff-1.dll, libsvn_fs-1.dll, libsvn_ra-1.dll, libsvn_repos-1.dll, libsvn_subr-1.dll, libsvn_swig_py-1.dll, libsvn_wc-1.dll)
(4) 把c:\temp\subversion\subversion\bindings\swig\python下面所有的*.py檔案都複製到c:\temp\svnpy\libsvn下面。
(5) 把第3步編譯生成的3個dll複製到c:\temp\svnpy\libsvn(分別是libapr-1.dll, libapriconv-1.dll, libaprutil-1.dll,在對應的資料夾下面的x64\release下面找就可以了)。
7. 測試一下,看是否可以被python匯入:
參考compiling subversion python bindings on windows
windows 7 x64搭建FTP伺服器
進行如上圖進行配置。配置哪些使用者可以訪問,設定使用者名稱和密碼。進入iis,進行配置 可以在空白處,通過新增允許規則來新增可以訪問的使用者。通過以上的設定,使用者tony是可以訪問ftp站點的,使用者名稱是tony,密碼是之前新建使用者的時候設定的密碼。成功訪問後如上圖。ftp上傳單個檔案測試 p...
在Windows上編譯GRPCPP SDK
install visual studio 2015 or 2017 visual c compiler will be used optional install git。如果不借助梯子,git clone獲取grpc專案超高概率失敗 install cmake。install nasm and ...
dbus在windows上的編譯
author kagula date 2015 09 16 1 expat win32bin 2.1.0.exe 2 dbus 1.6.8.tar.gz 準備 1 先安裝expat win32bin 2.1.0.exe,我這裡的安裝路徑是 d expat 2.1.0 方式一 1 參考資料一,在 ad...