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]
這就沒問題了...:)