我试图将.so库添加到我的项目中,但我对makefile的了解非常有限,遗憾的是我不理解我能找到的教程...
这是我项目的结构:
/project
ex1.c
ex1.h
ex1_client.c
ex1_client.h
/lib
libmylib.so
我需要在ex1和ex1_client中使用mylib,两个可执行文件,但我没有成功将它包含在makefile中(我想我可能不知道如何将它包含在我的.c中文件...)
我的makefile是:
CC= gcc
CFLAGS= -Wall -pedantic -std=c99 -pthread
RM= rm -f
LFLAGS= -L./lib
LIBS= -lmylib
#Don't know if the following is necessary
LD_LIBRARY_PATH= ./lib
all: ex1 ex1_client
ex1: ex1.o
$(CC) $(CFLAGS) -o ex1 ex1.o $(LFLAGS) $(LIBS)
ex1_client: ex1_client.o
$(CC) $(CFLAGS) -o ex1_client ex1_client.o $(LFLAGS) $(LIBS)
ex1.o: ex1.c ex1.h
$(CC) $(CFLAGS) -c ex1.c ex1.h
ex1_client.o: ex1_client.c ex1_client.h
$(CC) $(CFLAGS) -c ex1_client.c ex1_client.h
clean:
$(RM) *.o ex1 ex1_client *~
它没有用 - 似乎不知道在哪里找到mylib,或者juste不知道它有什么可以找到的。
除此之外,我没有在我的.c文件中写过关于mylib的任何内容......我的意思是没有#include。可能是所有问题中的一个。
关于图书馆和文件的解释对我来说似乎很难理解......请原谅一位年轻的法国发展者的学校英语;)
答案 0 :(得分:3)
mylib.so
应为libmylib.so
,否则链接器无法找到它。
(看看你系统上已安装的库而不是做出错误的假设怎么样?)