我在哪里放置可以在Windows,Mac和Linux上使用的C库

时间:2019-07-05 01:26:12

标签: c linux windows macos package

我已经查看了一些地方以找出文件在Mac上的放置位置,似乎将它们放置在/usr/lib/libmylib.dylib/usr/include/mylib.h中是正确的位置,而不是放在主目录中目录或/usr/local/lib中。 (这是用户在计算机上安装的东西。)

请让我知道是否正确。

然后我剩下的问题是在Windows和Linux上放置C库的等效位置(即最佳)在哪里。在here中寻找窗口会显示%windir%\system32%SystemRoot%\winsxs。但是随后他们似乎在说,由于种种原因,放置它仍然是一个糟糕的地方。所以我不确定在那里。

然后剩下的就是如何为Linux做这件事了。似乎与Mac上的相同。

最终目标是使某人可以简单地在其C代码中执行#include <mylib.h>并使其正常工作。

2 个答案:

答案 0 :(得分:1)

这取决于您使用的macOS版本。

对于Mac,由于Apple在macOS 10.11 El Capitan中添加了“系统完整性保护”(SIP),因此您将无法在macOS下的/usr/lib中放置库或在/usr/include中放置标头。 2015年10月)。您将需要使用/usr/local/lib/opt下的某个地方。

然后,您需要确定C编译器是否默认配置为在/usr/local/include中查找标头,在/usr/local/lib中查找库。如果不是,那么您需要在命令行中添加-I /usr/local/include-L /usr/local/lib。 (如果将库放在/opt下,则肯定需要具有适当值的可比较选项。)

您可以在Can Mac OS X El Capitan run software compiled for Yosemite that expects libraries in /usr/gnu64/lib?中找到一些相关链接,该链接的标题问题的答案是“不,不能”。

答案 1 :(得分:1)

@ Linux:

    动态数据库(.so)的
  • / usr / lib路径
  • 库标头(.h)的
  • / usr / include路径

/ usr / local / include是非发行版管理的用户程序的路径前缀。您将需要指出C编译器的此路径以查找库。您的命令如下:

gcc -o <src_program_app> -I/usr/local/include/<ur_library_dir> <src_program>.c

其中src_program.c导入了ur_library_dir上的库。

但是,您以后可以尝试使用像Cmake这样的构建系统来自动执行该编译。