2011-09-20 13 views
5

Próbuję zbudować DLL rozszerzenia Pythona na 64-bitowej maszynie Win7 przy użyciu cygwin (jako że cygwin działa tylko jako proces 32-bitowy, to jest rzeczywiście cross-kompilacja).Budowanie 64-bitowego libpython27.a przy użyciu cygwin, dlltool

stworzyłem libpython27.a sobie z python27.dll użyciu dlltool (jak wyjaśniono, na przykład, here), ale budowa nie w fazie łącznikowej mówiąc
skipping incompatible c:\Python27\libs/libpython27.a when searching for -lpython27
To jest właśnie zgłosiło błąd here (gdzie facet zakończył przeprowadzkę do kompilatora MSVC ...).

Więcej informacji:
- Aktywna Python 2.7.2, Win64, 64
- najnowsza wersja Cygwin, używając /usr/bin/x86_64-w64-mingw32-g++.exe kompilator

Does ktoś wie, czy to jest obsługiwane?
Czy istnieje sposób użycia dlltool, za którym tęsknię?

(ja nie znaleziono here kierunkiem używać
dlltool --as-flags=--64 -m i386:x86-64 -k -l libpython27.a -d python.def
ale robiąc to mam "invalid bfd target" błąd z dlltool)

Dzięki!

Aktualizacja: Wierzę, że można to zrobić, ponieważ taki plik zawiera Enthought python. Chciałbym utworzyć dla bardziej popularnych dystrybucji, które go nie zawierają.

+0

Cóż, gdybyśmy wiedzieli o tej chorągiewce, nie byłoby to już teraz _ czyż nie? – brc

Odpowiedz

0

Nie jestem pewien, w jaki sposób można znaleźć pomocne, ale w dolnej części strony, którą powiązana jest link do here - Gdzie jest napisane:

Nie używaj MinGW-W64. Jak można zauważyć, biblioteka importująca MinGW dla języka Python (np. Libpython27.a) została pominięta w wersji AMD64 Python. To jest celowe. Nie próbuj robić tego przy pomocy dlltool. Nie ma oficjalnej wersji gry MinGW-w64, nadal jest w wersji "beta", a jest niestabilna, chociaż można uzyskać 64-bitową wersję z np. TDM-GCC. Wystąpiły również problemy z uruchomieniem środowiska wykonawczego mingw w konflikcie z środowiskiem wykonawczym MSVC; może się to zdarzyć z miejsc, których nie oczekujesz, takich jak wewnętrzne biblioteki uruchomieniowe dla g ++ lub gfortran. Aby pozostać na bezpiecznej stronie, na razie unikaj MinGW-w64.

+0

Tak, widziałem to, nie wiem, jak wiarygodne są te dane. Na przykład w Enthought python libpython27.a nie został pominięty nawet w wersji AMD64. –

1

Problem polega na tym, że używasz 32-bitowego narzędzia dlltool. Prawdopodobnie w C: \ MinGW \ bin zamiast C: \ MinGW64 \ bin. Możesz zmienić ścieżkę lub uruchomić narzędzie 64-bitowe specjalnie jako takie:

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