fedoraでのboostのクロスコンパイルについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
chibago

fedoraでのboostのクロスコンパイルについて

#1

投稿記事 by chibago » 14年前

fedora15でmingwによるクロスコンパイルを試しております。
boostを使ったプログラムではundefine referenceと言うエラー
が出てしまいます。(linuxのネイティブな環境では問題がないものです。)

プログラムの例としては(unit_test.cpp)
#define BOOST_AUTO_TEST_MAIN
#include <boost/test/auto_unit_test.hpp>
#include <boost/test/floating_point_comparison.hpp>
#include <boost/format.hpp>

using namespace boost;

BOOST_AUTO_TEST_CASE( test )
{
BOOST_CHECK_EQUAL( 1.0, 1.0);
}

と言うよなもので、コンパイルのコマンドは
i686-pc-mingw32-g++ -DBOOST_TEST_DYN_LINK -lboost_unit_test_framework-gcc45-1_46 unit_test.cpp

としております。
エラーは
/tmp/ccnHIW9c.o:unit_test.cpp:(.text+0x42): undefined reference to `__imp___ZN5boost9unit_test14unit_test_mainEPFbvEiPPc'
/tmp/ccnHIW9c.o:unit_test.cpp:(.text+0xf7): undefined reference to `__imp___ZN5boost9unit_test15unit_test_log_t14set_checkpointENS0_13basic_cstringIKcEEjS4_'
/tmp/ccnHIW9c.o:unit_test.cpp:(.text+0x30f): undefined reference to `__imp___ZN5boost9unit_test9ut_detail24auto_test_unit_registrarC1EPNS0_9test_caseEm'
/tmp/ccnHIW9c.o:unit_test.cpp:(.text$_ZN5boost9unit_test13test_observerD2Ev[boost::unit_test::test_observer::~test_observer()]+0x7): undefined reference to `__imp___ZTVN5boost9unit_test13test_observerE'
と言うようなものです。

boostのバグもしくはシステムの不具合ではないかと推測しておりますが、解決できないと非常に不便な問題です。

もし、成功され方がおられましたら、アドバイスをいただけると助かります。

hjkl

Re: fedoraでのboostのクロスコンパイルについて

#2

投稿記事 by hjkl » 14年前

boost.testを自分の環境だとビルドしてないんで、
ダイナミックリンクする場合の解決方法はわかりませんが
<boost/test/included/unit_test.hpp>をインクルードすると
ヘッダオンリーで使えるみたいなんでそちらを試してみては。
letsboost::test

chibagoさんのプログラム例のインクルードをヘッダオンリー版に
変えたらコンパイルできましたよ(windowsのmingwですが)。
boost.testに詳しくないんで実行後の出力が正しいものかはわかりませんが。

コード:

#define BOOST_AUTO_TEST_MAIN
#include <boost/test/included/unit_test.hpp>

using namespace boost;

BOOST_AUTO_TEST_CASE(test)
{
  BOOST_CHECK_EQUAL(1.0, 1.0);
}
g++ unit_test.hpp

./a.exe
Running 1 Test cases...

*** No errors detected

chibago

Re: fedoraでのboostのクロスコンパイルについて

#3

投稿記事 by chibago » 14年前

hjkl様 ありがとうございました。
さっそく試してみました。正常に動作しております。

閉鎖

“C言語何でも質問掲示板” へ戻る