[ 
https://issues.apache.org/jira/browse/ARROW-5090?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeroen updated ARROW-5090:
--------------------------
    Description: 
Linking an application or bindings against the arrow shared lib (from homebrew) 
fails with:

{code}
  dlopen(/Users/travis/build/r-lib/arrow/arrow.Rcheck/arrow/libs/arrow.so, 6): 
Library not loaded: @rpath/libarrow.13.dylib
  Referenced from: /usr/local/opt/apache-arrow/lib/libparquet.13.dylib
  Reason: image not found
{code}

Indeed if we check the dylib dependencies:

{code}
otool -L /usr/local/opt/apache-arrow/lib/libparquet.13.dylib
/usr/local/opt/apache-arrow/lib/libparquet.13.dylib:
        /usr/local/opt/apache-arrow/lib/libparquet.13.dylib (compatibility 
version 13.0.0, current version 13.0.0)
        @rpath/libarrow.13.dylib (compatibility version 13.0.0, current version 
13.0.0)
        /usr/local/opt/boost/lib/libboost_regex-mt.dylib (compatibility version 
0.0.0, current version 0.0.0)
        /usr/local/opt/thrift/lib/libthrift-0.12.0.dylib (compatibility version 
0.0.0, current version 0.0.0)
        /usr/local/opt/protobuf/lib/libprotobuf.18.dylib (compatibility version 
19.0.0, current version 19.1.0)
        /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 
400.9.4)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current 
version 1252.250.1)
{code}

I don't think an installed lib should contain @rpath. Does this mean 
ARROW_INSTALL_NAME_RPATH is not working?

The workaround is to set the rpath when linking. The R package [apparently 
hardcodes|https://github.com/apache/arrow/blob/master/r/src/Makevars.in#L21] 
this to be /usr/local/lib which is appropriate.


  was:
Linking an application or bindings against the arrow shared lib (from homebrew) 
fails with:

{code}
  dlopen(/Users/travis/build/r-lib/arrow/arrow.Rcheck/arrow/libs/arrow.so, 6): 
Library not loaded: @rpath/libarrow.13.dylib
  Referenced from: /usr/local/opt/apache-arrow/lib/libparquet.13.dylib
  Reason: image not found
{code}

Indeed if we check the dylib dependencies:

{code}
otool -L /usr/local/opt/apache-arrow/lib/libparquet.13.dylib
/usr/local/opt/apache-arrow/lib/libparquet.13.dylib:
        /usr/local/opt/apache-arrow/lib/libparquet.13.dylib (compatibility 
version 13.0.0, current version 13.0.0)
        @rpath/libarrow.13.dylib (compatibility version 13.0.0, current version 
13.0.0)
        /usr/local/opt/boost/lib/libboost_regex-mt.dylib (compatibility version 
0.0.0, current version 0.0.0)
        /usr/local/opt/thrift/lib/libthrift-0.12.0.dylib (compatibility version 
0.0.0, current version 0.0.0)
        /usr/local/opt/protobuf/lib/libprotobuf.18.dylib (compatibility version 
19.0.0, current version 19.1.0)
        /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 
400.9.4)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current 
version 1252.250.1)
{code}

I don't think an installed lib should contain @rpath. Does this mean 
ARROW_INSTALL_NAME_RPATH is not working?

The workaround is to set the rpath when linking. The R package [apparently 
hardcodes](https://github.com/apache/arrow/blob/master/r/src/Makevars.in#L21) 
this to be /usr/local/lib which is appropriate.



> Linking failure on MacOS due to @rpath in dylib
> -----------------------------------------------
>
>                 Key: ARROW-5090
>                 URL: https://issues.apache.org/jira/browse/ARROW-5090
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: C++
>            Reporter: Jeroen
>            Priority: Major
>
> Linking an application or bindings against the arrow shared lib (from 
> homebrew) fails with:
> {code}
>   dlopen(/Users/travis/build/r-lib/arrow/arrow.Rcheck/arrow/libs/arrow.so, 
> 6): Library not loaded: @rpath/libarrow.13.dylib
>   Referenced from: /usr/local/opt/apache-arrow/lib/libparquet.13.dylib
>   Reason: image not found
> {code}
> Indeed if we check the dylib dependencies:
> {code}
> otool -L /usr/local/opt/apache-arrow/lib/libparquet.13.dylib
> /usr/local/opt/apache-arrow/lib/libparquet.13.dylib:
>       /usr/local/opt/apache-arrow/lib/libparquet.13.dylib (compatibility 
> version 13.0.0, current version 13.0.0)
>       @rpath/libarrow.13.dylib (compatibility version 13.0.0, current version 
> 13.0.0)
>       /usr/local/opt/boost/lib/libboost_regex-mt.dylib (compatibility version 
> 0.0.0, current version 0.0.0)
>       /usr/local/opt/thrift/lib/libthrift-0.12.0.dylib (compatibility version 
> 0.0.0, current version 0.0.0)
>       /usr/local/opt/protobuf/lib/libprotobuf.18.dylib (compatibility version 
> 19.0.0, current version 19.1.0)
>       /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 
> 400.9.4)
>       /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current 
> version 1252.250.1)
> {code}
> I don't think an installed lib should contain @rpath. Does this mean 
> ARROW_INSTALL_NAME_RPATH is not working?
> The workaround is to set the rpath when linking. The R package [apparently 
> hardcodes|https://github.com/apache/arrow/blob/master/r/src/Makevars.in#L21] 
> this to be /usr/local/lib which is appropriate.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to