减少与opencv静态链接的可执行文件的大小
decreasing the size of executable which is statically linked with opencv
我已经编写了这段代码,使用opencv
库从网络摄像头捕获照片。
#include <opencv2/highgui/highgui.hpp>
#include<windows.h>
#include<iostream>
using namespace std;
using namespace cv;
void camcapture()
{
VideoCapture cap(0);
char name[100];
int i=0;
while(1){
Sleep(1000);
sprintf(name,"%s%d.jpg","test",i++);
Mat save_img;
cap >> save_img;
if(save_img.empty())
{
std::cerr << "Something is wrong with the webcam, could not get frame." << std::endl;
}
// Save the frame into a file
imwrite(name, save_img); // A JPG FILE IS BEING SAVED
printf("image %s savedn",name);
}
}
int main()
{
camcapture();
}
然后我静态地链接了一些所需的opencv库,使其可移植。当我编译代码时,可执行文件的大小是4.73,有没有办法在不影响可移植性的情况下减小可执行文件的大小?我不想动态地链接库。这是编译日志。
Build started on: 25-10-2016 at 22:52.58
Build ended on: 25-10-2016 at 22:53.00
-------------- Build: Release in cvtest (compiler: GNU GCC Compiler)---------------
mingw32-g++.exe -Wall -fexceptions -O2 -ID:openopencvmybuild4installinclude -ID:openopencvmybuild4installincludeopencv -ID:openopencvmybuild4installincludeopencv2 -c D:c_cpp_codescvtestmain.cpp -o objReleasemain.o
mingw32-g++.exe -LD:openopencvmybuild4installx86mingwstaticlib -o binReleasecvtest.exe objReleasemain.o -s D:openopencvmybuild4liblibopencv_world310.a D:openopencvmybuild43rdpartylibliblibjpeg.a D:openopencvmybuild43rdpartylibliblibwebp.a D:openopencvmybuild43rdpartylibliblibtiff.a D:openopencvmybuild43rdpartylibliblibpng.a D:openopencvmybuild43rdpartylibliblibjasper.a D:openopencvmybuild43rdpartyliblibIlmImf.a D:openopencvmybuild43rdpartyliblibzlib.a C:MinGWlibVfw32.Lib C:MinGWlibUuid.Lib C:MinGWlibOle32.Lib C:MinGWlibOleAut32.Lib
Output file is binReleasecvtest.exe with size 4.73 MB
Process terminated with status 0 (0 minute(s), 1 second(s))
0 error(s), 0 warning(s) (0 minute(s), 1 second(s))
这取决于您想如何使用它。除了注释中的响应,您还可以使用可执行的打包程序,如UPX。
相关文章:
- CMake:如何将库 A 链接到库 B,然后将可执行文件链接到库 A
- 如果包含映射的静态库与可执行文件和动态库链接,静态映射(变量)是否会被多次释放?
- 为什么C++可执行文件在与较新的libstdc++.so链接时运行得更快?
- 在链接可执行文件之前查找静态库未解析的依赖项
- mingw32-make 使用"MinGW Makefiles"生成器跟踪 CMAKE 无法将可执行文件链接到对象库
- python37.dll在可执行文件中未链接
- 调用函数一次用于动态链接库,一次从可执行文件调用函数
- 使用共享库编译可执行文件时仅链接所需的符号
- 使用 MINGW 和 CPLEX 库链接从 Linux 编译 Windows 可执行文件
- 将我的主输出库与测试可执行文件链接时出现问题
- cmake:构建可执行文件并库并链接它们
- 在可执行文件中使用带有符号链接的相对路径
- 使用LTO静态链接的可执行文件(链接时间优化):如何使用以前构建的库进行制作
- 将 CLANG 构建的可执行文件与 G++-v6 构建的 Boost 库链接时出错
- 当使用rpath时,C++可执行文件无法找到动态链接的共享库
- cusparse功能的多个定义错误在链接可执行文件中的cuda文件时
- GTEST测试项目链接链接到其他可执行文件
- Cmake不会将共享库的链接依赖关系传播到我的可执行文件
- G++:无法与主可执行文件链接
- 是否可以在运行时将可执行文件链接到具有相对路径的共享库