MinGW를 사용하여 Linux에서 간단한 Windows 애플리케이션을 컴파일하고 싶습니다.
나는 그것을 다음과 같이 컴파일한다:
x86_64-w64-mingw32-g++ -L. -l:mathlib.dll -o fib main.cpp mathlib.h
fib
그러면 N번째 피보나치 수를 계산하기 위해 가져온 함수를 사용하는 실행 파일이 생성됩니다 mathlib.dll
.
이제 fib
Windows에서 실행하면 불평 libgcc_s_seh-1.dll
하고 libstdc++-6.dll
잃습니다.
이러한 DLL을 Windows에 복사하면 모든 것이 잘 작동하지만 이러한 MinGW 종속성을 모든 실행 파일에 복사하고 싶지는 않습니다.
foo
이러한 MinGW 종속성을 정적으로 연결하여 다른 DLL에 종속되지 않도록 하려면 어떻게 해야 합니까 mathlib.dll
?
답변1
mathlib.dll
및 옵션을 사용하여 -static-libgcc
프로그램을 빌드합니다(필요한 경우) -static-libstdc++
.
x86_64-w64-mingw32-g++ -static-libgcc -static-libstdc++ -L. -l:mathlib.dll -o fib main.cpp mathlib.h
이렇게 하면 외부 DLL에 의존하지 않는 libgcc
바이너리가 생성됩니다 libstdc++
.