我试图在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