首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌入单样本:加载共享库时出错:libmonoboehm 2.0.so.1

嵌入单样本:加载共享库时出错:libmonoboehm 2.0.so.1
EN

Stack Overflow用户
提问于 2015-01-07 02:54:05
回答 1查看 1.5K关注 0票数 1

当我尝试以下示例时,我已经通过make && make在centos 6上安装了mono。

在编译过程中没有发生错误,但是当我运行时,我得到了以下内容:

代码语言:javascript
复制
[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

我不知道问题出在哪里,有什么线索吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-07 14:33:15

  1. 你在/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
  2. 如果您可以在/usr/local/lib中看到上面的库,那么您的问题与ld在哪里搜索库有关。从这个问题来看:PATH,我猜Centos6在默认情况下没有/usr/local/lib的配置。如果是您的情况,只需在这个问题中使用所提供的解决方案(它们中的任何一个),您的程序就会正常工作。

编辑

从您的评论中可以看出,如果您希望libmonoboehm-2.0.so.1在与teste程序相同的路径上,并且您不想在Centos6中接触其他任何内容,那么您可以执行如下操作:

代码语言:javascript
复制
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环境变量。在您的情况下,您应该执行以下操作:

代码语言:javascript
复制
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)

结束编辑

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27810767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档