嘿伙计们,这可能是一个菜鸟问题,但我真的无法通过谷歌找到任何有用的解决方案。我正在用 boost.asio 测试一个 hello world,程序非常简单:
#include <iostream>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
int main()
{
boost::asio::io_service io;
boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
t.wait();
std::cout << "Hello, world!\n";
return 0;
}
我通过了编译并在我的Intel Pentium PC (Ubuntu 10.10, gcc 4.4.5, Boost 1.46.0)上运行良好。我使用的命令行是
g++ -oa a.cpp -I /Boost-Include-Path/ -L /Boost-lib-Path/ -lboost_system
但是当我在另一台机器上编译相同的代码时(这是一个很大的,我稍后会解释),它无法通过编译并给出这样的错误:
/tmp/ccOZxZBX.o:在函数
boost::asio::detail::gcc_sync_fenced_block::gcc_sync_fenced_block()': a.cpp:(.text._ZN5boost4asio6detail21gcc_sync_fenced_blockC1Ev[boost::asio::detail::gcc_sync_fenced_block::gcc_sync_fenced_block()]+0x4c): undefined reference to
__sync_lock_test_and_set_4' /tmp/ccOZxZBX.o:在boost::detail::atomic_count::operator++()': a.cpp:(.text._ZN5boost6detail12atomic_countppEv[boost::detail::atomic_count::operator++()]+0x30): undefined reference to
函数boost::detail::atomic_count::operator--()': a.cpp:(.text._ZN5boost6detail12atomic_countmmEv[boost::detail::atomic_count::operator--()]+0x30): undefined reference to
__sync_add_and_fetch_8' /tmp/ccOZxZBX.o:在函数boost::detail::atomic_count::operator long() const': a.cpp:(.text._ZNK5boost6detail12atomic_countcvlEv[boost::detail::atomic_count::operator long() const]+0x30): undefined reference to
__sync_add_and_fetch_8'
我使用的机器是SiCortex SC5832,它使用MIPS64指令集处理器,操作系统更改为CentoOS。GCC 4.2.3,Boost1.46.0。MIPS的兼容性是否可能存在问题?我添加了 -mips64 选项,但它仍然给出相同的错误。我知道这种环境不会很平常,但我想一些使用类似大机器的人可能会面临同样的问题。
任何帮助,将不胜感激。顺便说一句,我没有 sudo 权限。
谢谢,托尼