When compiling with MinGW, I have to copy over certain dll files from the MinGW bin directory before the exe will run (Even when using "-static" and/or "-static-libstdc++".) How do I change that? Is there a special build of MinGW that I have to use? Ultimately I want to be able to run the program with nothing but the exe in the directory (and no windows environment variables set.) These File's are:
- libstdc++-6.dll
- libgcc_s_seh-1.dll
- libwinpthread-1.dll
And here is the complete list of step's I fallow:
- Open Up Code::Blocks
- Select "File->New->Project->Console"
- Fill out the project settings for project "Hello World"
- Right click Project->Build Options...->Hello World (Root target)->Other Options
- Enter "-static" (or "-static-libstdc++") under the already set "-fexceptions"
- CTRL-F9 : Build Project (Without executing)
- Navigate to, in Windows Explorer, and run the built "Hello World.exe" file.
- Click "OK" when a message pop's up saying "Error: libstdc++-6.dll is missing from your computer."
- Copy "libstdc++-6.dll" from the /MinGW/bin/ directory, into the "Hello World.exe" directory.
- Run "Hello World.exe"
- Click "OK" for the message saying "Error: libgcc_s_seh-1.dll is missing from your computer."
- Copy "libgcc_s_seh-1.dll" into the "Hello World.exe" directory.
- Repeat and end up copying "libwinpthread-1.dll" over aswell.
View the message
Hello World!
Edit: My command line is:
g++.exe -Wall -fexceptions -static -static-libgcc -static-libstdc++ -g -static-libgcc -static-libstdc++ -L. -c "C:Users\______DesktopHello Worldmain.cpp" -o objDebugmain.o
g++.exe -o "binDebugHello World.exe" objDebugmain.o
With all the dll files mentioned above required. And, just to be safe, the code is:
// main.cpp
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
return 0;
}
See Question&Answers more detail:os