我有一個二進制「CeeloPartyServer」,需要在運行時在FreeBSD機器上找到libFoundation.so。他們都在同一個目錄中。我使用鏈接器標誌「-rpath = $ ORIGIN」編譯(在另一個平臺上,使用交叉編譯器)CeeloPartyServer。
> readelf -d CeeloPartyServer |grep -i rpath 0x0000000f (RPATH) Library rpath: [$ORIGIN] > ls CeeloPartyServer Contents Foundation.framework libFoundation.so > ./CeeloPartyServer /libexec/ld-elf.so.1: Shared object "libFoundation.so" not found, required by "CeeloPartyServer"
爲什麼在我嘗試運行它時找不到庫?我的確切鏈接行是:-lm -lmysql -rpath = $ ORIGIN。我敢肯定,我不必逃避\ $或類似的東西,因爲我的readelf分析實際上表明庫rpath被設置爲$ ORIGIN。我錯過了什麼?
你所有的假設是正確的。我沒有使用-z原點標誌,從來沒有見過記錄在任何地方。會讓你知道如果解決它。 – Nektarios 2011-06-13 15:53:31