2010-10-15 19 views
6

Mam program C kompilacji z mingw w systemie Windows. Działa dobrze, ale wymaga MSVCRT.DLL. Chcę połączyć to statycznie (tak jak mogę zrobić w Visual Studio). czy to możliwe?Czy mogę połączyć MSVCRT statycznie z mingw?

Próbowałem flagi -static do gcc i nie wprowadzono żadnych zmian.

Co z programem C++ wykorzystującym również standardową bibliotekę C++?

+0

o twoim ostatnim pytaniu ... jeśli mówisz o STL, jest to tylko nagłówek. –

+0

@Armen: ale nie ma tam również DLL dla C++ MSVCPT czy coś takiego? – zaharpopov

+0

Należy zauważyć, że plik MSVCRT.DLL jest zawarty jako składnik systemu w niemal każdej wersji systemu Windows, z którą zazwyczaj można się zetknąć. W szczególności nie trzeba rozpowszechniać go w aplikacji, ponieważ użytkownicy końcowi już ją mają. Naturalnym pytaniem jest zatem, dlaczego należy unikać dynamicznego powiązania z nim? – RBerteig

Odpowiedz

7

Wierzę, że MinGW nie korzysta ze statycznej biblioteki uruchomieniowej ze względu na prawa autorskie.

Możesz być może spróbować użyć newlib (http://sourceware.org/newlib/), aby utworzyć plik wykonywalny, które nie odwołują się do msvcrt.dll

+1

+1 w celu uniknięcia naruszenia praw autorskich. To sprytny efekt uboczny tego, że jest już w każdym systemie Windows. Programy zbudowane przy pomocy MinGW tego wymagają, ale nigdy nie muszą go dystrybuować. W związku z tym nie ma problemów z prawami autorskimi. – RBerteig

+1

Nawet jeśli nie używam żadnej std funkcji C w kodzie, to wymaga MSVCRT Myślę, że dla CRT uruchamiania/czyszczenia kodów, które działają przed/po głównym. newlib również to zapewnia? – zaharpopov

-2

Linków gcc -static -static-libgcc -static-libstdc++ i nie trzeba będzie libgcc_s_dw2-1.dll i libstdc++-6.dll

+0

Złożenie takiej odpowiedzi bez wyjaśnienia nie jest zbyt pomocne. Nie ma oczywistego powodu, dla którego ta odpowiedź jest błędna. – JBentley

+1

Co powiesz na to, że nie ma to wpływu na usuwanie msvcrt.dll z wygenerowanych zależności binarnych? – paulm

+0

, ponieważ nadal będzie potrzebować msvcrt.dll – sherpya

0

Spędził trochę czasu szukając dla tego osobiście natknąłem się na this post, wprowadzając w toku Mingw32 Alternate C Runtime Library. Jednak nie jest gotowy do użycia, a programista prawdopodobnie go porzucił. Home page link here.

Umieszczanie tej odpowiedzi tutaj, w nadziei, że przyda się osobom, które w pewnym momencie będą szukały informacji w Google.

Powiązane problemy