加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

在Windows上使用mkbundle创建C#可执行文件

发布时间:2020-12-13 20:44:51 所属栏目:Windows 来源:网络整理
导读:我试图从控制台应用程序创建一个可执行文件. 我已经安装了mono,cygwin(mingw-gcc,mingw-zlib1,mingw-zlib-devel,pkg-config),我已将以下行添加到我的.bashrc文件中 export PKG_CONFIG_PATH=/cygdrive/c/progra~1/Mono-3.2.3/lib/pkgconfigexport PATH=$PATH:
我试图从控制台应用程序创建一个可执行文件.
我已经安装了mono,cygwin(mingw-gcc,mingw-zlib1,mingw-zlib-devel,pkg-config),我已将以下行添加到我的.bashrc文件中
export PKG_CONFIG_PATH=/cygdrive/c/progra~1/Mono-3.2.3/lib/pkgconfig
export PATH=$PATH:/cygdrive/c/progra~1/Mono-3.2.3/bin
export CC="i686-pc-mingw32-gcc -U _WIN32"

但每次我尝试使用mkbundle时,我都会收到以下消息

有没有办法让mkbundle在Windows上正常工作.?

(我使用的是Windows 7 x86,mono 3.2.3,我在官方网站上找到的cygwin,xamarin studio 4.2和net framwork 4)

在Windows下的当前单声道版本中仍然存在此问题.这是因为单声道团队将默认GC切换到SGEN.因此,当您尝试使用mkbundle时,您可以在错误中看到mkbundle实用程序尝试查找mono-2库,但此lib未包含在安装程序中且您有失败.要解决此问题,您应该将mkbundle配置为使用libmonosgen-2.0而不是mono-2.我们试着这样做.

关键时刻是设置此变量:

export PKG_CONFIG_PATH=/cygdrive/c/progra~1/Mono-3.2.3/lib/pkgconfig

如果你去这个目录,你会看到很多* .pc文件(包配置).此文件负责在捆绑过程中配置链接库.由于某些原因,mono team硬编码包配置文件和库到mono-2(参见this第492行).如果不重建mkbundle我们怎么能解决它?解决方案是使用下一个bundle脚本:

# Mono paths
mono_version="3.2.3"
export MONO=/cygdrive/c/progra~2/Mono-$mono_version
machineconfig=$PROGRAMFILESMono-$mono_versionetcmono4.5machine.config
export PATH=$PATH:$MONO/bin
export PKG_CONFIG_PATH=$MONO/lib/pkgconfig
# Compiller
export CC="i686-pc-mingw32-gcc -U _WIN32"
# Output file name
output_name=Prog.exe
# Produce stub only,do not compile
mkbundle --deps --machine-config "$machineconfig" -c Program.exe
# Produce helper object file. You may see errors at this step but it's a side effect of this method.
mkbundle --deps --machine-config "$machineconfig" -oo temp.o Program.exe
# Compile. Pay attention where I use monosgen-2 
i686-pc-mingw32-gcc -U _WIN32 -g -o "$output_name" -Wall temp.c `pkg-config --cflags --libs monosgen-2` temp.o
# Copy libmonosgen-2.dll
cp $MONO/bin/libmonosgen-2.0.dll .
# Run
./$output_name

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读