<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<LINK REL="stylesheet" TYPE="text/css" HREF="doc.css">
<META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.71">
<TITLE>ar65 Users Guide</TITLE>
</HEAD>
<BODY>
<H1>ar65 Users Guide</H1>
<H2>
<A HREF="mailto:uz@cc65.org">Ullrich von Bassewitz</A></H2>
<HR>
<EM>ar65 is an archiver for object files generated by ca65. It allows to create
archives, add or remove modules from archives, and to extract modules from
existing archives.</EM>
<HR>
<P>
<H2><A NAME="toc1">1.</A> <A HREF="ar65.html#s1">Overview</A></H2>
<P>
<H2><A NAME="toc2">2.</A> <A HREF="ar65.html#s2">Usage</A></H2>
<P>
<H2><A NAME="toc3">3.</A> <A HREF="ar65.html#s3">Copyright</A></H2>
<HR>
<H2><A NAME="s1">1.</A> <A HREF="#toc1">Overview</A></H2>
<P>ar65 is a replacement for the libr65 archiver that was part of the cc65 C
compiler suite developed by John R. Dunning. libr65 had some problems and
the copyright does not permit some things which I wanted to be possible,
so I decided to write a completely new assembler/linker/archiver suite
for the cc65 compiler. ar65 is part of this suite.</P>
<H2><A NAME="s2">2.</A> <A HREF="#toc2">Usage</A></H2>
<P>The archiver is called as follows:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
Usage: ar65 <operation ...> lib file|module ...
Operations are some of:
r Add modules
d Delete modules
t List library table
v Increase verbosity (put before other operation)
x Extract modules
V Print the archiver version
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>You may add modules to a library using the <CODE>'r'</CODE> command ('a' is deprecated). If the library
does not exist, it is created (and a warning message is printed which you
may ignore if creation of the library was your intention). You may
specify any number of modules on the command line following the library.</P>
<P>If a module with the same name exists in the library, it is replaced by
the new one. The archiver prints a warning, if the module in the library
has a newer timestamp than the one to add.</P>
<P>Here's an example:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ar65 r mysubs.lib sub1.o sub2.o
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>This will add two modules to the library 'mysubs.lib' creating the
library if necessary. If the library contains modules named sub1.o or
sub2.o, they are replaced by the new ones.</P>
<P>Modules names in the library are stored without the path, so, using</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ar65 v v r mysubs.lib ofiles/sub1.o ofiles/sub2.o
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>will verbose add two modules named 'sub1.o' and 'sub2.o' to the library.</P>
<P>Deleting modules from a library is done with the <CODE>'d'</CODE> command. You may not
give a path when naming the modules.</P>
<P>Example:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ar65 d mysubs.lib sub1.o
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>This will delete the module named 'sub1.o' from the library, printing an
error if the library does not contain that module.</P>
<P>The <CODE>'t'</CODE> command prints a table of all modules in the library ('l' is deprecated).
Any module names on the command line are ignored.</P>
<P>Example:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ar65 tv mysubs.lib
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Using the <CODE>'x'</CODE> command, you may extract modules from the library. The
modules named on the command line are extracted from the library and put
into the current directory.</P>
<P>Note: Because of the indexing done by the archiver, the modules may have
a changed binary layout, that is, a binary compare with the old module
(before importing it into the library) may yield differences. The
extracted modules are accepted by the linker and archiver, however, so
this is not a problem.</P>
<P>Example for extracting a module from the library:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ar65 x mysubs.lib sub1.o
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>The <CODE>'V'</CODE> command prints the version number of the assembler. If you send
any suggestions or bugfixes, please include your version number.</P>
<P>In addition to these operations, the archiver will check for, and warn
about duplicate external symbols in the library, every time when an
operation does update the library. This is only a warning, the linker
will ignore one of the duplicate symbols (which one is unspecified).</P>
<H2><A NAME="s3">3.</A> <A HREF="#toc3">Copyright</A></H2>
<P>ar65 (and all cc65 binutils) are (C) Copyright 1998-2000 Ullrich von
Bassewitz. For usage of the binaries and/or sources the following conditions
do apply:</P>
<P>This software is provided 'as-is', without any expressed or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.</P>
<P>Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:</P>
<P>
<OL>
<LI> The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.</LI>
<LI> Altered source versions must be plainly marked as such, and must not
be misrepresented as being the original software.</LI>
<LI> This notice may not be removed or altered from any source
distribution.</LI>
</OL>
</P>
</BODY>
</HTML>