【发布时间】:2016-10-06 09:45:18
【问题描述】:
这是我正在使用的存储库:https://github.com/Garuda1/unixlib
我想知道我的编译库 (unixlib.a) 和头文件 (unixlib.h) 应该在哪里,以便能够使用该库(在 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) 是什么...
【问题讨论】:
-
为什么是
mv?这将从源目录中删除头文件。这里通常使用cp或install。目标路径通常类似于$(prefix)/lib和$(prefix)/include;你想在哪里安装你的文件? -
我想把它们安装到需要去的地方,基本上如果我创建
foo.c,其中我#include <unixlib.h>,我希望能够用gcc -lunixlib foo.c编译它 -
“他们需要去的地方”取决于发行版/风味,在您的情况下,取决于 gcc 的默认 Include/Lib 路径。你应该选择
/usr/local作为前缀,意思是LIB_PATH=$(prefix)/lib和HEADER_PATH=$(prefix)/include,就像Karsten Koop用prefix=/usr/local写的那样。/usr/通常由发行版包管理器管理,/usr/local通常用于“本地安装” - you can read about that in the FHS。构建者可以使用make install prefix=/home/example覆盖它 -
@Garuda1 Karsten 的重点是你应该使用
install这样你不仅可以指定权限模式,而且它也是自记录的(如果你想去吧)。至少使用cp! -mv完全是错误的。
标签: c makefile static-libraries gnu-make