1

我正在尝试将 .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,或者只是不知道它有什么要找的。

除此之外,我没有在我的 .c 文件中写任何关于 mylib 的内容……我的意思是没有#include。可能是所有问题之一。

关于图书馆和makefile的解释对我来说似乎真的很难理解......请原谅一个年轻的法国开发者在学校学习的英语;)

4

1 回答 1

3

mylib.so应该是libmylib.so,否则链接器找不到它。

(看看系统上已经安装的库而不是做出错误的假设怎么样?)

于 2013-03-10T14:02:36.577 回答