我用幾個庫例如pthread
爲-lpthread
和math
爲-lmath
但我不需要使用-L
選項來指定鏈接路徑。GNU C:我如何編譯動態庫選項-lmylib但沒有-l選項,C程序
但是,
- 我創建了一個庫
mylib
通過編譯我的程序mylib.c
作爲gcc -fPIC mylib.c -o libmylib.so
- 把它放在
/usr/local/lib/libcustom
- 添加的路徑
/usr/local/lib/libcustom
到一個文件/etc/ld.so.conf.d/libcustom.conf
- 運行
ldconfig
- 運行
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/customlib
- 在
mylib
創建sample.c
調用的函數現在,當我編譯sample.c
一個gcc -L /usr/local/lib/customlib -o sample.o -lmylib
它工作得很好,當我嘗試gcc sample.c -o sample.o -lmylib
它給LD誤差/usr/bin/ld: cannot find -lmylib
我想知道爲什麼在-lpthread
的情況下爲-L
標誌可選,在-lmylib
的情況下爲必選標誌?在-lmylib
的情況下,如何跳過-L
的使用?
謝謝。
嘗試 「-p LDCONFIG | grep的-i MYLIB」 檢查存儲在當前高速緩存 –
您的庫,因爲系統(鏈接器)已經知道在哪裏可以找到'libpthread',但不知道在哪裏尋找'libmylib' – Shark