当我尝试以下示例时,我已经通过make && make在centos 6上安装了mono。
在编译过程中没有发生错误,但是当我运行时,我得到了以下内容:
[root@WOH_Test t01]# gcc -o teste teste.c `pkg-config --cflags --libs mono-2` -lm
[root@WOH_Test t01]# mcs test.cs
[root@WOH_Test t01]# ./teste test.exe
./teste: error while loading shared libraries: libmonoboehm-2.0.so.1: cannot open shared object file: No such file or directory我不知道问题出在哪里,有什么线索吗?
发布于 2015-01-07 14:33:15
/usr/local/lib里有什么?如果在命令--prefix之前运行autogen.sh时没有使用make选项,那么库应该定位在/usr/local/lib中。您应该在该目录中看到如下所示:
me@mypc:/usr/local/lib$ ls -lah libmono-2.0.* lrwxrwxrwx。1我18 dic 19 00:38 libmono-2.0 a -> libmonoboehm 2.0 a lrwxrwxrwx.1我我19 dic 19 00:38 libmono-2.0.la -> libmonoboehm 2.0.la lrwxrwxrwx.1我我19 dic 19 00:38 libmono-2.0.所以-> libmonoboehm 2.0.1我21 dic 19 00:38 libmono-2.0.so.1 -> libmonoboehm 2.0.so.1 lrwxrwxrwx.1我25 dic 19 00:38 libmono-2.0.so.0.0 -> libmonoboehm 2.0.so.1.0.0/usr/local/lib中看到上面的库,那么您的问题与ld在哪里搜索库有关。从这个问题来看:PATH,我猜Centos6在默认情况下没有/usr/local/lib的配置。如果是您的情况,只需在这个问题中使用所提供的解决方案(它们中的任何一个),您的程序就会正常工作。编辑
从您的评论中可以看出,如果您希望libmonoboehm-2.0.so.1在与teste程序相同的路径上,并且您不想在Centos6中接触其他任何内容,那么您可以执行如下操作:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/teste/binary
./teste test.exe但是,我想知道当您运行以下命令时,有什么输出:pkg-config --cflags --libs mono-2 (好像您的Centos6中已经安装了一个单点安装)
无论如何,如果您可以修改您的Centos6,最好的答案是:PATH。这样做一次,就可以运行任何mono程序,而不必处理LD_LIBRARY_PATH环境变量。在您的情况下,您应该执行以下操作:
1. Edit /etc/ld.so.conf
2. Write this: /opt/mono/lib
3. Run ldconfig -v as root
4. Your Centos6 is ready to run your mono programs whenever you wish (even if you restart your Centos6 machine)结束编辑
https://stackoverflow.com/questions/27810767
复制相似问题