簡體   English   中英

使用cygwin,dlltool構建64位libpython27.a

[英]Building 64bit libpython27.a using cygwin, dlltool

我正在嘗試使用cygwin在64位Win7機器上構建一個python擴展DLL(因為cygwin只運行32位進程,這實際上是交叉編譯)。

我使用dlltool從python27.dll創建了libpython27.a(例如, 在這里解釋),但是在鏈接器階段說構建失敗了
skipping incompatible c:\\Python27\\libs/libpython27.a when searching for -lpython27
這正是這里報告的錯誤(那個人最終轉向MSVC編譯器......)。

更多信息:
- Active Python 2.7.2,win64,x64
- 使用/usr/bin/x86_64-w64-mingw32-g++.exe編譯器的最新版cygwin

有誰知道這是否支持?
有沒有辦法使用我想念的dlltool?

(我在這里找到使用指南
dlltool --as-flags=--64 -m i386:x86-64 -k -l libpython27.a -d python.def
但是當這樣做時,我從dlltool得到"invalid bfd target"錯誤)

謝謝!

更新 :我相信它可以完成,因為Enthought python包含這樣一個文件。 我想為不包含它的更常見的發行版創建一個。

問題是你使用的是32位dlltool。 可能在C:\\ MinGW \\ bin而不是C:\\ MinGW64 \\ bin。 您可以更改路徑,或者專門運行64位工具:

C:\MinGW64\bin\dlltool -v --dllname python27.dll --def python27.def --output-lib libpython27.a

我不確定你找到這個有多大幫助,但是你鏈接到的頁面底部有一個鏈接到這里 - 它說:

不要使用MinGW-w64。 正如您將注意到的,AMD的AMD64版本中省略了Python的MinGW導入庫(例如libpython27.a)。 這是故意的。 不要嘗試使用dlltool制作一個。 目前還沒有正式的MinGW-w64版本,它仍然處於“測試階段”且被認為是不穩定的,盡管你可以從例如TDM-GCC獲得64位版本。 mingw運行時與MSVC運行時沖突也存在問題; 這可能發生在您不期望的地方,例如g ++或gfortran的運行時庫內部。 為了保持安全,請立即避免使用MinGW-w64。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM