Talk:Linker (computing)

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia
Former good article nomineeLinker (computing) was a Engineering and technology good articles nominee, but did not meet the good article criteria at the time. There may be suggestions below for improving the article. Once these issues have been addressed, the article can be renominated. Editors may also seek a reassessment of the decision if they believe there was a mistake.
Article milestones
DateProcessResult
June 1, 2008Good article nomineeNot listed

Untitled[edit]

Much overlap here with the Library Linking (Computer Science) which discusses dynamic linking. A linker doesn't actually handle dynamic linking. Should this article point to the other as a "See Also"? Its a more appropriate place to discuss non-static linking. -- Robert Lee

The 'address space' link points to an article explaining IP address space rather than the address space of a process . I am unsure on how to correct this link and where it should point to, just wanted to make sure it was brought to the attention of someone who can fix it. --Chris

Linkers can also assemble libraries, so this article should address that process too. - Jrn 16:47, 11 Oct 2004 (UTC)

The first sentence states: "objects generated by a compiler" ... However, an 'assembler' also generates object files. Additionally, there is no mention of any kind of stub code inserted by a linker to handle the startup of an executable on an operating system. Madman420 (talk) 22:57, 5 October 2009 (UTC)[reply]

deleted criticism section[edit]

No substantiated evidence, should probably be in a discussion on the dynamic linking page, not in "what a linker is". —The preceding comment was added on 22:07, 23 March 2006.

possible plagiarism? (fixed)[edit]

The sentence "this information comes mainly in the form of symbol definitions, which arise in two varieties: defined or exported symbols are functions or variables that are present in the module represented by the object, and which should be available for use by other modules. Undefined or imported symbols are functions or variables that are called or referenced by this object, but not internally defined" is present, verbatim, in a European patent application filed by a major U.S. company. But the date of the application is after the date that the sentence appeared in this article? So it seems that either the company plagiarized Wikipedia, or Wikipedia lifted the verbiage from a hardcopy source (probably one of the ones listed). In any case, in preparation for WP:GAN, I am deleting and re-writing the content in question. 69.140.152.55 (talk) 05:20, 28 May 2008 (UTC)[reply]

GA Review[edit]

This review is transcluded from Talk:Linker/GA1. The edit link for this section can be used to add comments to the review.

GA quickfail. I'm sorry to inform the editors of this article, that I am quickfailing the article. Here are some issues to resolve before renomination:

  • Per WP:LEAD, the lead for this article should only be one full paragraph (max two).
  • There is not a single in-line citation in the article. The article must be fully references for variability.
  • The web citations in the reference section should be formatted with Template:cite web.

Thanks and good luck with improving the article. Nikki311 22:05, 30 May 2008 (UTC)[reply]

Thank you for the feedback. There are actually two inline references; both of them were put there by me . However, I truly appreciate your feedback and hope that other contributors will use it to improve the quality of this article (I can do it, but I prefer that it be done by somebody more versed in the subject). 69.140.152.55 (talk) 00:55, 1 June 2008 (UTC)[reply]
Damn...a typo. Anyway, no problem. Nikki311 01:55, 1 June 2008 (UTC)[reply]


linker a process or a program[edit]

Why is a linker a program and not a process (program in execution)? What is the name of the linkerprogram in execution? —Preceding unsigned comment added by 77.134.90.186 (talk) 18:31, 12 February 2009 (UTC)[reply]

Seems to me that it is, at least sometimes, both. It is often implemented as a separate program, though that might not be always necessary. There is a story about how OS/360 got a linkage editor (that actually does editing) at about the same time that the need for such was going away. The linkage editor allows, for example, replacing routines in already linked load modules. But OS/360 (probably later) supplies the loader, which links and then immediately runs a program, avoiding the disk operations to write it out and read it back. Gah4 (talk) 22:55, 9 September 2019 (UTC)[reply]

History section[edit]

You might want to look for web about the history of ld in compiling toolchain. Also it'd be nice if wikipedia would tell about the purpose of first linkers. —Preceding unsigned comment added by 88.113.55.213 (talk) 16:02, 13 September 2009 (UTC)[reply]

Static Linking[edit]

I think that the concept of static linking is fundamental and critical to this topic. I agree that dynamic linking should be a separate topic and that just the processing done by a link editor for dymanic linking should be explained. I think that explaining dynamic linking in terms of how it developed from static linking would be extremely informative for anyone unfamiliar with this topic. I think there should also be more history; did compilers (such as COBOL) half a century ago generate object files that were then processed by the link editor? Sam Tomato (talk) 03:51, 31 March 2011 (UTC)[reply]


Half a century? 1961? linking goes much farther back than that. Peter Flass (talk) 03:00, 23 September 2011 (UTC)[reply]

I suppose, but much of what we think of today, especially the name "linkage editor", came from OS/360. As well as I know, the OS/360 LKED is the first one able to read its own output, to add, subtract, or replace modules, generate or remove overlay structures, and such. In any case, fifty years ago COBOL programmers might be using the static linker of OS/360. OS/360 itself, without any help from LKED, allows for dynamic linking such as with the LINK macro instruction, and the run-time libraries of some programming languages might use that. The modern meaning for dynamic linking came a little later. Gah4 (talk) 23:02, 9 September 2019 (UTC)[reply]
As well as I know it, it goes back to SunOS 4.0 in 1988. It may have come from other Unix derived systems, and rapidly went into other Unix-like systems after that. VMS, as well as I know back to 1.0, keeps the system library routines in (virtual) memory and dynamically links to them when a program starts. As well as I remember it, there isn't a convenient way for ordinary users to use this feature. Gah4 (talk) 23:10, 9 September 2019 (UTC)[reply]

Suggestions[edit]

I think this article has a slight bias toward unix and recent hardware rather than being a general article. Also, the IBM term "Linkage Editor" is introduced without indicating what that implied: ability to reprocess linked executables and add, delete, and replace individual modules. Peter Flass (talk) 02:58, 23 September 2011 (UTC)[reply]

It does seem that the IBM term has been applied to many systems that don't provide the reprocessing ability of LKED. Otherwise, there aren't huge differences between the way it works in many currently popular systems. Gah4 (talk) 23:12, 9 September 2019 (UTC)[reply]

SINTRAN III, UNIX ???[edit]

SINTRAN III wasn't UNIX. There was a UNIX that could be run on top of SINTRAN III (delegating a lot of responsibilites to SINTRAN III, in a fashion similar to User Mode Linux, if I understood correctly), called NDIX, as described on page 11 in the brochure ND-500 - Technical Overview. Don't know anything about the linker. — Preceding unsigned comment added by Se mj (talkcontribs) 18:57, 8 March 2013 (UTC)[reply]

whole[edit]

Regarding linkers and libraries. Ones that I know, include a whole library member when any appropriately indicated symbol is referenced. One could put everything in one library member, such that the whole thing was included. This would not be a linker feature, but library builder choice. Object modules with multiple entry points must be appropriately indexed. I do remember it was not unusual for C libraries, on systems with software floating point, not to include the floating point module as referenced from printf. (That is, a weak external symbol.) There was a run-time error message if printf needed to do floating point conversions, in programs that didn't otherwise do floating point. Gah4 (talk) 20:46, 31 May 2018 (UTC)[reply]

I was trying to make clear that the linker does not include the entire library, but only the modules called for. I may not have worded this as well as I wanted to. Peter Flass (talk) 00:26, 1 June 2018 (UTC)[reply]
Yes, there is the complication of modules with multiple entry points. There is a balance of overhead, between including unused parts, and likely larger but separate modules. For example, in most systems SIN and COS are entry points into the same module, with savings over separate modules to do almost the same thing. Gah4 (talk) 23:15, 9 September 2019 (UTC)[reply]

Merge from GNU linker[edit]

This article was tagged for notability and reliance on primary sources since 2011. It also contained relatively little information, and described a specific type of linker, so I merger it into Linker (computing) as a section of its own. Peter Flass (talk) 22:51, 9 September 2019 (UTC)[reply]

Loader[edit]

The discussion of linker vs. loader reminds me of the PDP-10/TOPS-10 system, where the program is loaded into memory, and then if desired, written to disk from there. The original SAV file is just a copy of memory, word for word. Later on, the EXE file, which is a somewhat compressed version, came along. The OS/360 linkage editor has the ability to link programs larger than the available (after the linker itself) memory. I believe that some versions use overlay to keep themselves smaller. The result was, that in many cases, linking was slower than compiling. The OS/360 loader loads directly into memory, along with the loader itself. It has no provision to write out the program to disk. Gah4 (talk) 02:22, 7 September 2022 (UTC)[reply]

Typical[edit]

The article mentions three typical types of symbols. It occurs to me that there are some less typical ones, such as Q-type address constants used as pseudo-registers for some PL/I systems. I believe other systems have something similar, where the linker keeps track of offsets into some dynamically allocated memory block. There are also symbols for COMMON blocks, or external structures, which are similar to, but not quite the same, as entry point symbols. Gah4 (talk) 16:40, 16 September 2022 (UTC)[reply]

die.net vs Manned.org[edit]

Would somebody please explain, why those guys (Artoria2e5, Engr. Smitty, Idkiguessus, Roundish, Wikipedialuva, Ponyo) like Manned.org better than die.net?! And why they regard it worth fighting their edit war. die.net had been used here for ages here, and all of a sudden at least 6 guys spend a lot of time fighting it.--91.65.14.239 (talk) 22:01, 8 May 2023 (UTC)[reply]

@Ponyo: don't you want to explain, why you did, what you did?--91.64.134.52 (talk) 22:37, 8 May 2023 (UTC)[reply]
It's pretty standard for an admin to protect a page that has a user hopping from IP to IP to edit war well beyond WP:3RR to restore disputed content. No need to ping me again unless you get consensus for your edit and the page needs to be unprotected before the protection is set to expire.-- Ponyobons mots 22:49, 8 May 2023 (UTC)[reply]

Would somebody please explain seriously why Manned.org gets preferred over die.net? duckduckgo presented die.net manual pages to me for years, and not a single time a Manned.org manual page. Quite possibly one is not better than the other. So why replace that one here without giving a reason, that had been used here for quite a while (supposedly)? And yes, I can imagine, it is easier to fight an account or a fixed IP address. But still: I am curious, I seriously want to know, why you are fighting for Manned.org . Would you please give me a reason? (I did look at both of them with adblock suspended temporarily.)--91.64.246.65 (talk) 06:10, 9 May 2023 (UTC)[reply]