やあみんな、これは初歩的な質問かもしれませんが、Googleで役立つ解決策が本当に見つかりません. 私は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__sync_add_and_fetch_8 内 /tmp/ccOZxZBX.o: 関数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_fetch_and_add_8' 内
私が使用したマシンは、MIPS64 命令セット プロセッサを使用する SiCortex SC5832 で、OS は CentoOS に変更されました。Gcc 4.2.3、Boost1.46.0。MIPS の互換性に問題がある可能性はありますか? -mips64 オプションを追加しましたが、それでも同じエラーが発生します。この環境が一般的ではないことは承知していますが、同様の大きなマシンを使用しているユーザーの中には、同じ問題に直面する人もいると思います。
どんな助けでも大歓迎です。ちなみにsudo権限はありません。
ありがとう、トニー