2010 11 05 02 31 [Linux] gcc -rpath 的用處.

以前, 就知道LD_LIBRARY_PATH可以優先指定library的路徑,

因為最近要編譯sudo給WL700gE使用,

卻發現LD_LIBRARY_PATH是對sudo無法產生效果,

查了一下是因為有suid的檔案,

是不會使用LD_LIBRARY_PATH的路徑去載入library.

可是我又不想要build成static file.

又查了一下,gcc有個-rpath的參數,

可以直接指定elf檔要從哪個路徑載入library.

這就可以解決掉suid的檔案不能用LD_LIBRARY_PATH.

範例如下:

#gcc -Wl,-rpath,/opt/lib -o sudo sudo.c

如果想要檢查有沒有設成功,

可以用

#readelf -d sudo | grep RPATH

0x0000000f (RPATH)       Library rpath: [/opt/lib]

這就沒問題了...:)