我已经通过make&& amp;从源代码安装 当我尝试这个样本时: https://github.com/mono/mono/blob/master/samples/embed/teste.c
在编译期间没有发生错误,但是当我运行时我得到了这个:
[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
我无法确定问题所在,任何线索?
答案 0 :(得分:0)
/usr/local/lib
你有什么?如果您在命令--prefix
之前运行autogen.sh
时未使用make
选项,则应在/usr/local/lib
中找到库。您应该在该目录中看到类似这样的内容:
me@mypc:/usr/local/lib$ ls -lah libmono-2.0.*
lrwxrwxrwx. 1 me me 18 dic 19 00:38 libmono-2.0.a -> libmonoboehm-2.0.a
lrwxrwxrwx. 1 me me 19 dic 19 00:38 libmono-2.0.la -> libmonoboehm-2.0.la
lrwxrwxrwx. 1 me me 19 dic 19 00:38 libmono-2.0.so -> libmonoboehm-2.0.so
lrwxrwxrwx. 1 me me 21 dic 19 00:38 libmono-2.0.so.1 -> libmonoboehm-2.0.so.1
lrwxrwxrwx. 1 me me 25 dic 19 00:38 libmono-2.0.so.1.0.0 -> libmonoboehm-2.0.so.1.0.0
如果您在/usr/local/lib
中看到上述库,则问题与ld
搜索库的位置有关。从这个问题:CentOS /usr/local/lib system wide $LD_LIBRARY_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,最好的答案是:CentOS /usr/local/lib system wide $LD_LIBRARY_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)
结束编辑