GollyGang / ready

A cross-platform implementation of various reaction-diffusion systems and PDEs.
GNU General Public License v3.0
777 stars 60 forks source link

Linker errors when building on macos 10.11.6 #15

Closed cthompso closed 8 years ago

cthompso commented 8 years ago

Following the build instructions, I get linker errors when building with relevant output below. This is when building the Ready.app executable.

[ 15%] Linking CXX executable Ready.app/Contents/MacOS/Ready Undefined symbols for architecture x86_64: "std::istream& std::istream::_M_extract(double&)", referenced from: wxVariantDoubleData::Read(std::istream&) in libwx_baseu-3.1.a(baselib_variant.o) "vtkXMLUnstructuredGridWriter::PrintSelf(std::ostream&, vtkIndent)", referenced from: vtable for RD_XMLUnstructuredGridWriter in libreadybase.a(IO_XML.cpp.o) "vtkXMLWriter::WritePrimaryElementAttributes(std::ostream&, vtkIndent)", referenced from: vtable for RD_XMLUnstructuredGridWriter in libreadybase.a(IO_XML.cpp.o) "vtkXMLImageDataWriter::PrintSelf(std::ostream&, vtkIndent)", referenced from: vtable for RD_XMLImageWriter in libreadybase.a(IO_XML.cpp.o) "vtkXMLImageDataWriter::WritePrimaryElementAttributes(std::ostream&, vtkIndent)", referenced from: vtable for RD_XMLImageWriter in libreadybase.a(IO_XML.cpp.o) "std::string::_S_empty_rep()", referenced from: ... ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: *\ [Ready.app/Contents/MacOS/Ready] Error 1

Perhaps this is an issue with my build of vtk 6.3.0?

any suggestions welcome. Thanks!

cthompso commented 8 years ago

Okay so I got things working. Turns out this was a versionitis issue with getting wx to build properly in 10.11. Turns out 3.0.2 needs 10.9, so you need to build it against a legacy set of the xcode SDK.

After that, CMakeLists.txt needed to be updated so the proper std library was used at compile time. (I think the latest default version is C++11, whereas it needed to be built against an earlier version of the std library. Adding:

add_compile_options(-stdlib=libc++)

To the build portion of CMakeLists.txt did the trick.

Whew!

colin