使用提升时出现问题,无法打开共享对象文件
Trouble using boost, cannot open shared object file
所以我正在尝试编译并运行一个简单的升压计时器程序
#include <iostream>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
int main() {
using namespace boost::asio;
io_service io;
deadline_timer t(io, boost::posix_time::seconds(5));
t.wait();
std::cout << "Hello World!" << std::endl;
return 0;
}
编译该程序时我尝试的第一件事就是做
g++ -I /home/vagrant/boost_1_60_0 main.cpp
这给了我一个错误
/tmp/cc8Ytqko.o: In function `__static_initialization_and_destruction_0(int, int)':
main.cpp:(.text+0xfc): undefined reference to `boost::system::generic_category()'
main.cpp:(.text+0x108): undefined reference to `boost::system::generic_category()'
main.cpp:(.text+0x114): undefined reference to `boost::system::system_category()'
/tmp/cc8Ytqko.o: In function `boost::system::error_code::error_code()':
main.cpp:(.text._ZN5boost6system10error_codeC2Ev[_ZN5boost6system10error_codeC5Ev]+0x17): undefined reference to `boost::system::system_category()'
/tmp/cc8Ytqko.o: In function `boost::asio::error::get_system_category()':
main.cpp:(.text._ZN5boost4asio5error19get_system_categoryEv[_ZN5boost4asio5error19get_system_categoryEv]+0x5): undefined reference to `boost::system::system_category()'
collect2: error: ld returned 1 exit status
所以后来我做了一些研究,似乎我需要构建boost_system二进制文件,所以我去了目录 boost 位于并运行
./bootstrap.sh
./b2 --with-system
然后我又编译了一遍
g++ -I /home/vagrant/boost_1_60_0 main.cpp -L/home/vagrant/boost_1_60_0/stage/lib/ -lboost_system
这没有给我任何错误,但是当我运行可执行文件时
vagrant@vagrant-ubuntu-trusty-64:/vagrant$ ./a.out
./a.out: error while loading shared libraries: libboost_system.so.1.60.0: cannot open shared object file: No such file or directory
真的不知道我需要在这里做什么
在
动态链接器搜索的目录列表中找不到liibboost_system.so.1.60.0
。默认情况下,非默认共享对象位置不存储在二进制文件中。环境变量LD_LIBRARY_PATH
可用于添加将在标准位置之前搜索的目录:
LD_LIBRARY_PATH=/home/vagrant/boost_1_60_0/stage/lib/ ./a.out
这仅适用于当前的 bash 环境,并且还有一些方法可以将路径存储在可执行文件中,以便不需要环境变量。
相关文章:
- 在共享文件夹上恢复有效权利的问题
- C 11中线程之间的共享文件记录
- 在线程之间共享文件描述符
- ReadFile winapi在从虚拟盒共享文件夹读取时失败.GetLastError正在引发错误183
- 在写入远程Windows共享文件夹的所有者时,GetNamedSecurityInfo返回ERROR_ACCESS_DE
- 以编程方式在非 Windows 计算机中创建共享文件夹
- 在 DLL 中打开共享文件
- 在VirtualBox的共享文件夹中构建符号链接共享库
- 如何在Windows平台中获取远程Windows服务器的共享文件夹的文件列表
- Qt:有共享文件夹的类吗?
- 在Windows 2008 R2服务器/ Windows 7中,判断谁正在访问共享文件夹中的文件
- OpenMP共享文件处理程序
- NetShareEnum(.)winapi无法删除不必要的共享文件夹
- NuGet与TeamCity的项目由2个解决方案共享- .h文件未找到
- 如何共享文件删除权限时,我打开一个文件ifstream
- 为共享文件使用预处理器指令
- 在QtC++中将一个简单文件夹转换为共享文件夹
- 如何让python识别读取预编译的共享文件
- 共享文件视图-访问控制
- 在Visual C++10中在项目之间共享文件