Red de conocimiento informático - Problemas con los teléfonos móviles - Programación Tcb

Programación Tcb

Ocho variables de entorno

8.1 Ver variables de entorno

$ env? Muestra todas las configuraciones de variables de entorno.

$ eco $ENV_VARIABLE? Muestra la configuración de una variable de entorno especificada.

Ejemplo:

$ echo $PATH

/bin:/etc:/usr/bin:/tcb/bin

8.2 Establecer variables de entorno

$ ENV _ VARIABLE = XXX Exportar variables de entorno

Ejemplo:

$ PATH = $ PATH:$ ¿Exportar ruta/bin? Establezca la variable de entorno PATH en el valor de ruta original + $INFORMIXDIR/bin.

8.3 Desarmar la variable de entorno

$ unset $ENV_VARIABLE

Ejemplo:

$ set GZJ = gzj export GZJ? Establecer la variable de entorno GZJ

$ echo $GZJ

gzj? Mostrar valores de variables de entorno

$ unset $GZJ? Cancele la configuración de la variable de entorno GZJ.

$ echo $GZJ

? Cancelar

reglas de makefile

Makefile es un archivo de script de descripción de reglas de creación, que incluye cuatro tipos de líneas: línea de destino, línea de comando, línea de definición de macro y línea de directiva de creación (como "include " ). Los comentarios en el archivo MAKE comienzan con "#". Cuando no se puede escribir una línea, puede utilizar el carácter de continuación de línea "\" para pasar a la siguiente línea.

1.1 Línea objetivo

La línea objetivo le dice a make qué construir. Consiste en una tabla de nombres de destino, seguida de dos puntos ":" y luego una tabla de dependencias.

Ejemplo:

Ejemplo: depfile deptarget

La línea de destino indica que el ejemplo de destino depende de depfile y deptarget. Si se modifica depfile o deptarget, el objetivo se regenerará.

Ejemplo 1 Ejemplo 2 Ejemplo 3: deptarget 1 deptarget 2 depfile

La fila de destino indica que tres objetivos independientes en la tabla de nombres de destino, a saber, ejemplo1, ejemplo2 y ejemplo3, se componen de lo mismo Generado por listas y reglas de dependencia.

Limpiar:

Una lista de dependencias vacía significa que el objetivo limpio no tiene otras dependencias.

La línea que comienza con Tab después de la línea de destino indica las reglas de generación de destino. El carácter Tab no se puede reemplazar con un espacio. Por ejemplo:

ejemplo.o:ejemplo.c

ejemplo cc–c

Este ejemplo muestra que el objetivo ejemplo.o depende de ejemplo.c y ejemplo.h. Si ejemplo.c o ejemplo.h cambian, debe ejecutar el comando cc -c ejemplo.c para regenerar el ejemplo de destino.o.

Puedes utilizar la coincidencia de patrones de nombres de archivos para generar automáticamente la tabla de dependencias de un objetivo, por ejemplo:

prog: *. c

El siguiente es un ejemplo de un archivo MAKE simple:

Figura 1 El ejemplo más simple de un archivo MAKE

Cuando make usa un archivo MAKE, comienza con el primer objetivo Comience a escanear. El primer objetivo en el ejemplo anterior es todo, por lo que la limpieza del objetivo no se ejecutará automáticamente. El objetivo se puede generar mediante el comando make clean.

1.2 Línea de comando

La línea de comando se utiliza para definir la operación de generación del objetivo.

El punto y coma ";" está en la línea de destino. Los siguientes archivos se consideran comandos, o una línea que comienza con Tab también es un comando.

Por ejemplo, en el ejemplo anterior del archivo MAKE, el comando cc que comienza con el carácter de tabulación en la tercera línea es una línea de comando que indica qué comando debe ejecutarse para generar un saludo.

También se puede escribir como: hola:hola . o;cc-c hola-L...

Por lo general, los comandos de la línea de comandos aparecerán en la salida estándar. Por ejemplo, al crear el archivo MAKE anterior, la salida estándar es la siguiente:

cc -c hello.c

cc -o hello-L/usr/x 11r 6/lib -L/ usr/lib-lXm-lXt-LX 11 hola o

hola1.c

cc-o hola 1-L/usr/x 11r 6/lib-L. /usr/lib-lXm-lXt-LX 11 hola 1. o

Si no desea el eco del comando en sí, puede agregar el carácter @ antes del comando. Por ejemplo, si no desea el eco de cc -c hello.c y CC cc -c hello1.c en el ejemplo anterior, puede modificar el archivo Makefile de la siguiente manera:

Figura 2 Ejemplo de Makefile de supresión de eco

p>

Al crear este archivo MAKE, la salida estándar es la siguiente:

cc-o hello-L/usr/x 11r 6/lib-L/usr/ lib-lXm-lXt-LX 11 hola o

cc-o hola 1-L/usr/x 11r 6/lib-L/usr/lib-lXm-lXt-LX 11 hola 1. o

Como dijiste. Como puedes ver, el carácter @ antes de la línea de comando no se repite.

1.3 Línea de definición de macro

En el archivo MAKE, las definiciones de macro se pueden utilizar para reducir la entrada del usuario. Por ejemplo, en el ejemplo anterior, la opción de compilación para hola y hola1 es "-L/USR/x 11r 6/LIB-L/USR/LIB-LXM-LXT-LX 11".

Figura 3 Ejemplo de Makefile usando la definición de macro

La sintaxis básica de la definición de macro es:

Nombre = valor

Al definir una macro , El orden no es importante. No es necesario definir las macros antes de su uso. Si una macro se define varias veces, se utiliza el último valor definido.

Puedes utilizar el carácter "$" y "()" o "{}" para referirte a macros, por ejemplo:

cc–o hello o $(cc flags . )hola o

También puedes asignar una macro a otra macro, pero dichas definiciones no se pueden anidar en bucles, por ejemplo:

a = valor 1

b =valor2

C=$(A) $(B) es equivalente a C=valor1 valor2.

1.4 pseudoinstrucciones

Los Makefiles constan principalmente de líneas de definición de macros, líneas de comando y líneas de destino. El cuarto tipo es la línea de directiva make. Las directivas Make no están estandarizadas y diferentes marcas pueden admitir diferentes conjuntos de directivas, lo que resulta en incompatibilidad con archivos MAKE. Si la portabilidad es una preocupación, se debe evitar la directiva de marca. Sin embargo, existen algunas pseudoinstrucciones, como incluir, que las proporcionan muchos fabricantes diferentes porque se utilizan con más frecuencia.

1.4.1 Directiva include

Esta directiva es similar a #include en lenguaje C, que permite escribir definiciones públicas e incluirlas todas a la vez. La directiva de inclusión debe estar en una línea y el primer elemento debe ser incluir, seguido del nombre del archivo a incluir, por ejemplo:

Incluir default.mk

1.4 .2 Directiva "# "

El carácter "#" también es una pseudoinstrucción de make, lo que indica que el archivo después de "#" es un comentario, por ejemplo:

PROGNAME = prueba #definir macro

#No modificar esto

Reglas de doble sufijo

2.1 Reglas de doble sufijo

En los ejemplos anteriores de makefile , hay muchas repeticiones. Por ejemplo, los comandos para generar hola y hola1 son similares, y los comandos para generar hola.o y hola1.o son similares, pero los archivos compilados o vinculados son diferentes.

En este momento, podemos usar reglas de sufijos. Primero mire un ejemplo de doble sufijo:

Figura 4 Ejemplo de archivo MAKE que usa la regla de doble sufijo

La regla de sufijo usa el nombre de destino especial ".suffix".

La primera línea es. SUFFIXES está vacío y se utiliza para borrar las reglas de sufijos originales porque. Los sufijos se pueden usar varias veces en el archivo MAKE, cada vez que se agrega una nueva regla de sufijo a la regla de sufijo anterior.

La regla de sufijo especificada en la segunda línea es ".c .o", que significa todo. Los archivos c se convierten a . ofile.

La tercera línea especifica la conversión. El archivo c se convierte en. o engranaje. $(CC) es una macro predefinida de make y su valor predeterminado es CC. La sexta línea de $

especifica el método de generación del destino hello y hello1. $@ es una macro especial que reemplaza el nombre de destino actual, hola y hola1, con $@. o es hola.o y hola1.o.

El ejemplo anterior introduce la regla del doble sufijo, que contiene dos sufijos, como por ejemplo. c.o, utilizado para compilar archivos fuente C en archivos objeto. Las reglas de doble sufijo describen cómo generar un archivo de un segundo tipo de sufijo a partir de un archivo del primer tipo de sufijo. Por ejemplo, en. ¿Las reglas de c.o describen cómo generar? o archivos de archivos a.c.

2.2 Regla de sufijo único

La regla de sufijo único describe cómo generar un archivo con un nombre base a partir de un archivo con un sufijo específico. Por ejemplo, utilice una regla de sufijo único. c, hola y hola1.c pueden generar archivos hola y hola1. Por ejemplo, cambie el archivo MAKE anterior a:

Figura 5 Ejemplo de archivo MAKE que utiliza una regla de sufijo único

Porque. La regla del sufijo c es la regla de sufijo estándar para make. Make especifica la línea de comando correspondiente. No es necesario especificar la línea de comando específica para su generación de destino en el archivo Make.

La siguiente tabla muestra las reglas de sufijos estándar proporcionadas por make.

La Tabla 1 establece reglas de sufijos estándar

Línea de comando de reglas de sufijos

. c $(enlace . c)–o $ @ $ & lt; $(LDLIBS)

c.ln $(LINK.c) $(opción POUTPUT OPTPUT)-I $ & lt; p>

c.o $(COMPILE.c) $(opciones de salida)$ & lt

c. p>

$(AR) $(ARFLAGS) $@ $%

USD (RM) $%

Tres metas especiales

Metas especiales. El sufijo se utiliza en reglas de sufijos para especificar nuevas reglas de sufijos. Make también proporciona varios objetivos especiales para establecer el comportamiento de make. Aquí hay algunos objetivos especiales:

. Ignorar

Cuando make ejecuta la línea de comando, si se devuelve un código de error, la acción predeterminada de make es detenerse y salir. Después de agregar este objetivo, make ignorará el código de error devuelto por la línea de comando y continuará realizando operaciones posteriores.

. Silencioso

Como se mencionó anteriormente, make hará eco del contenido de la línea de comando al ejecutar la línea de comando. Agregar el carácter "@" antes de la línea de comando suprimirá el eco de la línea de comando.

Si se agrega este objetivo, ya no se repetirán todas las líneas de comando, lo que equivale a agregar el carácter "@" antes de cada línea de comando.

. Precious

make elimina todos los archivos creados cuando se recibe una señal o se devuelve un código de error distinto de cero desde un comando de shell. Sin embargo, incluso si algunos archivos son incorrectos, el usuario no quiere eliminarlos. Estos archivos se pueden utilizar como. Goles preciosos. Puede aparecer varias veces en el archivo MAKE, acumulando la lista de archivos cada vez.

. Sufijo

Especifica una nueva regla de sufijo para el archivo MAKE. Esta nueva regla de sufijo actúa como un archivo . sufijo. . Los sufijos se pueden usar varias veces en un archivo MAKE y cada vez se agrega una nueva regla de sufijo a la regla de sufijo anterior. Si tabla de dependencia. El sufijo está vacío y la tabla de reglas de sufijo está configurada como vacía.

Cuatro macros especiales

Para utilizar las reglas de forma sencilla, make proporciona varias macros especiales:

$@

Todo el El valor del nombre del objetivo actual se puede reemplazar por la macro "$@".

$ & lt

El archivo fuente actual está representado por "$

$*

El nombre base del destino actual es representado por la macro "$ *" Reemplazo. Por ejemplo, si el nombre del objetivo es hola.o, el nombre base es hola sin el sufijo .o

Las macros especiales descritas anteriormente utilizan las reglas de make. en sí y el usuario no puede cambiarlo. La tabla describe las macros predefinidas en el lenguaje C

Valores predeterminados de las macros de uso

Comando de ensamblaje de archivos de biblioteca AR ar

ARFLAGS rv

Igual que...

ASFLAGS

compilar s $(AS)$(AS flags)$(TARGET ARCH)<. /p>

comando del compilador c CC cc

CFLAGS

CPPFLAGS

compilar . (TARGET ARCH)–c

enlace . c $(CC)$(CFLAGS)$(CPPFLAGS)$(LD flags)$(TARGET ARCH)

Comando del editor de enlaces LD ld

LDFLAGS

Comando RM

Sufijos de lista. o . c ~ s . f . f ~ . l . mod . mod ~ . sym

y h .h~. busca un archivo llamado "makefile" o "Makefile" en el directorio actual y lo ejecuta.

Si no desea utilizarlo, el archivo predeterminado anterior se puede especificar usando "-f". la línea de comando. Si el archivo MAKE se llama mklib, se puede especificar como "make -f mklib"

.