mid-14c., gunne "an engine of war that throws rocks, arrows or other missiles from a tube by the force of explosive powder or other substance," apparently a shortening of woman's name Gunilda, found in Middle English gonnilde "cannon" and in an Anglo-Latin reference to a specific gun from a 1330 munitions inventory of Windsor Castle ("... una magna balista de cornu quae Domina Gunilda ..."). Also compare gonnilde gnoste "spark or flame used to fire a cannon" (early 14c.).
The identification of women with powerful weapons is common historically (such as Big Bertha, Brown Bess, Mons Meg, etc.).
Or perhaps gun is directly from Old Norse gunnr "battle." The word was perhaps influenced by or confirmed by (or possibly from) Old French engon, dialectal variant of engin "engine."
Meaning grew with technology, from cannons to firearms as they developed 15c.; popularly applied to pistols and revolvers from 1744. In modern military use the word is restricted to cannons (which must be mounted), especially long ones used for high velocity and long trajectory. Hence great guns (1884 as an exclamation) distinguished from small guns (such as muskets) from c. 1400. Meaning "thief, rascal" is from 1858. For son of a gun, see son. To jump the gun (1912, American English) is a figurative use from track and field. Guns "a woman's breasts" (especially if prominent) attested by 2006.
[G]un covers firearms from the heaviest naval or siege guns (but in technical use excluding mortars and howitzers) to the soldier's rifle or the sportsman's shotgun, and in current U.S. use even the gangster's revolver. In the other European languages there is no such comprehensive word, but different terms for the small or hand gun of the soldier or sportsman (even these, sometimes differentiated) and the heavy naval guns or artillery pieces .... [Buck, 1949]
"shoot with a gun," 1620s, from gun (n.). Related: Gunned; gunning. The sense of "accelerate an engine" is from 1930, from earlier phrase give (her) the gun (1917), which appears to have originated in pilots' jargon in World War I; perhaps from the old military expression give a gun "order a gun to be fired" (c. 1600).