2010-04-28 14 views
8

Chcę zbudować bibliotekę statyczną (plik * .LIB) GNU libiconv w oknach, które będą używane z innymi bibliotekami w Visual C++. Inne biblioteki, których używam, są zbudowane z opcją "MultiThreaded DLL" (/ MD) Runtime. Tak więc muszę zbudować libiconv z tą samą opcją.Jak zbudować gnu `libiconv` na i dla systemu Windows?

Problem to libiconv używa systemu kompilacji GNU i chcę skompilować z opcją/MD. Można zobaczyć strukturę źródłowego libiconv tutaj:
http://cvs.savannah.gnu.org/viewvc/libiconv/?root=libiconv

Pan Zlatković utrzymuje port oknach GNU libiconv dla libxml2

można je zobaczyć tutaj:

ftp://xmlsoft.org/libxml2/win32/iconv-1.9.2.win32.zip

Nie mogę korzystać jego port. Muszę zbudować z najnowszej wersji libiconv-1.13. Zastanawiam się, jak ten facet go przeportował? Czy ktoś może mi powiedzieć, jak skompilować plik * .lib i skompilować go za pomocą MSVC?

EDIT:

Faktycznie, muszę zbudować kilka dodatkowych bibliotek GNU z tymi samymi ustawieniami. Tak więc, jeśli otrzymam rozwiązanie dla jednej biblioteki. Mogę zrobić to samo dla wszystkich innych.

Odpowiedz

1

Jestem OP. MSYS to dokładnie to, czego szukałem.

Wystarczy zainstalować MinGW & MSYS która zawiera powłokę sh.exe & make.exe z którego można skonfigurować i wygenerować Makefile Po tym można użyć make.exe aby go uruchomić.

To takie proste.

1

skompiluj je używając MinGW, używając Msys do środowiska, jeśli to konieczne. Pliki .GWG są najwyraźniej, zgodnie z listą mailingową, takim samym formatem jak pliki .lib (wystarczy zmienić nazwę). Najpierw sprawdź, czy biblioteka statyczna iconv jest już dołączona do pliku/systemu plików MinGW.

Edycja: jest to w Msys (C: \ Msys \ 1.0 \ Mb), wraz z:

  • libiconv.a
  • libiconv.dll.a
  • libiconv.la

i dodatkowo

  • libiconv-2.dll (C: \ Msys \ 1.0 \ lokalne \ pojemnika)

Edycja: czy jest tutaj, potrzebne libiconv? te wersje wydają się mieć pliki make MSVC :) http://www.opensource.apple.com/source/libiconv/

+0

ale w jaki sposób uruchomić './Configure', który jest skryptem powłoki? Co więcej, w jaki sposób dałbym opcję Runtime "MultiThreaded DLL" do kompilatora g ++ MinGW. – claws

+0

Być może nie spotkasz się z tym samym problemem z zestawem narzędziowym MinGW, którego programista próbuje uniknąć. Zasadniczo opcja wielowątkowa dla kompilatora/konsolidatora MSVC pozwala bibliotece DLL na używanie wielu stert zamiast pojedynczego sterty, od szybkiego spojrzenia i zapobiega pojawianiu się problemów. –

+0

Cóż, nie mogę używać łańcucha narzędzi GNU dla całego projektu. Ponieważ 1. Nie jestem zaznajomiony z MinGW 2. Używam MFC i 3. wszystkie inne biblioteki są w porządku z MSVC i mam je skompilowane w MSVC. Potrzebuję tylko sposobu na skompilowanie bibliotek gnu dla Windows. ważne pytanie brzmi, w jaki sposób "./configure" wykonać, aby utworzyć plik Makefile? Również nie mogę użyć skompilowanego pliku lib dla libiconv, ponieważ sam skompiluję to. Użyję tej samej metody do kompilacji innych wymaganych gnu-lib. – claws

3

Mały dodatek do twojej odpowiedzi. Miałem ten sam problem i stwierdziłem, że rozwiązanie MinGW + MSYS było doskonałe.

Chociaż, musiałem pójść trochę dalej i wygenerować również.plik lib, aby móc połączyć się z wynikową biblioteką dll.

To co znalazłem:

  • wygenerować plik .def z dll z DUMPBIN (a narzędzia Visual Studio).

  • wygenerować plik .lib z .def z programem lib (narzędzie Visual Studio zbyt)

To pozwala określić pewne flagi link, jeśli to właściwe. Wszystko szczegółowo tutaj (nie jestem autorem tej metody): http://wiki.videolan.org/GenerateLibFromDll

ja też sobie sprawę, że to lib/dll para może być powiązana z obu bibliotek MD i MDD.

Mam nadzieję, że pomoże to osobom, które znajdą ten wpis, tak jak mi pomogło.

-David

Powiązane problemy