Bạn đang không làm bất cứ điều gì không đúng, MinGW-xây dựng công trình theo cách đó bạn.
Gần đây tôi đã vấp vào điều này, nhưng vì lý do khác:
MinGW-xây dựng tự động liên kết thực thi để GCC thư viện động (libwinpthread-1.dll, libstdC++ - 6.dll, libgcc_s_dw2-1.dll) để lưu kích thước thực thi (vấn đề: khi bạn phát hành các tệp thi hành, bạn phải nhớ thêm các tệp dll bị thiếu cùng với tệp nhị phân của bạn vì không có người dùng bảo đảm có các DLL đó trên hệ thống của họ)
Trong trường hợp của tôi, tôi có nhiều GCC pakcages trên cùng một hệ thống và do đó tôi không thêm chúng vào PATH để tránh xung đột tên. Một phần thú vị là CMAKE trước khi cấu hình dự án của bạn tạo ra một C-SourceFile được biên dịch và sử dụng để nhận thông tin về trình biên dịch của bạn, vì DLL không có trong PATH, thực thi nhỏ do CMake tạo ra đã bị lỗi do thiếu DLL và điều đó đã ngăn chặn toàn bộ quá trình xây dựng.
Giải pháp khắc phục là thêm đường dẫn trình biên dịch vào PATH TEMPORARILY (hoặc chạy CMake tốt hơn trong môi trường khác).
Thêm DLL thủ công vào thư mục tạm cmake không hoạt động vì cmake dọn dẹp thư mục đó ở mỗi cấu hình ..
Nếu bạn sử dụng mingwbuilds bạn phải liên kết đến pthreadBLAH.dll không workaround
Tôi không biết lý do tại sao 'tùy chọn -Bstatic' dường như không làm việc, nhưng có thể bạn có thể nhận được những gì bạn muốn bằng cách xác định các tập tin thư viện cụ thể thay vì để' tìm kiếm ld' cho nó: http : //stackoverflow.com/a/14494371/12711 –
Trong bản phân phối MinGW của tôi, kho lưu trữ tĩnh được gọi là 'libpthread.a' (vâng, cái động là' libwinpthread-1.dll' quá), do đó tôi muốn sử dụng '-lpthread'.Có lẽ điều tương tự cũng hợp lệ với bạn. –
Có thể trùng lặp của [làm thế nào để làm liên kết tĩnh của libwinpthread-1.dll trong mingw?] (Https://stackoverflow.com/questions/13768515/how-to-do-static-linking-of-libwinpthread-1-dll -in-mingw) –