当前位置: 首页 > 面试题库 >

lib {library name} .a / .so是Linux中静态库的命名约定吗?

贺宏逸
2023-03-14
问题内容

最近,我不得不在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_*.sonss_*.so



 类似资料:
  • 问题内容: 我参与了有关Linux库的一些辩论,并想确认一些事情。 以我的理解(如果我做错了请纠正我,稍后我将编辑我的文章)在构建应用程序时有两种使用库的方式: 静态库(.a文件):在链接时,会将整个库的副本放入最终应用程序中,以便调用方应用程序始终可以使用库中的功能 共享对象(.so文件):在链接时,仅通过相应的标头(.h)文件针对其API验证了对象。该库直到需要运行时才真正使用。 静态库的明显

  • 问题内容: 有一条规则说: 代表常量(最终变量)的名称必须全部使用大写字母,并使用下划线分隔单词(摘自http://geosoft.no/development/javastyle.html) 对于基本类型(例如int或字符串)可以很好地工作: 但是非原始类型呢?在大多数情况下,我已经看到以下内容: 或单例,实例变量不是大写的。 问题是声明这些类型的变量(如日志和实例)的正确方法是什么? 问题答案

  • 使用.a静态库 ar生成.a静态库 利用这里制作的.a静态库, 来链接使用这个.a静态库, 并验证这一切是否如预期那样 同样的, 继续通过clang直接操作, 更便于理解IDE底层执行的过程 一、前期准备 准备了一个test.m文件, 用来链接.a静态库并生成可执行文件, 观察运行结果 代码 #import <Foundation/Foundation.h> #import "OCTest

  • 为了在跨API开发中向开发者提供一致的开发体验,所有的命名应该保证: 简单 直观 一致 这适用于接口、资源、集合、方法以及消息的命名。 因为很多开发者并非以英语作为母语,所以命名约定的目标之一是确保大多数开发者可以更容易理解 API。对于方法和资源,我们鼓励使用简单、直观和一致的单词来命名。 API 中的命名应该使用正确的美式英语。例如,使用美式英语的 license 而非英式英语的 licenc

  • 在本节,我们不会讨论适用于大规模和可维护的最佳 CSS 命名方案,因为这不仅仅超过了个人的能力范围,也不是一个Sass样式指南可以解决的问题。我个人推荐遵从 CSS Guidelines 的建议。 良好的命名对保持整体代码的一致性和可读性非常重要,在 Sass 中可以命名的地方如下: 变量; 函数; 混合宏。 由于 Sass 占位符遵循和类名相同的命名模式,因此被视为常规的 CSS 选择器,也就在

  • 函数名 小技巧 使用小写字母,并用下划线分隔单词。使用双冒号 :: 分隔库。函数名之后必须有圆括号。关键词 function 是可选的,但必须在一个项目中保持一致。 如果你正在写单个函数,请用小写字母来命名,并用下划线分隔单词。如果你正在写一个包,使用双冒号 :: 来分隔包名。大括号必须和函数名位于同一行(就像在Google的其他语言一样),并且函数名和圆括号之间没有空格。 # Single fu