mono - 当前缀目录被重新定位时,如何配置 mono 以使用 etc/directory 的正确路径?

标签 mono

我已经在 Linux 上编译了 mono 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.

如果使用新前缀重新编译 mono 是最简单的解决方案,我将采用该路线,但希望我可以做其他事情来使其正常工作。当您可以重新定位整个程序及其所有依赖项并且它仍然可以工作时,这真是太好了。

最佳答案

上述问题的答案是:

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

关于mono - 当前缀目录被重新定位时,如何配置 mono 以使用 etc/directory 的正确路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14452550/

相关文章:

c# - 在 Raspberry PI 上管理 Wifi 连接

c# - 如何使用 Gtk Sharp 和 C# 创建用于在代码中绘图的 Cairo Context

ssl - 在 Mono 上验证 x509 证书(OS X 可信根)

mono - fastcgi-mono-serverX 是否适用于 mono 3.0 和 nginx 1.2.4

c# - System.DllNotFoundException - 如何导入 SO 文件?

Nitrous.io 上的 Mono 框架设置

c# - 应用程序在 Galaxy S3 Mini 中崩溃,但在其他型号中有效

c# - 使用单声道在 mac 上运行的 C# 应用程序中的文件访问问题

mono - 在 Mono 中调试 SIGSEGV

windows - 调用Thread.Abort时finally不执行