星期三, 9月 05, 2018
[C] patchelf 用法
先寫一個簡單的share library, (CODE)
簡單的function可以印出字,
之後寫binary來call這個function,(CODE)
會build出來main這個binary,
這時如果直接執行就會出現找不到libhello.so檔,
vodka@sw2-server:~/test/c_code/Patchelf$ ./main
./main: error while loading shared libraries: libhello.so: cannot open shared object file: No such file or directory
所以我需要指定“LD_LIBRARY_PATH”給他,讓他知道library的位置,
vodka@sw2-server:~/test/c_code/Patchelf$ LD_LIBRARY_PATH=/home/vodka/test/c_code/Patchelf ./main
hello: From main
但如果每次都要這樣執行就太麻煩了,
可以使用"ldconfig"來把library位置加入系統找尋的位置裡,
但是這樣就要動到系統,
所以這時可以用“patchelf”的方式來修改binary內找尋library的位置。
patchelf --set-rpath "library_path" $OBJ
指定library path後,以後就可以直接執行binary就可以。
github code
Ref:
ref_1
訂閱:
張貼留言 (Atom)

沒有留言:
張貼留言