自定义 C 库 : can functions in the same library refer to each other?

标签 c shared-libraries

我刚刚开始创建自己的 C 库,以保持常用函数的整洁。但是,我遇到了一个新问题,我很难找到有关最佳路线的信息。

我使用以下方法生成包含两个函数的库:

gcc -I. -c -fpic rand_site.c
gcc -I. -c -fpic rand_spin.c
gcc -shared -o libstatphys.so rand_site.o rand_spin.o

这些源文件中的每一个都包含一个函数。我希望为我的库创建第三个使用上述两个函数的函数,但我不确定如何使用同一个库中的函数。

我的做法是否正确?这样做的最佳做法是什么?

最佳答案

是的,你可以。

创建一个头文件rand_site.h,将rand_site.c中定义的函数的声明放在里面。

创建一个头文件rand_spin.h,将rand_spin.c中定义的函数的声明放入其中。

使用#include 将两个.h 文件包含在第三个文件中,比如foo.c

然后编译foo.c 并使用以下命令将其添加到库中:

gcc -I. -c -fpic foo.c
gcc -shared -o libstatphys.so rand_site.o rand_spin.o foo.o

如果您想创建第二个具有 foo.o 的共享库,您可以使用:

gcc -I. -c -fpic foo.c
gcc -shared -o libfoo.so foo.o -lstatphys

如果您想使用foo.o 创建一个可执行文件,您可以使用:

gcc -I. -c foo.c
gcc foo.o -lstatphys

关于自定义 C 库 : can functions in the same library refer to each other?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23022491/

相关文章:

c++ - 什么是仅 header 库

c - 如何使用waf构建共享库?

c - 自修改代码,复制/跳入堆失败

C 字符串声明

c++ - 共享库中的符号

java - 从 native 代码返回 `const char*` 并在 java 中获取 `String`

c++ - 应用程序中两个不同版本的库

c - tcc 中的空指针检测

c++ - 为什么 printf(inputString) 是一个安全漏洞?

c - 在 C、Linux 中递归列出目录和文件时出现段错误(核心已转储)