Jeffrey Wong created ARROW-5956: ----------------------------------- Summary: Undefined symbol GetFieldByName Key: ARROW-5956 URL: https://issues.apache.org/jira/browse/ARROW-5956 Project: Apache Arrow Issue Type: Bug Components: R Environment: Ubuntu 16.04, R 3.4.4, python 3.6.5 Reporter: Jeffrey Wong
I have installed pyarrow 0.14.0 and want to be able to also use R arrow. In my work I use rpy2 a lot to exchange python data structures with R data structures, so would like R arrow to link against the exact same .so files found in pyarrow When I pass in include_dir and lib_dir to R's configure, pointing to pyarrow's include and pyarrow's root directories, I am able to compile R's arrow.so file. However, I am unable to load it in an R session, getting the error: {code:java} > dyn.load('arrow.so') Error in dyn.load("arrow.so") : unable to load shared object '/tmp/arrow2/r/src/arrow.so': /tmp/arrow2/r/src/arrow.so: undefined symbol: _ZNK5arrow11StructArray14GetFieldByNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE{code} Steps to reproduce: Install pyarrow, which also ships libarrow.so and libparquet.so {code:java} pip3 install pyarrow --upgrade --user PY_ARROW_PATH=$(python3 -c "import pyarrow, os; print(os.path.dirname(pyarrow.__file__))") PY_ARROW_VERSION=$(python3 -c "import pyarrow; print(pyarrow.__version__)") ln -s $PY_ARROW_PATH/libarrow.so.14 $PY_ARROW_PATH/libarrow.so ln -s $PY_ARROW_PATH/libparquet.so.14 $PY_ARROW_PATH/libparquet.so {code} Add to LD_LIBRARY_PATH {code:java} sudo tee -a /usr/lib/R/etc/ldpaths <<LINES LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:$PY_ARROW_PATH" export LD_LIBRARY_PATH LINES sudo tee -a /usr/lib/rstudio-server/bin/r-ldpath <<LINES LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:$PY_ARROW_PATH" export LD_LIBRARY_PATH LINES export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:$PY_ARROW_PATH" {code} Install r arrow from source {code:java} git clone https://github.com/apache/arrow.git /tmp/arrow2 cd /tmp/arrow2/r git checkout tags/apache-arrow-0.14.0 R CMD INSTALL ./ --configure-vars="INCLUDE_DIR=$PY_ARROW_PATH/include LIB_DIR=$PY_ARROW_PATH"{code} I have noticed that the R package for arrow no longer has an RcppExports, but instead an arrowExports. Could it be that the lack of RcppExports has made it difficult to find GetFieldByName? -- This message was sent by Atlassian JIRA (v7.6.14#76016)