库 C 头文件在 Linux 上的什么地方
Where do library C header files go on Linux
令人尴尬的基本问题。 sudo apt-get install libmemcached6
- 在Linux机器(Ubuntu)上的典型安装中,.h和.o或.so位于何处? 而且,我如何确保 g++ 可以拾取它们?
他们转到/usr/include 和/usr/lib。如果使用 -l 选项(用于库),它应该从这些标准位置找到它们。如果您包括使用<file.h>
它也应该从正确的位置获取它。
在 Ubuntu(和其他 Debian 变体)上,您可以使用 dpkg
命令来查找。例如:
$ dpkg -L libxml2
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/libxml2
/usr/share/doc/libxml2/AUTHORS
/usr/share/doc/libxml2/NEWS.gz
/usr/share/doc/libxml2/TODO.gz
/usr/share/doc/libxml2/copyright
/usr/share/doc/libxml2/README
/usr/share/doc/libxml2/changelog.Debian.gz
/usr/share/doc/libxml2/README.Debian
/usr/lib
/usr/lib/libxml2.so.2.7.8
/usr/lib/libxml2.so.2
如您所见,Debian 软件包通常不包含.h
文件;这些文件通常位于相应的-dev
软件包中。因此,您可以在此处找到头文件:
$ dpkg -L libxml2-dev
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/libxml2-dev
/usr/share/doc/libxml2-dev/AUTHORS
/usr/share/doc/libxml2-dev/NEWS.gz
/usr/share/doc/libxml2-dev/TODO.gz
/usr/share/doc/libxml2-dev/copyright
/usr/share/doc/libxml2-dev/README
/usr/share/doc/libxml2-dev/changelog.Debian.gz
/usr/share/aclocal
/usr/share/aclocal/libxml2.m4
/usr/share/man
/usr/share/man/man3
/usr/share/man/man3/libxml.3.gz
/usr/share/man/man1
/usr/share/man/man1/xml2-config.1.gz
/usr/include
/usr/include/libxml2
/usr/include/libxml2/libxml
/usr/include/libxml2/libxml/HTMLtree.h
/usr/include/libxml2/libxml/tree.h
/usr/include/libxml2/libxml/xmlreader.h
/usr/include/libxml2/libxml/xmlschemastypes.h
...
至于gcc
,手册解释了它如何搜索头文件。请注意,这与使用 -l
指示链接器链接到某个库是不同的,并且是分开的。
在 Linux 和大多数基于 Unix 的系统上,可以在以下两个位置之一找到库:
- /
- usr/lib/ /
- usr/local/lib/
这两个位置之间的区别在于后者用于第三方库。因此,如果您发布了自己的库或从第三方存储库(例如 ppa)安装了库,这些文件应转到 /usr/local/lib
。
头文件的存储可以用上面的类比来理解。这些文件夹是:
- /
- usr/include/ /
- usr/local/include/
相关文章:
- 在 c/c++ 中打开 PhysicalDrive 的句柄并写入 MBR 的 linux 等效是什么?
- 我可以存储数据的地方/C++,Linux,QtCreator
- 关于这个在 Linux 上使用 gcc 编译的程序中的 vtable,nm 告诉我什么?
- 什么是"MFC Dialog Extension"?(Windows/C++ 新手 - Linux 背景)
- 我可以为这些特定函数使用什么C++标头?Linux
- 如果我在 Linux 上更改C++动态共享库,而我的可执行程序在其上使用,会发生什么
- Linux和macOS中的WinAPI等效于什么?
- GCC 编译器对类型转换有什么作用?为什么 mac 和 Linux 上的输出不同
- 什么是最好的(即快速和小)是在GCC linux上atomic_fetch_ptr和atomic_set_ptr
- 什么是 gcc Linux x86-64 C++中的有效指针
- 如果我不将其存储在任何地方,返回值会发生什么情况?
- 在Linux上构建具有链接时代码生成功能的静态库的正确方法是什么
- 在 Linux C++ 中,HANDLE 的数据类型可能是什么
- 在Linux上编写OpenGL 4.X应用程序的常用库是什么?
- ./lib/gcc/x86_64-linux-gnu/4.6/libstdc++.a 的用法是什么
- 计算"copying a binary file in c++ on linux"消耗时间的最佳方法是什么?
- 在 Ubuntu Linux 中查找 C/C++ 源代码的最佳工具是什么?
- "port" Visual Studio C++项目以在 Linux 上编译的最简单方法是什么?
- 什么是 Linux 实用程序来破坏C++符号名称
- 库 C 头文件在 Linux 上的什么地方