我怎样才能像其他库一样使用我的 C 库,比如 stdio



我最近用 C 语言制作了一个小型库,我想将其与标准库放在一起,这样我就不必总是为每个新项目复制文件。 我必须把它放在哪里,这样我才能像标准库一样导入它?

编译器 : MinGW
OS: Windows

你需要创建一个库,但你不一定需要把它放在与MinGW的标准库相同的位置(事实上我认为这是一个坏主意)。

最好将自己的库放在特定位置,然后使用-I编译器标志告诉编译器在哪里可以找到头文件(.h.hpp.hh),并使用-L链接器标志告诉链接器在哪里可以找到库存档(.a.dll.a)。如果您有.dll文件,则应确保它们在运行.exe时位于PATH环境变量中,或者确保将.dll文件复制到与.exe相同的文件夹中。

如果使用 IDE(例如 Code::Blocks 或 Visual Studio Code),则可以在全局 IDE 编译器/链接器设置中设置这些标志,这样就不必为每个新项目添加标志。

然后,在构建使用库的项目时,您需要将带有库名称的-l标志添加到链接器标志中,但没有 lib 前缀和扩展名(例如,使用libmystuff.a/libmystuff.dll.a指定链接器标志-lmystuff)。使用-static标志将告知链接器使用静态库而不是共享库(如果两者都可用)。

我在 https://github.com/brechtsanders/ci-test 创建了一个最小的示例库,以说明如何创建一个可以在 Windows 上构建为静态和共享 (DLL) 库的库,但相同的代码也在 macOS 和 Linux。

如果您不使用 Make 或 CMake 等构建工具,并且想要手动执行这些步骤,则静态库的这些步骤将如下所示:

gcc -c -o mystuff.o mystuff.c
ar cr libmystuff.a mystuff.c

要以二进制形式分发库,您应该分发头文件(.h)和库存档文件(.a)。

相关内容

最新更新