所以我在将共享库与GCC结合使用时遇到了一些麻烦。
我对此很陌生,所以这就是我来这里问的原因。我无法找到关于堆栈溢出的问题,这对我有帮助(也许我忽略了一个)。但首先是关于我的设置以及我想要完成的事情
所以我有两个相互开发的库。一个名为liblinkedlist,其中包含C中的链表实现,另一个名为libgraph,包含C中的图形实现。两者都放在以下文件夹结构中:
<root>
+---graph_lib(folder)
+---build(folder)
+---src(folder)
+---makefile(file)
+---linkedlist_lib
+---build(folder)
+---src(folder)
+---makefile(file)
每个src文件夹包含源文件(对于liblinkedlist和graph.h为linkedlist.h和.c,对于libgraph为.c)
在每个构建文件夹中,存储从头文件创建的.o和.so文件
现在的问题是我想在我的图库中使用/ linkedlist_lib / build /中的liblinkedlist.so。在编译库时,一切似乎都很顺利。但是当我尝试将它与包含头文件(在链表列表库中)结合使用时,我收到无法找到它的消息。
我的编译命令如下:
对于liblinkedlist:
gcc -fpic -c src/linkedlist.c -o build/linkedlist.o
gcc -shared -o build/liblinkedlist.so build/linkedlist.o
对于使用liblinkedlist的libgraph:
gcc -fpic -c src/libgraph.c -o build/libgraph.o
gcc -fpic -c src/graph.c -o build/graph.o
gcc -L../linkedlist_lib/build/ -o build/libgraph build/libgraph.o build/graph.o -llinkedlist
这些是我在使用头文件时得到的命令和错误:
gcc -fpic -c src/libgraph.c -o build/libgraph.o
In file included from src/libgraph.c:2:0:
src/graph.h:4:24: fatal error: linkedlist.h: File or folder does not exist
#include "linkedlist.h"
^
compilation terminated.
make: *** [build/libgraph.o] Fout 1
关于如何解决这个问题的任何想法,我在这里做错了吗? 提前谢谢你