我做了一個簡單的程序,使用共享對象,打開它dlopen()
。我也編譯和鏈接像下面的共享對象:如何鏈接C中的共享對象?
gcc -o libmylib.so libmylib.c -shared -fPIC -Wall
gcc -o program program.c -L. -lmylib -ldl -Wall
當我試圖運行該程序的第一次,說什麼像
cannot open libmylib.so: no such file or directory
所以我在網上搜索,發現我有將我的共享對象複製到/lib/i386-linux-gnu/
以便程序運行。所以我這樣做了,而且工作正常,但是我試圖用其他方式來完成,因此我從/lib/i3686-linux-gnu/
目錄中刪除了libmylib.so
。現在,當我試圖運行該程序時,它顯示沒有錯誤,但一直說Segmentation fault
。很顯然,共享對象無處可尋,但我怎樣才能鏈接它,而不需要複製任何東西?
我使用Ubuntu 11.10
如果以root身份運行`ldconfig`,分段錯誤是否會消失? – zwol 2011-12-16 18:47:28