编译mono 6.4遇到的问题

起因

本来不想手动编译Mono 6.4,因为现在Mono和.Net Core同步发布新版本,在9月份发布.Net Core 3.0和Mono 6.4,因为.Net Core 3.0不是长期支持的版本,.Net Core 3.1才是长期支持的版本,加上3.0是一个大的更新版本,才是还有问题的.当然开发新项目是可以用3.0来做的,后期可以很方便的切换到3.1中. 回到重点上来.Mono 6.4配置文件发生了变化.造成生成的静态库文件是带调试信息的.这里是简单粗暴进行处理的.

开始(环境为MingW)

如果是首次从github获取的代码. 先执行如下命令:
./autogen.sh --prefix=/e/opensource/mymono/ --host=x86_64-w64-mingw32 --disable-boehm CFLAGS=-O2   CXXFLAGS=-O2

后面执行:

./configure --prefix=/e/opensource/mymono/  --bindir=/e/opensource/mymono/mono/  --host=x86_64-w64-mingw32 --disable-boehm CFLAGS=-O2   CXXFLAGS=-O2

上面命令执行结束.接着执行:

make  && make install

正常情况下,应该是静态库文件已经去掉了调试信息.在查看生成libmonosgen-2.0.a文件竟然为50多兆大小.

在生成的Makefile看到CFLAGS和CXXFLAGS竟然带有-g 标志,这里采用的笨方法.就是修改configure文件中CFLAGS和CXXFLAGS的参数.在重新生成Makefile.

Mono 6.0 和 Mono 6.4 静态库文件对比


秋风 2019-10-22