Ubuntu将其库文件存储在哪里?

我想添加自己的库以在C编译中使用,但不太清楚Ubuntu将其存储在哪里。

5它存储在 /usr/lib/usr/include 目录中。 - karthick87
我在/usr/include找到了我的库文件,我应该如何处理它们呢?是只放一个头文件和一个C文件在一起,还是将头文件和函数写在同一个.h文件中? - david25
3库和头文件是不同的东西,/usr/include目录下并不包含库,它包含的是函数/对象的定义,这些定义来自于库。问题应该改进,很难理解你想要实现什么。 - João Pinto
5个回答

根据库的不同,Ubuntu主要将其库存储在三个位置:
1. /lib 2. /usr/lib 3. /usr/local/lib
以下内容来自文件系统层次结构标准:
/lib目录包含用于引导系统和运行根文件系统中的命令(即/bin和/sbin中的二进制文件)所需的共享库映像。
/usr/lib包括对象文件、库和不打算由用户或shell脚本直接执行的内部二进制文件。应用程序可以在/usr/lib下使用一个子目录。如果应用程序使用了子目录,则所有仅由该应用程序使用的与体系结构相关的数据必须放置在该子目录中。
/usr/local/lib包含本地库,即专门为此系统设计的库,但我在FHS中找不到关于/usr/local/lib的参考,它只包含有关/usr/local的解释。

根据您对问题的评论,我认为您真正想问的是“如何安装我编写的自定义库,以及应该将其放在哪里?”
通常情况下,为其他机器上的用户构建的东西会放在/usr/local目录中。头文件应放在/usr/local/include中。已编译的库应放在/usr/local/lib中。.c文件不是库的一部分,它是源代码的一部分,通常不会为最终用户安装。您将需要root访问权限才能将文件放入这些位置之一。
要构建库,首先需要决定您是要静态库还是动态(共享)库。有关创建共享库的更多信息,请参阅3.4节的《创建共享库》http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/shared-libraries.html。(他们还对放置文件的位置有推荐 -- 大多数开发人员都会有自己的意见 :-) )


你应该告诉编译器在哪里找到你的库。假设你的库的路径是 "/path/to/lib/libfoo.a",你可以这样编译和链接你的程序 "hello.c":
gcc -L/path/to/lib -lfoo hello.c

这与Ubuntu无关,实际上我所知道的所有C编译器都支持这些标志。


在Ubuntu中,它们可以在/usr/include目录下找到。

1Header文件位于/usr/include目录下。实际的库二进制文件并不存放在这里。头文件可以被视为库的一部分,但它们需要单独安装,并且用于编译使用该库的程序。一旦使用库编译了一个程序,它就不再需要或使用头文件了。 - Eliah Kagan