Shared Library Path as Executable Directory

前端 未结 2 837
醉话见心
醉话见心 2021-02-04 09:14

I have an application that is broken into several libraries for purposes of code reuse. On Windows all I have to do is put the .dll files in the same path as the executable and

相关标签:
2条回答
  • 2021-02-04 09:47

    Wrap your program in a shell script:

    #!/bin/sh
    
    PROGRAM_DIRECTORY="`dirname "$0"`"
    export LD_LIBRARY_PATH="$PROGRAM_DIRECTORY"
    
    "$PROGRAM_DIRECTORY/program_executable" "$@"
    

    If you run this script (instead of your executable) your program will link just fine.

    0 讨论(0)
  • 2021-02-04 10:00

    You need $ORIGIN in your RPATH, via an appropriate option to ld or other Darwin tool. See this and this.

    Remember that the $ has to really end up in the path, so you need to quote or escape it in the link command line.

    Update: You can see what the linker actually put into your executable with

    readelf -d /path/to/exe | grep RPATH
    

    Here is what the output should look like:

     0x0000000f (RPATH)              Library rpath: [$ORIGIN]
    
    0 讨论(0)
提交回复
热议问题