我的项目使用 CMake 并且在 Ubuntu 16.04 上编译没有问题。
启动编译的应用程序时,我收到消息无法打开共享对象文件。
所有共享对象库都可以在同一个非标准文件夹中使用(我在那里需要它们)。
ldd输出显示大多数共享对象都可以找到。这里有些例子:
libboost_filesystem.so.1.55.0 => /path/to/libs/boost/lib/libboost_filesystem.so.1.55.0 (0x00007f2ed1fa0000)
libboost_filesystem.so.1.55.0 => /path/to/libs/boost/lib/libboost_filesystem.so.1.55.0 (0x00007f96af1f5000)
libboost_program_options.so.1.55.0 => /path/to/libs/boost/lib/libboost_program_options.so.1.55.0 (0x00007f96aef85000)
libboost_system.so.1.55.0 => /path/to/libs/boost/lib/libboost_system.so.1.55.0 (0x00007f96aed80000)
Run Code Online (Sandbox Code Playgroud)
由于某种原因,其他一些无法找到。例如:
libboost_iostreams.so.1.55.0 => not found
libboost_chrono.so.1.55.0 => not found
Run Code Online (Sandbox Code Playgroud)
还有其他非 boost 库显示相同的行为,但为了简单起见,我只展示 boost 示例。
以下是已经成功运行的解决方法。但我对“我需要什么”部分中的两点非常感兴趣。
我正在研究中心.我在我的系统上安装了升级版本1.45.0.程序编译正确,但每当我键入命令查看输出时,它会给出以下错误:
./a.out:加载共享库时出错:libboost_thread.so.1.45.0:无法打开共享对象文件:没有这样的文件或目录
我有环境变量的问题LD_LIBRARY_PATH.
当我运行我的bin时,我收到以下错误消息:
./bignum:加载共享库时出错:liballjoyn.so:无法打开共享对象文件:没有这样的文件或目录
我添加了我的库LD_LIBRARY_PATH,如:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:'/home/nyu-debian/Desktop/Stage-Kaliterre/Project/Projects/AllJoyn/core/alljoyn/build/linux/x86_64/release/dist/cpp/lib/liballjoyn.so'
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
put -L 选项 - 不工作.export通过env与中端./bignum -不工作.我的所有尝试都没有用......我还能尝试什么?
我在Debian Wheezy.这个命令上周末工作,但现在它不再起作用了.
我正在使用Boost 1.66在Ubuntu 17.04系统上安装caffe。我能够执行make all并且make test没有问题:
me@icvr1:~/PackageDownloads/caffe$ make all
make: Nothing to be done for 'all'.
me@icvr1:~/PackageDownloads/caffe$ make test
make: Nothing to be done for 'test'.
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试时make runtest,出现以下错误:
me@icvr1:~/PackageDownloads/caffe$ make runtest
.build_release/tools/caffe
.build_release/tools/caffe: error while loading shared libraries: libboost_system.so.1.66.0: cannot open shared object file: No such file or directory
Makefile:532: recipe for target 'runtest' failed
make: *** [runtest] Error 127
Run Code Online (Sandbox Code Playgroud)
现在,我知道libboost_system.so.1.66.0存在于/usr/local/lib中(我认为)是一个相当标准的位置:
me@icvr1:~/PackageDownloads/caffe$ ls /usr/local/lib/libboost_system*
/usr/local/lib/libboost_system.a /usr/local/lib/libboost_system.so /usr/local/lib/libboost_system.so.1.66.0
Run Code Online (Sandbox Code Playgroud)
并且,在caffe中Makefile.config,/usr/local/lib …