gpt4 book ai didi

c - 如何在 Makefile 中实现 "make install"?

转载 作者:行者123 更新时间:2023-12-03 14:51:11 24 4
gpt4 key购买 nike

所以这是我正在使用的存储库:https://github.com/Garuda1/unixlib

我想知道我编译的 lib ( unixlib.a ) 和我的头文件 ( unixlib.h ) 应该在哪里,以便能够通过编译来使用 lib (在 Linux-x86 或 Linux-x86_64 下):

$ gcc my_source.c -lunixlib

并在 my_source.c 中包含标题.

我想我将执行此操作添加到 Makefile :
install:
mv $(NAME).a $(LIB_PATH)
mv unixlib.h $(HEADER_PATH)

但我不知道是什么 $(LIB_PATH)$(HEADER_PATH)是...

最佳答案

通常在 UNIX 系统中, header 转到 $PREFIX/include , 库文件转至 $PREFIX/lib ,其中 PREFIX可以 /usr/usr/local管他呢。在 linux 中,如果你将你的库安装到这些目录中,它会被 gcc 找到。随心所欲,只需 gcc my_source.c -lunixlib .PREFIX各种构建工具通常使用环境变量来提供该前缀。
我还建议使用 DESTDIR变量,它至少被 Debian 打包工具使用。
所以,makefile 应该是这样的:

# PREFIX is environment variable, but if it is not set, then set default value
ifeq ($(PREFIX),)
PREFIX := /usr/local
endif

install: unixlib.a
install -d $(DESTDIR)$(PREFIX)/lib/
install -m 644 unixlib.a $(DESTDIR)$(PREFIX)/lib/
install -d $(DESTDIR)$(PREFIX)/include/
install -m 644 unixlib.h $(DESTDIR)$(PREFIX)/include/
请注意, install -d ...仅在提供的 DESTDIR 中不存在目录的情况下使用例如。
你也可以看看我的非递归模板 make寻找一些提示: https://github.com/cppfw/prorab/blob/master/src/prorab.mk

关于c - 如何在 Makefile 中实现 "make install"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39892692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com