c - 用于从现有文件创建 (.so) 文件的 makefile

标签 c linux makefile shared-libraries

我有 4 个文件:1.c1.h2.c2.h>。 我需要一个 makefile,它将根据这 4 个文件创建一个动态库 (.so)。 我试过像这样编写一个 makefile:

库.so : 1.c 1.h 2.c 2.h

但是没有用。如果有人帮助我,那就太好了,谢谢。

最佳答案

有点像

 CC=gcc
 CFLAGS= -Wall -g -O -fPIC
 RM= rm -f
 .PHONY: all clean

 all: library.so
 clean:
      $(RM) *.o *.so

 library.so: 1.o 2.o
      $(LINK.c) -shared $^ -o $@

 1.o: 1.c 1.h 2.h

 2.o: 2.c 1.h 2.h

但这是未经测试的!我假设 Linux 使用 GNU make , 和一个只包含你的库的源代码的目录(带有上面的 Makefile),这可能是不好的做法 - 你可能想要一个测试用例 - (你可以有一个特殊的 Makefile %.pic.o 的规则取决于 %.c 等...)

提示:使用make -p 来理解内置规则。然后 make --trace 或(使用 remake )remake -x 来更多地了解 make 正在做什么。

另请阅读 Drepper's paper: How to Write Shared Libraries , documentation of GNU make , Program Library HowTo , this answer , ...

关于c - 用于从现有文件创建 (.so) 文件的 makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26689759/

相关文章:

node.js - 从子进程的子进程获取标准输出

linux - zlib-1.2.11 配置选项

java - Java 的 Shell 脚本不工作

c - Makefile:将 C 代码转换为 mex 代码(链接错误)

我们可以在 make 中运行一个 python 脚本来生成一些 .c 和 .h 文件,然后构建一个镜像吗?

c - SIGSEGV 处理程序无法退出

c - 了解指针的用途

java - 智能 : unable to find JAXB generated classes in sub project

android - 犯奇怪的错误

c - = {0};是什么意思?在C语言中?