准备MXE运行环境
1 | # Debian系下编译,编译32位的话还需要安装:g++-multilib libc6-dev-i386 |
获取MXE并构建静态库
1 | # 可设置代理来加速下载 |
用生成的库交叉编译MXE项目中不存在的新包
- 配置相关环境变量
1 | export PATH=$PATH:/home/leux/mxe/usr/bin |
- 使用autotools的项目可如下调用MXE生成的库
1 | ./configure --host=i686-w64-mingw32.static |
- 交叉编译静态库需先强制构建其依赖的静态库
1 | ./configure --host=i686-w64-mingw32.static --enable-static --disable-shared |
- 使用cmake构建的项目需要使用编译链的cmake
1 | i686-w64-mingw32.static-cmake ... |
- 交叉编译普通的Makefile项目
1 | # 可能需要添加其他一些命令,具体取决于您的项目 |
- 如果需要静态编译某程序,一般这些是不可少的
-static-libgcc -lstdc++ -lgcc_eh -lpthread -static
- 其他MXE中相关的信息
1 | make gtk3 -j 8 MXE_TARGETS='x86_64-w64-mingw32.static' MXE_USE_CCACHE= |
使用MXE项目静态编译CAIRO图形库
- 编译Cairo静态库并获取静态编译所需的参数
1 | make cairo -j 8 MXE_TARGETS='x86_64-w64-mingw32.static' PREFIX=/home/leux/cairo |
- 使用MinGW64在Windows下静态编译Cairo程序
1 | # 添加MinGW64到Windows系统变量 |
- 静态编译时的错误情况
1 | C:\Users\leux\Desktop>gcc taichi_png.c -o taichi.exe -pthread -mms-bitfields -DPCRE_STATIC -ID:\cairo\include\cairo -ID:\cairo\include\glib-2.0 -ID:\cairo\lib\glib-2.0\include -ID:\cairo\include\pixman-1 -ID:\cairo\include\freetype2 -ID:\cairo\include\libpng16 -ID:\cairo\include -LD:\cairo\lib -lcairo -lz -lmsimg32 -lgdi32 -lpixman-1 -lz -lmsimg32 -lgdi32 -lpixman-1 -lgobject-2.0 -lintl -liconv -lffi -lglib-2.0 -lintl -liconv -pthread -lws2_32 -lwinmm -lm -lole32 -lshlwapi -luuid -lpcre -lpixman-1 -lfontconfig -lexpat -lfreetype -lbz2 -lpng16 -lz -lpng16 -lz -static-libgcc -lstdc++ -lgcc_eh -static |
使用MXE项目静态编译GTK3图形库
- 编译GTK3静态库并获取静态编译所需的参数
1 | make gtk3 -j 8 MXE_TARGETS='x86_64-w64-mingw32.static' PREFIX=/home/leux/gtk3 |
- 使用MinGW64在Windows下静态编译GTK3程序
1 | # 添加MinGW64到Windows系统变量 |
- 静态编译时的错误情况
1 | ################################################# |