我試圖在C項目中使用名爲quirc的C庫。到目前爲止,我通過修改使用Linux .so
文件的Makefile
生成了libquirc.dylib.1.0
。無法鏈接macOS中的動態庫
#include <quirc.h>
#include <stdio.h>
int main() {
struct quirc *qr;
qr = quirc_new();
if (!qr) {
printf("Failed to allocate memory");
}
quirc_destroy(qr);
return 0;
}
我已經創建的上述源文件在庫的根
quirc/helloquirc.c。我使用下面的命令來編譯:
gcc helloquirc.c -lquirc -L. -Ilib -o helloquirc
據我瞭解的-l
標誌指定的動態庫的名稱,-L
標誌指定的動態庫的位置,-I
標誌指定的位置頭文件和-o
指定可執行文件的名稱。
當我運行這個命令,我得到以下錯誤:
ld: library not found for -lquirc
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我用這條線
.PHONY: libquirc.dylib
libquirc.dylib: libquirc.$(LIB_VERSION).dylib
libquirc.$(LIB_VERSION).dylib: $(LIB_OBJ)
$(CC) -shared -dynamiclib -o [email protected] $(LIB_OBJ) $(LDFLAGS) -lm
和改變.so.$(LIB_VERSION)
其他情況下改變了Makefile
到.$(LIB_VERSION).dylib
'libquirc.dylib.1.0'與'helloquirc.c'存在於同一個目錄嗎?你有沒有嘗試在'-lquirc'標誌之前放置'-L.'標誌? – Evert
@Engl對這兩個問題 – Carpetfizz