我已经在linux上编译了单声道2.10.9和3.0.3,并且希望能够将这些安装移动到不同的位置而无需重新编译。我遇到的问题是mono-sgen在重定位后无法找到etc /目录。有趣的是,使用boehm GC 的mono 能够在重定位后找到该目录。这两个可执行文件的行为有什么不同吗?
我已经能够使用MONO_PATH指定更新的库路径,如下所示:
export MONO_PATH=${PKG_DIR}/lib/mono/4.0:${PKG_DIR}/lib/mono/3.5:${PKG_DIR}/lib/mono/2.0:${PKG_DIR}/lib/mono/compat-2.0
但我仍然坚持让mono-sgen找到etc /目录。我收到的例外是:
ConfigurationErrorsException: Error Initializing the configuration system.
如果使用新前缀重新编译单声道是最简单的解决方案,我将走这条路线,但希望我还能做些其他工作。当你可以重新定位一个包含所有依赖项的整个程序并且它仍然有效时,这很好。
答案 0 :(得分:4)
上述问题的答案是:
export MONO_CONFIG=${PKG_DIR}/etc/mono/config
export MONO_CFG_DIR=${PKG_DIR}/etc
但是,您可能需要设置许多其他环境变量才能使重定位单声道安装完全正常工作。请继续阅读...
我能够让这个工作。事实证明,需要设置许多变量才能使重定位正常工作。以下代码假定单声道安装已移至${PKG_DIR}
。我将所需的所有字体移动到${PKG_DIR}/etc/fonts
,以便在安装移动到其他系统时找到它们。这是我使用的环境变量。其中一些可能没有必要:
export LD_LIBRARY_PATH=$PKG_DIR/lib64:$PKG_DIR/lib:$LD_LIBRARY_PATH
export LD_RUN_PATH=$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=$PKG_DIR/lib64/pkgconfig:$PKG_CONFIG_PATH
export MONO_GAC_PREFIX=${PKG_DIR}
export MONO_PATH=${PKG_DIR}/lib/mono/4.0:${PKG_DIR}/lib/mono/3.5:${PKG_DIR}/lib/mono/2.0:${PKG_DIR}/lib/mono/compat-2.0
export MONO_CONFIG=${PKG_DIR}/etc/mono/config
export MONO_CFG_DIR=${PKG_DIR}/etc
export C_INCLUDE_PATH=${PKG_DIR}/include
export ACLOCAL_PATH=${PKG_DIR}/share/aclocal
export FONTCONFIG_PATH=${PKG_DIR}/etc/fonts
export XDG_DATA_HOME=${PKG_DIR}/etc/fonts
export MONO_REGISTRY_PATH=~/.mono/registry