3

我已经在 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.

如果使用新前缀重新编译单声道是最简单的解决方案,我会走那条路,但希望我可以做些别的事情来让它工作。当您可以重新定位具有所有依赖项的整个程序并且它仍然有效时,这很好。

4

1 回答 1

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
于 2013-03-02T20:57:29.473 回答