我最近不得不在 Ubuntu 系统上做一些小的编程(我是一个非常低级的初学者),我真的只是熟悉 makefile。
我注意到告诉链接器要包含哪些库的参数总是 -l{library name},其中相应的库将是/usr/lib 文件夹中名为“lib{library name}.a”的东西。
我想知道:这是一个惯例吗?我原以为我需要键入 -llibNAME 才能找到名为 libNAME.a 的库,但它似乎假定有一个 lib 前缀。
总是这样吗?我可以在不使用 lib 前缀的情况下命名库吗?
最佳答案
您可以任意命名,但是 ld
的 -l
假设一个 lib
前缀适用于静态库和共享库回到很远的地方;您需要明确命名它才能使用不带 lib
前缀的名称。
这甚至在现代系统上也很有用:名称 libfoo.so
可以被识别为链接时库,而 foo.so
表示共享对象实现一个运行时插件。或者用特定于子系统的前缀代替 lib
来识别特定子系统的插件;参见例如 pam_*.so
和 nss_*.so
。
关于linux - lib{library name}.a/.so 是 Linux 中静态库的命名约定吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6561273/