在使用MinGW进行编译时,我必须在运行exe之前从MinGW bin目录复制某些dll文件(即使使用"-static"和/或"-static-libstdc ++").如何更改?我必须使用MinGW的特殊版本吗?最终我希望能够在目录中运行除了exe之外的程序(并且没有设置windows环境变量).这些文件是:
以下是我休闲的完整步骤列表:
查看邮件
Hello World!
Run Code Online (Sandbox Code Playgroud)编辑: 我的命令行是:
g++.exe -Wall -fexceptions -static -static-libgcc -static-libstdc++ -g -static-libgcc -static-libstdc++ -L. -c "C:\Users\______\Desktop\Hello World\main.cpp" -o obj\Debug\main.o
g++.exe -o "bin\Debug\Hello World.exe" obj\Debug\main.o
Run Code Online (Sandbox Code Playgroud)
需要上面提到的所有dll文件.并且,为了安全起见,代码是:
// main.cpp
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
mos*_*o-x 44
你的命令错了!
转到main.cpp文件所在的目录,然后尝试以下操作.
g++.exe -Wall -c -g main.cpp -o obj\Debug\main.o
g++.exe -static -static-libgcc -static-libstdc++ -o "bin\Debug\Hello World.exe" obj\Debug\main.o
Run Code Online (Sandbox Code Playgroud)
那么你将不再需要复制DLL(用于你的Hello World程序).
其他说明:
MinGW安装说明建议进行设置
c:\minGW;c:\MinGW\bin;
Run Code Online (Sandbox Code Playgroud)
到PATH环境变量.
通常是
-static -static-libgcc -static-libstdc++
Run Code Online (Sandbox Code Playgroud)
链接器选项应该工作(一次尝试所有3个).但不是libwinpthread-1.dll
.
另外,请clean
在重新编译之前尝试.
没有"-static-something"命令.
只能将标准库libgcc和libstdc ++设置为静态链接.
对于其他库,首先使用"-static"切换到静态链接,然后列出要包含单独命令的库,即"-lpthread".
Cmake用户应该尝试添加:
set(CMAKE_CXX_STANDARD_LIBRARIES "-static-libgcc -static-libstdc++ -lwsock32 -lws2_32 ${CMAKE_CXX_STANDARD_LIBRARIES}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-Bstatic,--whole-archive -lwinpthread -Wl,--no-whole-archive")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
45843 次 |
最近记录: |