hi Joris, The conda-forge libraries are currently built with compatibility for gcc version 4.8 and higher, which means using the old CXX ABI. So you have two options:
* Build the Arrow libraries from source on your compiler * Pass -D_GLIBCXX_USE_CXX11_ABI=0 to gcc when compiling all object code with direct or indirect linkage (e.g. an std::string created someplace else will be ABI-incompatible) to conda-forge binaries - Wes On Fri, Aug 31, 2018 at 2:13 PM Joris Peeters <[email protected]> wrote: > > I am trying to compile a small piece of C++ code, linking against the arrow > libraries which I retrieved through Anaconda (conda install -c conda-forge > arrow-cpp). > > The minified code for test.cpp looks like this, > > >> > #include <arrow/status.h> > #include <iostream> > > void checkStatus(arrow::Status const &status) { > if (!status.ok()) { > std::cout << status.ToString() << std::endl; > } > } > << > > and the build command looks like (conda/build is a local anaconda env with > the necessary libs), > > g++ test.cpp -Iconda/build/include -Lconda/build/lib -lboost_system > -lboost_filesystem -larrow > > This gives the following error, > > >> > /usr/lib/gcc/x86_64-redhat-linux/7/../../../../lib64/crt1.o: In function > `_start': > (.text+0x20): undefined reference to `main' > /tmp/ccXSAIRl.o: In function `checkStatus(arrow::Status const&)': > test.cpp:(.text+0x2f): undefined reference to > `arrow::Status::ToString[abi:cxx11]() const' > collect2: error: ld returned 1 exit status > << > > Is this something that rings a bell to someone? I've tried a bunch of > things, but can't immediately see what the issue is. I'm using G++ 7.3.1 on > Fedora 26. > > It's likely I'm just doing this completely wrong, though, so any pointers > to get me on the right path would be very helpful! > > Thanks, > -J
