C++のコードを
g++ -o a known_results.cpp
にて実行したところ
undefined reference to hogehoge
というエラーが出力され、困っています。
エラーログは下の通りです。
/tmp/ccQCLJ5i.o: In function `compare(double, double, char const*)': known_results.cpp:(.text+0x30a): undefined reference to `meep::abort(char const*, ...)' known_results.cpp:(.text+0x322): undefined reference to `meep::master_printf(char const*, ...)' /tmp/ccQCLJ5i.o: In function `using_pml_ez(meep::grid_volume const&, double (*)(meep::vec const&))': known_results.cpp:(.text+0x36d): undefined reference to `meep::identity()' known_results.cpp:(.text+0x3aa): undefined reference to `meep::pml(double, double, double)' known_results.cpp:(.text+0x404): undefined reference to `meep::structure::structure(meep::grid_volume const&, double (*)(meep::vec const&), meep::boundary_region const&, meep::symmetry const&, int, double, bool, double, int)' known_results.cpp:(.text+0x426): undefined reference to `meep::symmetry::~symmetry()' known_results.cpp:(.text+0x44c): undefined reference to `meep::fields::fields(meep::structure*, double, double, bool)' known_results.cpp:(.text+0x484): undefined reference to `meep::grid_volume::center() const' known_results.cpp:(.text+0x4ee): undefined reference to #長すぎてTeratailのエラーが出たので、略 known_results.cpp:(.text+0x196b): undefined reference to `meep::fields::fields(meep::structure*, double, double, bool)' known_results.cpp:(.text+0x19a3): undefined reference to `meep::grid_volume::center() const' known_results.cpp:(.text+0x1a0d): undefined reference to `meep::fields::add_point_source(meep::component, double, double, double, double, meep::vec const&, std::complex<double>, int)' known_results.cpp:(.text+0x1a51): undefined reference to `meep::fields::step()' known_results.cpp:(.text+0x1a62): undefined reference to `meep::monitor_point::monitor_point()' known_results.cpp:(.text+0x1a7b): undefined reference to `meep::grid_volume::center() const' known_results.cpp:(.text+0x1a9b): undefined reference to `meep::fields::get_point(meep::monitor_point*, meep::vec const&) const' known_results.cpp:(.text+0x1abe): undefined reference to `meep::monitor_point::get_component(meep::component)' known_results.cpp:(.text+0x1af9): undefined reference to `meep::monitor_point::~monitor_point()' known_results.cpp:(.text+0x1b08): undefined reference to `meep::fields::~fields()' known_results.cpp:(.text+0x1b17): undefined reference to `meep::structure::~structure()' known_results.cpp:(.text+0x1b5f): undefined reference to `meep::symmetry::~symmetry()' known_results.cpp:(.text+0x1bb8): undefined reference to `meep::monitor_point::~monitor_point()' known_results.cpp:(.text+0x1bcc): undefined reference to `meep::fields::~fields()' known_results.cpp:(.text+0x1be0): undefined reference to `meep::structure::~structure()' /tmp/ccQCLJ5i.o: In function `polariton_energy(meep::grid_volume const&, double (*)(meep::vec const&))': known_results.cpp:(.text+0x1c3e): undefined reference to `meep::identity()' known_results.cpp:(.text+0x1ca7): undefined reference to `meep::structure::structure(meep::grid_volume const&, double (*)(meep::vec const&), meep::boundary_region const&, meep::symmetry const&, int, double, bool, double, int)' known_results.cpp:(.text+0x1cc9): undefined reference to `meep::symmetry::~symmetry()' known_results.cpp:(.text+0x1d24): undefined reference to `meep::structure::add_susceptibility(double (*)(meep::vec const&), meep::field_type, meep::susceptibility const&)' known_results.cpp:(.text+0x1d59): undefined reference to `meep::fields::fields(meep::structure*, double, double, bool)' known_results.cpp:(.text+0x1d91): undefined reference to `meep::grid_volume::center() const' known_results.cpp:(.text+0x1dfb): undefined reference to `meep::fields::add_point_source(meep::component, double, double, double, double, meep::vec const&, std::complex<double>, int)' known_results.cpp:(.text+0x1e3f): undefined reference to `meep::fields::step()' known_results.cpp:(.text+0x1e50): undefined reference to `meep::fields::field_energy()' known_results.cpp:(.text+0x1e64): undefined reference to `meep::fields::~fields()' known_results.cpp:(.text+0x1e73): undefined reference to `meep::structure::~structure()' known_results.cpp:(.text+0x1ebb): undefined reference to `meep::symmetry::~symmetry()' known_results.cpp:(.text+0x1f00): undefined reference to `meep::fields::~fields()' known_results.cpp:(.text+0x1f14): undefined reference to `meep::structure::~structure()' /tmp/ccQCLJ5i.o: In function `main': known_results.cpp:(.text+0x1f72): undefined reference to `meep::initialize::initialize(int&, char**&)' known_results.cpp:(.text+0x1f78): undefined reference to `meep::quiet' known_results.cpp:(.text+0x1f96): undefined reference to `meep::trash_output_directory(char const*)' known_results.cpp:(.text+0x1fa7): undefined reference to `meep::master_printf(char const*, ...)' known_results.cpp:(.text+0x1fe8): undefined reference to `meep::volone(double, double)' known_results.cpp:(.text+0x2064): undefined reference to `meep::volone(double, double)' known_results.cpp:(.text+0x20ec): undefined reference to `meep::voltwo(double, double, double)' known_results.cpp:(.text+0x218a): undefined reference to `meep::voltwo(double, double, double)' known_results.cpp:(.text+0x2212): undefined reference to `meep::voltwo(double, double, double)' known_results.cpp:(.text+0x229a): undefined reference to `meep::voltwo(double, double, double)' known_results.cpp:(.text+0x2322): undefined reference to `meep::voltwo(double, double, double)' /tmp/ccQCLJ5i.o:known_results.cpp:(.text+0x23ba): more undefined references to `meep::voltwo(double, double, double)' follow /tmp/ccQCLJ5i.o: In function `main': known_results.cpp:(.text+0x244e): undefined reference to `meep::vol3d(double, double, double, double)' known_results.cpp:(.text+0x24e2): undefined reference to `meep::vol3d(double, double, double, double)' known_results.cpp:(.text+0x2586): undefined reference to `meep::vol3d(double, double, double, double)' known_results.cpp:(.text+0x261a): undefined reference to `meep::vol3d(double, double, double, double)' known_results.cpp:(.text+0x26ae): undefined reference to `meep::vol3d(double, double, double, double)' known_results.cpp:(.text+0x270d): undefined reference to `meep::initialize::~initialize()' known_results.cpp:(.text+0x284f): undefined reference to `meep::initialize::~initialize()' /tmp/ccQCLJ5i.o: In function `meep::susceptibility::susceptibility()': known_results.cpp:(.text._ZN4meep14susceptibilityC2Ev[_ZN4meep14susceptibilityC5Ev]+0xb): undefined reference to `vtable for meep::susceptibility' known_results.cpp:(.text._ZN4meep14susceptibilityC2Ev[_ZN4meep14susceptibilityC5Ev]+0x18): undefined reference to `meep::susceptibility::cur_id' known_results.cpp:(.text._ZN4meep14susceptibilityC2Ev[_ZN4meep14susceptibilityC5Ev]+0x21): undefined reference to `meep::susceptibility::cur_id' /tmp/ccQCLJ5i.o: In function `meep::susceptibility::~susceptibility()': known_results.cpp:(.text._ZN4meep14susceptibilityD2Ev[_ZN4meep14susceptibilityD5Ev]+0xf): undefined reference to `vtable for meep::susceptibility' /tmp/ccQCLJ5i.o: In function `meep::lorentzian_susceptibility::lorentzian_susceptibility(double, double, bool)': known_results.cpp:(.text._ZN4meep25lorentzian_susceptibilityC2Eddb[_ZN4meep25lorentzian_susceptibilityC5Eddb]+0x2a): undefined reference to `vtable for meep::lorentzian_susceptibility' /tmp/ccQCLJ5i.o: In function `meep::lorentzian_susceptibility::~lorentzian_susceptibility()': known_results.cpp:(.text._ZN4meep25lorentzian_susceptibilityD2Ev[_ZN4meep25lorentzian_susceptibilityD5Ev]+0xf): undefined reference to `vtable for meep::lorentzian_susceptibility' /tmp/ccQCLJ5i.o: In function `meep::fields::use_bloch(meep::direction, double)': known_results.cpp:(.text._ZN4meep6fields9use_blochENS_9directionEd[_ZN4meep6fields9use_blochENS_9directionEd]+0x5f): undefined reference to `meep::fields::use_bloch(meep::direction, std::complex<double>)' collect2: error: ld returned 1 exit status
コードは
git clone https://github.com/stevengj/meep/
にて取得し、
./autogen.sh
にて、autotoolsで処理しました。
その後、meep/tests/に移動し、
cp ../src/meep -r . cp ../src/meep.hpp . cp ../config.h .
とした後、
known_results.cppの21行目の
#include <meep.hpp>
を
#include meep.hpp
に書き換えました。
その後、known_results.cppを実行すると上のようなエラーが出ました。
解決方法の分かる方ご教示ください。
g++のバージョンは
g++ -dumpversion 7
です。