梦见家里死人了代表什么预兆| 理疗和按摩有什么区别| 途径是什么意思| 御是什么意思| 什么的山顶| 掉头发要吃什么| 月光石五行属什么| 花椒泡脚有什么功效| 米鱼是什么鱼| 紫砂壶适合泡什么茶| 研究生体检都检查什么| 脑袋进水什么意思| 肽有什么作用| 腰椎骶化是什么意思| 朋友妻不可欺是什么意思| 213是什么意思| 闰六月给父母买什么| 螃蟹的血是什么颜色的| 三文鱼刺身是什么意思| 前列腺钙化吃什么药| 韩束适合什么年龄段的人用| 什么是肾上腺素| 什么方法减肥最快| 禳是什么意思| 娘娘命是什么样的命| 心衰应该注意什么| 不加热血清反应素试验是什么| 慈禧姓什么| 什么海里没有鱼| 手指脱皮是什么原因| 早日康复是什么意思| 艾灸后放屁多是什么原因| 云南白药里面的保险子有什么用| mario是什么意思| 为什么脚会脱皮| 脖子出汗是什么原因| 河豚是什么| 体脂率是什么| 经期吃榴莲有什么好处| 广西狗肉节是什么时候| 一热就头疼是什么原因| 哈伦裤配什么上衣好看| 做梦抓鱼什么意思周公解梦| 11月11日是什么星座| 啤酒不能和什么一起吃| 霉菌阴性是什么意思| 为什么一吃饭就拉肚子| 蛋白粉什么时候吃效果最好| 属猪跟什么属相最配| 海苔吃多了有什么坏处| 酸化是什么意思| 吃鱼生后吃什么打虫药| 盐酸舍曲林片治疗什么程度的抑郁| 切尔斯什么意思| 立春是什么时候| 公务员是什么职业| 消字号是什么意思| 观音菩萨是属什么生肖| marni是什么牌子| 米放什么不生虫子| 塑料属于什么垃圾| 惺惺相惜什么意思| 南瓜子有什么功效| 攥是什么意思| 注意力不集中是什么原因| 裸婚是什么意思| 茯苓泡水喝有什么功效| 命中劫是什么意思| 赟怎么读 什么意思| 国企属于什么编制| 长期拉肚子是什么原因| 夫妻是什么意思| av是什么| 瑞士用什么货币| 尿分叉吃什么药好得快| 白蛋白低是什么意思| 麻豆是什么意思| 六月二十九日是什么星座| 什么的尾巴长不了歇后语| 焦虑症应该挂什么科室| 什么叫钙化灶| 眼视光医学是干什么的| 神采什么什么| 淋巴是什么| 小儿流清鼻涕吃什么药效果好| 真维斯属于什么档次| 后羿射日什么意思| 头晕眼花吃什么药| 石钟乳是什么意思| 吃什么改善睡眠| 勇者胜的上半句是什么| 检查神经做什么检查| 混社会的人一般干什么| 为什么新疆人不吃猪肉| 骶椎腰化什么意思| 玉历宝钞是什么书| 脑梗吃什么食物| 镜片什么材质好| 痉挛吃什么药| 香膏是什么| 80年属什么生肖| 妮字五行属什么| loaf是什么意思| 叶公好什么| 感同身受什么意思| 孕妇能喝什么饮料| 三点水一个分读什么| 鹿沼土是什么土| 烟头属于什么垃圾| dfi是什么意思| 彩虹像什么挂在天空| 外感风寒是什么意思| 扫描件是什么意思| 为什么手淫很快就射| 母亲节送给妈妈什么礼物| 女人脾虚吃什么药最好| 凌晨三点是什么时辰| 什么化妆品好用哪个牌子的| 睡觉手发麻是什么原因| 28岁今年属什么| 囊肿和肿瘤有什么区别| 为什么空腹血糖比餐后血糖高| 下午右眼跳是什么预兆| 子宫肌瘤吃什么| 77岁属什么生肖| 血脂指的是什么| 横眉冷对是什么意思| 圣经是什么意思| 凉薄是什么意思| 什么手| 李白被人们称为什么| 氧气是什么| 岁月如歌什么意思| 军级相当于什么级别| 奥氮平片是什么药| 刺五加配什么药治失眠| 决明子和什么搭配最好| 低盐饮食有利于预防什么| 私定终身是什么意思| 什么颜色加什么颜色等于什么颜色| 呦呦是什么意思| 麝牛是什么动物| 女人绝经一般在什么年龄段| 启读什么| 性取向是什么意思| 梦到前男友是什么意思| 葡萄酒中的单宁是什么| 10是什么星座| 仙草粉是什么做的| 脚后筋疼是什么原因引起的| 做包皮手术有什么好处| 加油什么意思| 三元及第是什么意思| 游园惊梦讲的是什么| 偶尔头晕是什么原因| 6月份怀孕预产期是什么时候| 梦见掉了一颗牙齿是什么征兆| 开什么店好赚钱| 吸氧有什么好处| 沈腾和马丽是什么关系| 处方药是什么意思| 鎏是什么意思| 胎盘老化对胎儿有什么影响| 舌头中间疼是什么原因| 月子期间可以吃什么水果| 行房出血是什么原因| 丁香泡水喝有什么功效和作用| 什么情况下需要切除子宫| 飞蚊症用什么眼药水| 龟头炎用什么软膏| 状元郎是什么生肖| 下巴下面是什么部位| crp高是什么感染| 碳酸氢铵是什么| 喉咙一直有痰是什么原因| 黑洞长什么样| 5月20日是什么星座| 尿道炎挂什么科| 鳞状上皮细胞是什么意思| 吞咽困难是什么感觉| 乳腺增生的前兆是什么| 一叶一菩提一花一世界什么意思| 乌豆是什么| 什么叫肿瘤| 二次元文化是什么意思| 三围是什么| 拔完牙可以吃什么| 美特斯邦威是什么档次| 调岗是什么意思| 7月12日是什么星座| 甲状腺结节看什么科室最好| 果肉属于什么组织| 怀孕吃叶酸有什么用| 1978年属什么的| 务农是什么意思| 血常规检查挂什么科| 文化大革命什么时候结束| 猴子屁股为什么是红色| 吃什么提高免疫力最快| h代表什么| 一九九八年属什么生肖| 椭圆机是什么| 祸水什么意思| 家里为什么会有蚂蚁| 眼皮发肿是什么原因| 脸颊为什么会凹陷| 贵州菜属于什么菜系| 肠上皮化生是什么意思| 7.28是什么星座| 痉挛是什么症状| 焖面用什么面条| 灰色配什么颜色好看| 13点是什么时辰| 表白送什么礼物好| 心脏官能症吃什么药| 最大的罩杯是什么杯| 慰安妇什么意思| 单脱是什么意思| 3911农药主要治什么| 小便多是什么原因| 隐喻的意思是什么| 肚子胀吃什么药| 生小孩有什么补贴政策| 牛奶能做什么美食| 一级法官是什么级别| 七星瓢虫吃什么| 囊肿是什么原因造成的| 为什么人会打喷嚏| 半夏反什么药| 心脏上有个小洞是什么病| 外阴瘙痒用什么药好| 今年53岁属什么生肖| 结婚是什么意思| 瞿读什么| 蜘蛛属于什么| 尿肌酐低说明什么| 超声心动图检查什么| 慢性扁桃体炎吃什么药| 为什么会得耳石症| 中的反义词是什么| 卖关子是什么意思| 人老珠黄是什么动物| 樱桃补什么| 舌吻会传染什么病| 尿道炎用什么药治疗最好| 斯凯奇鞋是什么档次| 痘痘破了涂什么药膏| 晚上十一点是什么时辰| 高铁列车长是什么级别| 焉是什么意思| 属牛男和什么属相最配| 鸡为什么吃自己下的蛋| 小孩子手脱皮是什么原因引起的| 大爱什么意思| 金碧辉煌是什么生肖| 健康证明需要检查什么| 手机什么时候发明的| 什么是水解奶粉| hpv18阳性是什么意思| 什么是根管治疗牙齿| 眉毛尾部有痣代表什么| 为什么精子射不出来| 铜钱癣用什么药| 后知后觉什么意思| 百度

2016一带一路中国企业海外投资与合作峰会

百度 我们教育孩子要有技巧和方法,打是最不可取的。

In computing, a library is a collection of resources that can be used during software development to implement a computer program. Commonly, a library consists of executable code such as compiled functions and classes, or a library can be a collection of source code. A resource library may contain data such as images and text.

Illustration of an application which uses libvorbisfile to play an Ogg Vorbis file

A library can be used by multiple, independent consumers (programs and other libraries). This differs from resources defined in a program which can usually only be used by that program. When a consumer uses a library resource, it gains the value of the library without having to implement it itself. Libraries encourage software reuse in a modular fashion. Libraries can use other libraries resulting in a hierarchy of libraries in a program.

When writing code that uses a library, a programmer only needs to know how to use it – not its internal details. For example, a program could use a library that abstracts a complicated system call so that the programmer can use the system feature without spending time to learn the intricacies of the system function.

History

edit

The idea of a computer library dates back to the first computers created by Charles Babbage. An 1888 paper on his Analytical Engine suggested that computer operations could be punched on separate cards from numerical input. If these operation punch cards were saved for reuse then "by degrees the engine would have a library of its own."[1]

 
A woman working next to a filing cabinet containing the subroutine library on reels of punched tape for the EDSAC computer.

In 1947 Goldstine and von Neumann speculated that it would be useful to create a "library" of subroutines for their work on the IAS machine, an early computer that was not yet operational at that time.[2] They envisioned a physical library of magnetic wire recordings, with each wire storing reusable computer code.[3]

Inspired by von Neumann, Wilkes and his team constructed EDSAC. A filing cabinet of punched tape held the subroutine library for this computer.[4] Programs for EDSAC consisted of a main program and a sequence of subroutines copied from the subroutine library.[5] In 1951 the team published the first textbook on programming, The Preparation of Programs for an Electronic Digital Computer, which detailed the creation and the purpose of the library.[6]

COBOL included "primitive capabilities for a library system" in 1959,[7] but Jean Sammet described them as "inadequate library facilities" in retrospect.[8]

JOVIAL has a Communication Pool (COMPOOL), roughly a library of header files.

Another major contributor to the modern library concept came in the form of the subprogram innovation of FORTRAN. FORTRAN subprograms can be compiled independently of each other, but the compiler lacked a linker. So prior to the introduction of modules in Fortran-90, type checking between FORTRAN[NB 1] subprograms was impossible.[9]

By the mid 1960s, copy and macro libraries for assemblers were common. Starting with the popularity of the IBM System/360, libraries containing other types of text elements, e.g., system parameters, also became common.

In IBM's OS/360 and its successors this is called a partitioned data set.

The first object-oriented programming language, Simula, developed in 1965, supported adding classes to libraries via its compiler.[10][11]

Linking

edit

The linking (or binding) process resolves references known as symbols (or links) by searching for them in various locations including configured libraries. If a linker (or binder) does not find a symbol, then it fails, but multiple matches may or may not cause failure.

Static linking is linking at build time, such that the library executable code is included in the program. Dynamic linking is linking at run time; it involves building the program with information that supports run-time linking to a dynamic link library (DLL). For dynamic linking, a compatible DLL file must be available to the program at run time, but for static linking, the program is standalone.

Smart linking is performed by a build tool that excludes unused code in the linking process. For example, a program that only uses integers for arithmetic, or does no arithmetic operations at all, can exclude floating-point library routines. This can lead to smaller program file size and reduced memory usage.

Relocation

edit

Some references in a program or library module are stored in a relative or symbolic form which cannot be resolved until all code and libraries are assigned final static addresses. Relocation is the process of adjusting these references, and is done either by the linker or the loader. In general, relocation cannot be done to individual libraries themselves because the addresses in memory may vary depending on the program using them and other libraries they are combined with. Position-independent code avoids references to absolute addresses and therefore does not require relocation.

Categories

edit

Executable

edit

An executable library consists of code that has been converted from source code into machine code or an intermediate form such as bytecode. A linker allows for using library objects by associating each reference with an address at which the object is located. For example, in C, a library function is invoked via C's normal function call syntax and semantics.[12]

A variant is a library containing compiled code (object code in IBM's nomenclature) in a form that cannot be loaded by the OS but that can be read by the linker.

Static

edit

A static library is an executable library that is linked into a program at build-time by a linker (or whatever the build tool is called that does linking).[13][14] This process, and the resulting stand-alone file, is known as a static build of the program. A static build may not need any further relocation if virtual memory is used and no address space layout randomization is desired.[15]

A static library is sometimes called an archive on Unix-like systems.

Dynamic

edit

A dynamic library is linked when the program is run – either at load-time or runtime. The dynamic library was intended after the static library to support additional software deployment flexibility.

Sources

edit

A source library consists of source code; not compiled code.

Shared

edit

A shared library is a library that contains executable code designed to be used by multiple computer programs or other libraries at runtime, with only one copy of that code in memory, shared by all programs using the code.[16][17][18]

Object

edit

Although generally an obsolete technology today, an object library exposes resources for object-oriented programming (OOP) and a distributed object is a remote object library. Examples include: COM/DCOM, SOM/DSOM, DOE, PDO and various CORBA-based systems.

The object library technology was developed since as OOP became popular, it became apparent that OOP runtime binding required information than contemporary libraries did not provide. In addition to the names and entry points of the code located within, due to inheritance, OOP binding also requires a list of dependencies – since the full definition of a method may be in different places. Further, this requires more than listing that one library requires the services of another. In OOP, the libraries themselves may not be known at compile time, and vary from system to system.

The remote object technology was developed in parallel to support multi-tier programs with a user interface application running on a personal computer (PC) using services of a mainframe or minicomputer such as data storage and processing. For instance, a program on a PC would send messages to a minicomputer via remote procedure call (RPC) to retrieve relatively small samples from a relatively large dataset. In response, distributed object technology was developed.

Class

edit

A class library contains classes that can be used to create objects. In Java, for example, classes are contained in JAR files and objects are created at runtime from the classes. However, in Smalltalk, a class library is the starting point for a system image that includes the entire state of the environment, classes and all instantiated objects. Most class libraries are stored in a package repository (such as Maven Central for Java). Client code explicitly specifies dependencies to external libraries in build configuration files (such as a Maven Pom in Java).

Remote

edit

A remote library runs on another computer and its assets are accessed via remote procedure call (RPC) over a network. This distributed architecture allows for minimizing installation of the library and support for it on each consuming system and ensuring consistent versioning. A significant downside is that each library call entails significantly more overhead than for a local library.

Runtime

edit

A runtime library provides access to the runtime environment that is available to a program – tailored to the host platform.

Language standard

edit

Many modern programming languages specify a standard library that provides a base level of functionality for the language environment.

Code generation

edit

A code generation library has a high-level API generating or transforming byte code for Java. They are used by aspect-oriented programming, some data access frameworks, and for testing to generate dynamic proxy objects. They also are used to intercept field access.[19]

File naming

edit

Unix-like

edit

On most modern Unix-like systems, library files are stored in directories such as /lib, /usr/lib and /usr/local/lib. A filename typically starts with lib, and ends with .a for a static library (archive) or .so for a shared object (dynamically linked library). For example, libfoo.a and libfoo.so.

Often, symbolic link files are used to manage versioning of a library by providing a link file named without a version that links to a file named with a version. For example, libfoo.so.2 might be version 2 of library foo and a link file named libfoo.so provides a version independent name to that file that programs link to. The link file could be changed to a refer to a version 3 (libfoo.so.3) such that consuming programs will then use version 3 without having to change the program.

Files with extension .la are libtool archives; not usable by the system.

macOS

edit

The macOS system inherits static library conventions from BSD, with the library stored in a .a file. It uses either .so or .dylib for dynamic libraries. Most libraries in macOS, however, consist of "frameworks", placed inside special directories called "bundles" which wrap the library's required files and metadata. For example, a framework called Abc would be implemented in a bundle called Abc.framework, with Abc.framework/Abc being either the dynamically linked library file or a symlink to the dynamically linked library file in Abc.framework/Versions/Current/Abc.

Windows

edit

Often, a Windows dynamic-link library (DLL) has the file extension .dll,[20] although sometimes different extensions are used to indicate general content, e.g. .ocx for a OLE library.

A .lib file can be either a static library or contain the information needed to build an application that consumes the associated DLL. In the latter case, the associated DLL file must be present at runtime.

See also

edit

Notes

edit
  1. ^ It was possible earlier between, e.g., Ada subprograms.

References

edit
  1. ^ Babbage, H. P. (2025-08-05). "The Analytical Engine". Proceedings of the British Association. Bath.
  2. ^ Goldstine, Herman H. (2025-08-05). The Computer from Pascal to von Neumann. Princeton: Princeton University Press. doi:10.1515/9781400820139. ISBN 978-1-4008-2013-9.
  3. ^ Goldstine, Herman; von Neumann, John (1947). Planning and coding of problems for an electronic computing instrument (Report). Institute for Advanced Study. pp. 3, 21–22. OCLC 26239859. it will probably be very important to develop an extensive "library" of subroutines
  4. ^ Wilkes, M. V. (1951). "The EDSAC Computer". 1951 International Workshop on Managing Requirements Knowledge. 1951 International Workshop on Managing Requirements Knowledge. IEEE. p. 79. doi:10.1109/afips.1951.13.
  5. ^ Campbell-Kelly, Martin (September 2011). "In Praise of 'Wilkes, Wheeler, and Gill'". Communications of the ACM. 54 (9): 25–27. doi:10.1145/1995376.1995386. S2CID 20261972.
  6. ^ Wilkes, Maurice; Wheeler, David; Gill, Stanley (1951). The Preparation of Programs for an Electronic Digital Computer. Addison-Wesley. pp. 45, 80–91, 100. OCLC 641145988.
  7. ^ Wexelblat, Richard (1981). History of Programming Languages. ACM Monograph Series. New York, NY: Academic Press (A subsidiary of Harcourt Brace). p. 274. ISBN 0-12-745040-8.
  8. ^ Wexelblat, op. cit., p. 258
  9. ^ Wilson, Leslie B.; Clark, Robert G. (1988). Comparative Programming Languages. Wokingham, England: Addison-Wesley. p. 126. ISBN 0-201-18483-4.
  10. ^ Wilson and Clark, op. cit., p. 52
  11. ^ Wexelblat, op. cit., p. 716
  12. ^ Deshpande, Prasad (2013). Metamorphic Detection Using Function Call Graph Analysis (Thesis). San Jose State University Library. doi:10.31979/etd.t9xm-ahsc.
  13. ^ "Static Libraries". TLDP. Archived from the original on 2025-08-05. Retrieved 2025-08-05.
  14. ^ Kaminsky, Dan (2008). "Chapter 3 - Portable Executable and Executable and Linking Formats". Reverse Engineering Code with IDA Pro. Elsevier. pp. 37–66. doi:10.1016/b978-1-59749-237-9.00003-x. ISBN 978-1-59749-237-9. Retrieved 2025-08-05.
  15. ^ Collberg, Christian; Hartman, John H.; Babu, Sridivya; Udupa, Sharath K. (2003). SLINKY: Static Linking Reloaded. USENIX '05. Department of Computer Science, University of Arizona. Archived from the original on 2025-08-05. Retrieved 2025-08-05.
  16. ^ Levine, John R. (2000). "9. Shared Libraries". Linkers and Loaders. ISBN 1-55860-496-0.
  17. ^ UNIX System V/386 Release 3.2 Programmers Guide, Vol. 1 (PDF). Prentice Hall. 1989. p. 8-2. ISBN 0-13-944877-2.
  18. ^ "Shared Libraries in SunOS" (PDF). pp. 1, 3.
  19. ^ "Code Generation Library". Source Forge. Archived from the original on 2025-08-05. Retrieved 2025-08-05. Byte Code Generation Library is high level API to generate and transform JAVA byte code. It is used by AOP, testing, data access frameworks to generate dynamic proxy objects and intercept field access.
  20. ^ Bresnahan, Christine; Blum, Richard (2025-08-05). LPIC-1 Linux Professional Institute Certification Study Guide: Exam 101-400 and Exam 102-400. John Wiley & Sons (published 2015). p. 82. ISBN 9781119021186. Archived from the original on 2025-08-05. Retrieved 2025-08-05. Linux shared libraries are similar to the dynamic link libraries (DLLs) of Windows. Windows DLLs are usually identified by .dll filename extensions.

Further reading

edit
血离子是检查什么的 什么鱼最好养 想一出是一出什么意思 低钾吃什么药 梦见栽花是什么意思
墓志铭是什么意思 哽咽是什么意思 农历五月初五是什么节 肝回声稍密是什么意思 1963属什么生肖
戴朱砂有什么好处 紫色和蓝色混合是什么颜色 什么时候做人流才是最佳时间 918是什么星座 青石是什么石头
阳痿早泄用什么药 6月29什么星座 阑尾炎是什么原因引起的 小孩拉肚子应该吃什么食物好 江小白是什么酒
为什么喉咙痛hcv8jop0ns3r.cn 雏凤是什么意思hcv7jop7ns2r.cn 吃什么疏通血管hcv8jop8ns6r.cn 羽毛球拍什么材质的好hcv9jop3ns2r.cn h型高血压是什么意思hcv8jop2ns5r.cn
酒花浸膏是什么hcv9jop0ns5r.cn 治疗白斑最有效的方法是什么hcv7jop9ns1r.cn gmp什么意思hcv9jop4ns3r.cn 心重是什么意思hcv9jop6ns4r.cn 一生无虞是什么意思hcv8jop8ns5r.cn
手麻挂什么科最好jiuxinfghf.com 甲亢吃什么好的更快hcv9jop7ns4r.cn 妇科凝胶排出的是什么hcv9jop5ns0r.cn 交媾是什么意思hcv9jop2ns4r.cn 一什么牛奶hcv9jop4ns7r.cn
阳历八月份是什么星座hcv9jop6ns6r.cn 5月10日什么星座hcv9jop6ns0r.cn 跑完步头疼是为什么hcv8jop7ns1r.cn 雄鱼是什么鱼chuanglingweilai.com 孩子黑眼圈很重是什么原因hcv8jop2ns0r.cn
百度