gpt4 book ai didi

c - 我用 C 编写的库的最佳实践

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:20:09 24 4
gpt4 key购买 nike

这很尴尬,但直到现在我总是将 *.h 和 *.c 文件复制到我的项目位置。这是一团糟,我想改变它!

我想构建自己的 C 语言库并有几个问题。

我应该在哪里找到 *.h 文件?
我应该将它们复制到全局/usr/include/文件夹中,还是应该在 $HOME(或其他任何地方)中创建自己的文件夹?
我应该在哪里找到 *.a 文件和 *.o 文件以及 *.c 文件。

我正在使用 debian 和 gcc。我的 C 项目在 $HOME/dev/c/中。

我会将我的 lib-sources 保存在 $HOME/dev/c/lib 中(如果这是你可以推荐的方式)并将 *.o、*.a 和 *.h 文件复制到我要问的位置为。

您将如何向编译器引入 lib-location?我应该将它添加到 $PATH 中还是应该在我的项目的 makefile 中引入它(比如 -L PATH/TO/LIBRARY -l LIBRARY)。

对于构建自己的库,您有任何进一步的提示和技巧吗?

最佳答案

我建议将文件放在您的 $HOME 中的某处目录。假设您创建了一个名为 linluk 的库并且您想将该库保留在 $HOME/dev/c/linluk 下.那将是您的项目根目录。

您需要一个合理的目录结构。我的建议是有一个 lib包含您的图书馆和 include 的目录包含头文件的目录。

$PROJECT_ROOT/
lib/
liblinluk.so
include/
linluk.h
src/
linluk.c
Makefile

编译:当你想在另一个项目中使用这个库时,你需要添加 -I$PROJECT_ROOT/include到编译行,这样你就可以写 #include <linluk.h>在源文件中。

链接:您将添加 -L$PROJECT_ROOT/lib -llinluk到链接器命令行以在链接时拉入已编译的库。确保您的 .so文件有 lib前缀:应该是liblinluk.so , 不是 linluk.so .

A src目录和 Makefile是可选的。库的用户不需要源代码,尽管如果有人想重新制作 .so 可能会有帮助。文件。

关于c - 我用 C 编写的库的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25826396/

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