2010-10-15 40 views
6

Tôi có chương trình C tôi biên dịch với mingw trên Windows. Nó hoạt động tốt nhưng yêu cầu MSVCRT.DLL. Tôi muốn liên kết tĩnh (như tôi có thể làm trong Visual Studio). Điều này có thể không?Tôi có thể liên kết MSVCRT tĩnh với mingw không?

Tôi đã thử sử dụng -static cờ đến gcc và không thực hiện bất kỳ thay đổi nào.

Còn chương trình C++ sử dụng thư viện chuẩn C++ thì sao?

+0

về câu hỏi cuối cùng của bạn ... nếu bạn đang nói về STL, đó chỉ là tiêu đề. –

+0

@Armen: nhưng isnt cũng có DLL cho C + + MSVCPT hoặc một cái gì đó như thế? – zaharpopov

+0

Lưu ý rằng MSVCRT.DLL được bao gồm như là một thành phần hệ thống trong khá nhiều phiên bản Windows bạn thường có khả năng gặp phải. Đặc biệt, bạn không cần phải phân phối nó với ứng dụng của bạn bởi vì người dùng cuối của bạn đã có nó. Một câu hỏi tự nhiên là tại sao bạn cần phải tránh liên kết động với nó? – RBerteig

Trả lời

7

Tôi tin rằng MinGW không sử dụng thư viện thời gian chạy tĩnh vì lý do bản quyền.

Bạn có lẽ có thể thử sử dụng newlib (http://sourceware.org/newlib/) để tạo ra một thực thi điều đó không có liên kết đến msvcrt.dll

+1

+1 để tránh né bản quyền. Đó là một tác dụng phụ thông minh của nó đã được trên tất cả các hệ thống Windows. Các chương trình được xây dựng với MinGW yêu cầu nó, nhưng không bao giờ phải phân phối nó. Do đó, không có vấn đề bản quyền. – RBerteig

+1

Ngay cả khi tôi Không sử dụng bất kỳ chức năng C std nào trong mã, nó yêu cầu MSVCRT Tôi nghĩ rằng các mã khởi động/dọn dẹp CRT chạy trước/sau chính. newlib cũng cung cấp điều đó? – zaharpopov

-2

Liên kết với gcc -static -static-libgcc -static-libstdc++ và bạn sẽ không cần libgcc_s_dw2-1.dlllibstdc++-6.dll

+0

Downvoting một câu trả lời như thế này mà không cần giải thích là không thực sự hữu ích. Không có lý do rõ ràng tại sao câu trả lời này là bị lỗi. – JBentley

+1

Làm thế nào về nguyên nhân này không có tác dụng loại bỏ msvcrt.dll từ phụ thuộc nhị phân được tạo ra? – paulm

+0

bởi vì nó vẫn sẽ cần msvcrt.dll – sherpya

0

Sau khi trải qua một thời gian tìm kiếm cho chính bản thân mình, tôi đã xem qua số this post giới thiệu Thư viện Thời gian chạy thay thế Mingw32 C. Tuy nhiên, nó chưa sẵn sàng để sử dụng và nhà phát triển dường như đã từ bỏ nó. Home page link here.

Đăng câu trả lời này ở đây với hy vọng rằng nó sẽ hữu ích cho những người googling tại một số điểm trong tương lai.

Các vấn đề liên quan