makefile编译so库并引用elog库
时间: 2023-08-05 18:04:09 浏览: 193
假设您已经编写了一个使用elog库的C源代码文件(例如example.c),并且已经安装了elog库,下面是一个可以使用makefile编译生成so库并链接elog库的示例:
```makefile
CC = gcc
CFLAGS = -Wall -fPIC
LDFLAGS = -shared -L/path/to/elog/lib -lelog
SRC = example.c
OBJ = $(SRC:.c=.o)
TARGET = libexample.so
all: $(TARGET)
$(TARGET): $(OBJ)
$(CC) $(LDFLAGS) -o $@ $^
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(OBJ) $(TARGET)
```
说明:
- `CC`:指定编译器为gcc;
- `CFLAGS`:指定编译选项,包括开启所有警告 `-Wall` 和生成位置无关代码 `-fPIC`;
- `LDFLAGS`:指定链接选项,包括生成共享库 `-shared`、elog库的路径 `-L/path/to/elog/lib` 和链接elog库 `-lelog`;
- `SRC`:指定源代码文件名;
- `OBJ`:将源代码文件名中的`.c`替换为`.o`作为目标文件名;
- `TARGET`:指定目标文件名为`libexample.so`;
- `all`:指定编译目标为`$(TARGET)`;
- `$(TARGET)`:将所有目标文件$(OBJ)链接为共享库;
- `%.o: %.c`:指定了如何将源代码文件编译为目标文件;
- `clean`:指定清除命令,删除目标文件和共享库文件。
在命令行中,进入到makefile所在目录,执行`make`即可编译生成so库,并且链接elog库。
阅读全文