5

コンパイルとリンクが正常に行われるコードがあります。

現在、リンク時の最適化を有効にしようとしてい-fltoますが、コンパイラとリンカー フラグに追加すると、リンカー エラーが発生します。

/usr/local/lib/libboost_thread.a(thread.o): \
    In function `void boost::throw_exception<boost::bad_lexical_cast>(boost::bad_lexical_cast const&)':
    thread.cpp:(.text._ZN5boost15throw_exceptionINS_16bad_lexical_castEEEvRKT_[_ZN5boost15throw_exceptionINS_16bad_lexical_castEEEvRKT_]+0x124): \
        undefined reference to `vtable for boost::bad_lexical_cast'

私が追加した唯一のフラグは-flto.

set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -flto" )
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -flto" )

明確にするために:

  • -fltoアプリのビルドとリンクがなくても問題ありません
  • -fltoおよび他の変更がない場合)、アプリは上記のエラーでリンクに失敗します

このリンカ エラーの原因は何ですか?

4

0 に答える 0