Se ha mencionado varias veces man 1 ident
, así que aquí hay detalles sobre el uso de ese método.
ident
es un comando que viene con el RCS (Sistema de control de revisiones), pero también podría estar disponible si está utilizando CVS (sistema de versiones simultáneas) o Subversion.
Se podría utilizar de esta manera (clonado a partir de la página del manual):
#include <stdio.h>
static char const rcsid[] =
"$Id: f.c,v 5.4 1993/11/09 17:40:15 eggert Exp $";
int main() { return printf("%s\n", rcsid) == EOF; }
y FC se compila en fo, entonces el comando
ident f.c f.o
es la salida
f.c:
$Id: f.c,v 5.4 1993/11/09 17:40:15 eggert Exp $
f.o:
$Id: f.c,v 5.4 1993/11/09 17:40:15 eggert Exp $
Si su f.o
se agregaron a una biblioteca estática f.a
entonces ident f.a
debe mostrar un resultado similar. Si tiene varios [a-z].o
construidos de forma similar en su az.a
, debe encontrar todas sus cadenas en el archivo az.a
.
CAVEAT: El hecho de que estén en el archivo .a no significa que se incluirán en el archivo de programa. A menos que el programa los haga referencia, el vinculador no necesita incluirlos. Por lo tanto, generalmente debe tener un método en cada módulo para devolver la cadena, y la aplicación debe llamar a ese método. Hay formas de convencer a la mayoría de los vinculadores de que se trata de un símbolo obligatorio sin hacer referencia a él, pero depende del vinculador y está fuera del alcance de esta respuesta.
En cambio, si está familiarizado con el (sistema de control de código fuente) CCSC, entonces sería utilizar man 1 what
su lugar, y que sería el siguiente (hecho con macros para mostrar la flexibilidad disponible):
#include <stdio.h>
#define VERSION_STR "5.4"
#define CONFIG "EXP"
#define AUTHOR "eggert"
static char const sccsid[] =
"@(#) " CONFIG " v " VERSION_STR " " __DATE__ " " __TIME__ " " AUTHOR;
int main() { return printf("%s\n", sccsid) == EOF; }
y fc se compila en fo, entonces el comando
what f.c f.o
es la salida
f.c:
@(#) EXP v 5.4 1993/11/09 17:40:15 eggert
f.o:
@(#) EXP v 5.4 1993/11/09 17:40:15 eggert
PS: ambos ident
y what
son comandos que vienen con sistemas de control de fuente centralizados específicos. Si está utilizando un sistema de control de fuente distribuida (como git), el concepto completo puede no tener sentido. Para algunas ideas usando git
, vea este hilo: Moving from CVS to git: $Id:$ equivalent? aunque el hash no es lo mismo que un número de versión. :)
Las soluciones a continuación (dos mientras escribo) están disponibles para bibliotecas compartidas también, por supuesto. –
Acabo de agregar otra respuesta en función de su edición ... Espero que ayude. – jheddings