2014-05-12 50 views
3

我编译了casablanca并已将-l:/~/path/to/lib/libcasablanca.so放入我的CMakeList.txt中。我已经构建了我的应用程序,并且没有任何错误。但是,当我运行可执行文件,它说:Linux:可执行文件找不到共享库

./myproj: error while loading shared libraries: libcasablanca.so: cannot open shared object file: No such file or directory 

我已经做了另一台计算机上,它似乎很好地工作。

有谁知道这是什么问题?如何解决这个问题?

我没有管理员访问这台机器。

回答

4

这很简单:您的库不在它们的默认系统路径中,导入共享库。编译期间,编译脚本解决了这些问题。 Inr没有时间,你有LD_PRELOADLD_LIBRARY_PATH环境变量。

例如:一个export LD_LIBRARY_PATH=/home/darkside/wunderprog/lib将扩展directoried搜索您的库与指定的目录。如果有你的libcasablanca.so,你会得到你想要的。

通常我在我的专用帐户中使用/home/<myusername>/lib目录,并从.profile设置LD_LIBRARY_PATH

+0

如果我执行'export LD_LIBRARY_PATH = /〜/ path/to/lib',它是否会删除变量中存在的值?或者什么都没有? –

+0

@thedarksideofthemoon是的,但通常它是空的(系统共享库搜索路径不存在)。如果你在那里有一些重要的东西,你可以给他一个以冒号分隔的路径列表,就像我们在'$ PATH'中看到的那样:'export LD_LIBRARY_PATH =/home/darkmoon/lib:/ home/darkmoon/some_another/lib'。或者就这样。 – peterh