Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows、Mac和Linux上使用的C库应该放在哪里_C_Linux_Windows_Macos_Package - Fatal编程技术网

在Windows、Mac和Linux上使用的C库应该放在哪里

在Windows、Mac和Linux上使用的C库应该放在哪里,c,linux,windows,macos,package,C,Linux,Windows,Macos,Package,我已经查看了几个地方来确定文件在Mac上的位置,似乎将它们放在/usr/lib/libmylib.dylib和/usr/include/mylib.h是正确的位置,而不是放在主目录或/usr/local/lib中。(这是用户在其计算机上安装的内容) 请让我知道这是否正确 接下来我的问题是,在windows和linux上放置C库的等效位置(即最佳位置)在哪里。查找windows时会显示%windir%\system32或%SystemRoot%\winsxs。但他们似乎在说,出于几个原因,这仍然是

我已经查看了几个地方来确定文件在Mac上的位置,似乎将它们放在
/usr/lib/libmylib.dylib
/usr/include/mylib.h
是正确的位置,而不是放在主目录或
/usr/local/lib
中。(这是用户在其计算机上安装的内容)

请让我知道这是否正确

接下来我的问题是,在windows和linux上放置C库的等效位置(即最佳位置)在哪里。查找windows时会显示
%windir%\system32
%SystemRoot%\winsxs
。但他们似乎在说,出于几个原因,这仍然是一个不好的地方。所以我不确定有没有

那么剩下的就是如何去做。似乎和Mac上的一样


最终目标是让人们只需在C代码中加入,并使其正常工作。

这取决于您使用的macOS版本

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

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

你可以在标题问题的答案中找到一些相关链接,该链接是“不,它不能”。

@Linux:

  • /动态库(.so)的usr/lib路径
  • /库头的usr/include路径(.h)
/usr/local/include它是不由发行版管理的用户程序的路径前缀。为了找到库,您需要指明C编译器的这个路径。你的命令是这样的:

gcc -o <src_program_app> -I/usr/local/include/<ur_library_dir> <src_program>.c
gcc-o-I/usr/local/include/.c
其中src_program.c具有在ur_library_dir上找到的库的导入


但是,您可以稍后尝试使用类似Cmake的生成系统,该系统可以自动编译。

对于Linux和Mac,请参阅。请注意,有关Unix堆栈交换的问题可以追溯到2011年。如果有任何与macOS(当时的macOS X)相关的信息,它可能不再准确。SIP功能更改了规则。在Windows中,没有一个位置可以放置头文件。请记住,Windows是一个不利于开发人员的环境。