在Windows 7 x64 上編譯libsvn

2021-07-31 15:31:09 字數 3508 閱讀 6707

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

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

等等。右鍵單擊libapriconv,選擇屬性(properties),在屬性對話方塊中:

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...