Red de conocimiento informático - Conocimiento informático - Directorio de prácticas de programación en lenguaje C en Linux integrado

Directorio de prácticas de programación en lenguaje C en Linux integrado

Parte 1 Conocimientos básicos

Capítulo 1 Desarrollo del lenguaje C en entorno Linux 2

1.1 Entorno de desarrollo del lenguaje C en Linux 2

1.2 Desarrollo utilizando lenguaje C en Linux 3

1.2.1 Proceso de desarrollo y herramientas de desarrollo 3

1.2.2 Principios operativos de los programas en Linux 4

Capítulo 2 Desarrollo del lenguaje C en un entorno integrado 7

2.1 Entorno de desarrollo del lenguaje C integrado 7

2.2 Puntos clave de la programación en lenguaje C en el desarrollo integrado 9

Parte 2 Linux entorno

Entorno y herramientas de desarrollo del lenguaje C

Capítulo 3 Herramienta de edición de texto de Linux VI 12

3.1 Edición de VI Descripción general de VI 12

3.1.1 Introducción a VI 12

3.1.2 Modo de trabajo y uso de VI

3.1.2 Preparación previa 12

3.1.3 Entrar y salir de VI 13

3.2 Versión mejorada de VI VIM 16

3.3 Uso básico del editor VI 17

3.3.1 Mueva el cursor en la pantalla 17

.

3.3.2 Insertar texto 20

3.3.3 Eliminar texto 22

3.3.4 Modificar contenido de texto 25

3.3.5 Reemplazar contenido de texto 27

3.3.6 Fusionar contenido de texto 30

3.3.7 Mover contenido de texto 30

3.4 Comandos del editor VI y operaciones avanzadas 32

3.4.1 Lista de comandos VI comunes 32

3.4.2 Algunas operaciones avanzadas de VI y

3.1.2 Consejos de uso 35

Capítulo 4 Desarrollo del programa GCC Herramientas 39

4.1 Descripción general de las herramientas GNU 39

4.2 Compilación y vinculación de GCC 43

4.2.1 Ejemplo de proyecto 43

4.2. 2 Compilación, ensamblaje y vinculación 46

4.2.3 Biblioteca dinámica 48

4.3 Herramientas binarias GCC 49

p>

4.3.1 ar (herramienta de archivo) 49

4.3.2 readelf (leer formato ELF

3.1.2 información del archivo) 51

4.3.3 cadenas (ver cadenas) 54

4.3.4 nm (mostrar información de símbolos) 55

4.3.5 strip (eliminar símbolos) 57

4.3.6 objdump (mostrar objetivo

3.1 .2 información del archivo) 58

4.3.7 objcopy (copiar archivo de destino) 63

Capítulo 5 make Herramientas de gestión de proyectos 67

5.1 make y Makefile 67

5.1.1 Descripción general del mecanismo make 67

5.1.2 Uso de make y Makefile 68

5.2 Ejemplos de uso de Makefile 69

5.2.1 Makefile simple 69

5.2.2 Dependencias en Makefile 71

5.2.3 Makefile usando reglas implícitas

3.1.2 Compilar programa 73

5.2.4 Especificar dependencias en Makefile

3.1.2 Compilar 76

5.

3 Generar Makefile automáticamente 78

5.3.1 La importancia y la importancia de generar Makefile automáticamente

3.1.2 Herramientas relacionadas 78

5.3.2 El proceso de generar Makefile automáticamente generando Makefile 79

Capítulo 6 Herramienta de depuración de GDB 85

6.1 Introducción a GDB 85

6.2 Uso del programa de depuración de GDB 86

6.2. 1 Operación básica 88

6.2.2 Ver comandos 90

6.2.3 Comandos avanzados 92

6.2.4 Uso del comando adjuntar 94

6.3 Depuración GDB remota 95

6.3.1 Depuración GDB local y GDB remota

3.1.2 Comparación de depuración 95

6.3.2 Depuración GDB remota proceso 97

6.3.3 Ejemplo de depuración remota de GDB 98

Parte 3 Funciones de biblioteca

Capítulo 7 Funciones de biblioteca estándar del lenguaje C 106

7.1 Funciones de la biblioteca estándar del lenguaje C de ISO

7.1 Categoría 106

7.2 Funciones de entrada/salida formateadas estándar 107

7.2.1 Función scanf: entrada formateada

3.1.2 Cadena 107

7.2.2 Función printf: salida formateada

3.1.2 Cadena 109

7.2 .3 Función putchar: salida caracteres a

3.1.2 salida estándar 111

7.2.4 función getchar: obtiene caracteres 111 de la entrada estándar

3.1.2

7.2.5 función putc: enviar caracteres 112 al archivo

7.2.6 función getc: ingresar caracteres 112 del archivo

7.2.7 función get: obtener cadena 112

7.2.8 función puts: genera la cadena especificada 113

7.2.9 función ungetc: escribe caracteres

3.1.2 de regreso a la secuencia 113

7.3 Funciones de procesamiento de caracteres 114

7.4 Funciones de conversión y procesamiento de cadenas 116

7.4.1 Función sprintf: salida formateada

3.1.2 Cadena a un buffer 116

7.4.2 funciones strcat y strncat:

3.1.2 Conexión de cadena 119

7.4.3 funciones strcpy y strncpy:

3.1.2 Copia de cadenas 120

7.4.4 Funciones strcmp y strncmp:

3.1.2 Comparación de cadenas 121

7.4.5 Función strlen: Obtener string

3.1.2 Longitud 122

7.4.6 Funciones strchr y strrchr: caracteres/

3.1.2 Posicionamiento de cadenas 122

7.4.7 función strstr: búsqueda de cadenas 123

7.4.8 función strrev: orden inverso de cadenas 124

7.4.9 funciones strupr y strlwr: letras

3.1. .2 Conversión de formulario 125

7.4.10 funciones strdup y strndup:

3.1.2 Copia de cadena 125

7.4.11 Función memset: configuración de memoria 126

7.4.12

Función memmove: movimiento de memoria 126

7.4.13 Función memcmp: comparación de memoria 127

7.4.14 Función memcpy: copia de memoria 128

7.5 Funciones de cálculo matemático 128

7.6 Estructura de datos y funciones de algoritmo 133

7.6.1 Función bsearch: búsqueda binaria 133

7.6.2 Función lfind: búsqueda lineal 134

7.6.3 Función lsearch: búsqueda lineal 135

7.6.4 Función qsort: uso del método de clasificación rápida

3.1.2 Organizar matrices 136

7.6 .5 función rand: generar número aleatorio 136

7.6.6 función srand: establecer número aleatorio

3.1.2 semilla numérica 137

7.7 E/S de archivo funciones relacionadas con la operación 137

7.7.1 función fopen: abrir archivo 138

7.7.2 función fclose: cerrar archivo 139

7.7.3 función fgetc: leer del archivo

3.1.2 Un carácter 139

7.7.4 Función fputc: escribe un carácter específico en el archivo

3.1.2 Flujo 139

7.7.5 función fgets: leer de un archivo

3.1.2 una cadena 140

7.7.6 función fputs: leer una cadena La especificada

3.1.2 la cadena se escribe en el archivo 140

7.7.7 función de rebobinado: restablece el flujo del archivo

3.1.2 posición de lectura y escritura Inicio del archivo 141

7.7.8 Función ftell: Obtener el flujo del archivo

3.1.2 Posición de lectura 141

7.7.9 Función fseek: Mover el archivo Streaming

3.1.2 Ubicación de lectura y escritura 141

7.7.10 Función fwrite: escribir datos en

7.7.10 Flujo de archivos 142

7.7.11 fread función: leer desde el flujo de archivos

7.7.10 datos 142

7.7.12 función de eliminación: eliminar archivo 143

7.7 .13 función de cambio de nombre: cambiar archivo

7.7.10 nombre o ubicación 143

7.7.14 función freopen: reabrir

7.7.10 archivo 144

p>

7.7.15 función fflush: buffer de sincronización 144

7.7.16 función fgetpos: obtener archivo

7.7.10 posición 145

7.7 .17 función fsetpos: Archivo de configuración

7.7.10 Ubicación 145

7.7.18 Función mktemp: Crear archivo temporal

7.7.10 146

7.7. 19 Función tmpfile: Archivo temporal 146

7.7.20 tmpnam: Obtener nombre de archivo temporal 147

7.8 Funciones de fecha y hora 147

7.8 .1 Función de reloj: obtener tiempo de CPU 148

7.8.2 función de tiempo: obtener el calendario actual

7.8.2 tiempo 148

7.8.3 función difftime: ganar tiempo

7.8.2 Diferencia 148

7.8.4 g

función de tiempo: convertir la hora del calendario

7.8.2 a la hora UTC 149

7.8.5 función mktime: convertir la hora UTC

7.8.2 a la hora del calendario 149

7.8.6 función asctime: convertir la hora UTC

7.8.2 en la cadena 149

7.8.7 función ctime: convertir la hora del calendario

7.8.2 en cadena de hora local 150

7.8.8 función de hora local: convertir la hora del calendario

7.8.2 en hora local 150

p>

7.8.9 Función strftime: convertir fecha y hora

7.8.2 Formato de hora 151

7.9 Funciones de internacionalización y localización 152

7.9 .1 Función setlocale : control de localización

7.8.2 Función 153

7.9.2 función localeconv: localización

7.8.2 Conversión 154

7.10 Error funciones de manejo 155

7.10.1 Función clearerr: borrar el flujo

7.10.1 Indicador de fin e indicador de error 155

7.10.2 Función feof: Indica el fin del archivo 155

7.10.3 función ferror: indica un error de archivo 156

7.10.4 función perror: genera información de error 156

7.10.5 Función errno: registro de número de error 156

7.11 Algunas otras funciones de herramientas 157

7.11.1 Función de afirmación: diagnóstico del programa 157

7.11 .2 Función de salto de longitud 157

7.11.3 Función de control de parámetros de longitud variable 160

7.11.4 Obtención de funciones de miembros de estructura

7.10.1 (Macro) 161

7.12 Algunas macros útiles en la biblioteca estándar 161

Capítulo 8 Biblioteca de extensión del lenguaje C en Linux

Función 163

8.1 Función de operación de E/S de archivos 163

8.1.1 función abrir: abrir archivo 163

8.1.2 función cerrar: cerrar archivo 164

8.1.3 función leer: leer archivo 165

8.1.4 Función de escritura: escribir archivo 165

8.1.5 Función lseek: posicionamiento de archivos 167

8.1.6 Función ioctl: control de archivos 167

8.1.7 función grey: bloquear archivo 167

8.1.8 función mmap y función munmap:

8.1.8 Mapeo de memoria 168

8.1. 9 función de creación: Crear un nuevo archivo 170

8.1.10 Función dup y función dup2:

8.1.10 Copiar descriptor de archivo 171

8.1.11 fcntl función: cambiar las propiedades del archivo abierto

8.1.10 171

8.2 Funciones de operación relacionadas con permisos de archivos 172

8.2.1 función de acceso: determinar si

8.2.1 tiene permiso para acceder a archivos 172

8.2.2 función chown y función fchown:

8.2.1 Cambiar el propietario del archivo 173

8.2.3 canales

Función od y función fchmod:

8.2.1 Cambiar permisos 173

8.2.4 Función de desvincular: eliminar archivos 173

8.2.5 Función utime y función utimes :

8.2.1 Cambiar la hora del archivo 174

8.2.6 Función umask: establece la máscara de permiso al crear un nuevo archivo

8.2.1 175

p>

8.2.7 función de enlace: establecer conexión de archivo 175

8.2.8 función stat, función fstat y lstat

8.2.1 función: obtener información del archivo 175

8.3 Función de operación de grupo de usuarios 176

8.3.1 Función getgid y función setgid:

8.2.1 Obtener/establecer código de identificación de grupo 176

8.3.2 función getegid y función setegid:

8.2.1 Obtener/establecer el ID de grupo efectivo 177

8.3.3 función getuid y función setuid:

8.2.1 Obtener/establecer el ID de usuario real 177

8.3.4 Función geteuid y función seteuid:

8.2.1 Obtener/establecer el ID de usuario válido 178

8.3.5 función getgroups y setgroups

8.2.1 Función: obtener/establecer código de grupo 178

8.4 Función de señal 179

8.4 .1 función de interrupción: transmitir señal a un proceso especificado

8.2.1 181

8.4.2 función de elevación: función de envío de señal 181

8.4.3 función de alarma : configuración de la función de tiempo de espera 182

8.4.4 función de señal: función de instalación de señal 182

8.5 función de procesamiento de procesos 183

8.5.1 función getpid y función getppid:

8.2.1 Obtener ID de proceso e ID de proceso padre 183

8.5.2 Función fork: crear proceso hijo 183

8.5.3 Función de suspensión y función usleep :

8.2.1 Dejar que el proceso suspenda la ejecución por un período de tiempo 185

8.5.4 familia de funciones ejecutivas: busque el ejecutable

8.2.1 Archivo 185

8.5.5 Función _exit y función _Exit:

8.2.1 Finalizar la ejecución del proceso 188

Parte 4 Programación Avanzada en Lenguaje C

Capítulo 9 Montón y pila de memoria dinámica 190

9.1 Uso del área de memoria del programa 190

9.1.1 Memoria estática y memoria dinámica 190

9.1. 2 Memoria dinámica en lenguaje C 191

9.2 Uso del espacio de pila en programa C 196

9.2.1 Uso de parámetros del espacio de pila 196

9.2.2 Automático las variables usan espacio de pila 199

9.2.3 Pila más grande en el programa 201

9.2.4 Características del espacio de pila 202

9.3 En el programa C Uso del espacio de pila 203

9.3.1 Funciones de biblioteca para asignar y liberar memoria de montón 203

9.3.2 Uso de la función de biblioteca 204

9.3.3 Característica de memoria de montón 218

9.4 Comparación del uso de memoria de montón y de memoria de pila 222

9.4.1 Usar valor de retorno para transferir información

Información 222

9.4.2 Usar parámetros para transferir información 226

9.4.3 La diferencia entre administración de memoria de pila y montón 231

Capítulo 10 El uso de funciones punteros 232

10.1 El concepto de puntero de función 232

10.1.1 La esencia de la función del lenguaje C 232

10.1.2 Puntero de función en lenguaje C

10.1.2 Significado 234

10.2 Uso de punteros de función 237

10.2.1 Uso preliminar de punteros de función 237

10.2.2 Tipos de punteros de función Definición 240

10.2.3 Puntero de función como miembro de estructura 242

10.2.4 Puntero de función como parámetro de función 243

10.2.5 Puntero de función como función de

10.2.5 Valor de retorno 244

10.2.6 Matriz de puntero de función 246

10.3 Ejemplo de uso del puntero de función 248

Capítulo 11 Capítulo Uso de funciones de devolución de llamada 252

11.1 Concepto y función de las funciones de devolución de llamada 252

11.1.1 Método de llamada al programa 252

11.1.2 Función de devolución de llamada funciones 254

11.2 Sintaxis de la función de devolución de llamada 254

11.2.1 Función de devolución de llamada simple 254

11.2.2 Forma completa de la función de devolución de llamada 256

11.3 Uso de funciones de devolución de llamada 259

11.3.1 Funciones de devolución de llamada en qsort 259

11.3.2 Funciones atexit y on_exit

10.2.5 Función de salida de registro 263

Capítulo 12 Lenguaje C para implementar la programación de objetos 268

12.1 Lenguaje C para implementar la programación basada en objetos

12.1 Concepto y función 268

12.2 Programación basada en objetos en lenguaje C

12.1 Encapsulación 269

12.2.1 Ejemplo de programa simple 269

12.2.2 Programación basada en objetos en lenguaje C

10.2.5 Explicación detallada 272

12.2.3 Comparación entre la programación basada en objetos en lenguaje C y

10.2.5 Programación orientada a objetos en C 275

12.3 Implementación del lenguaje C basado en programación de objetos

12.3 Función de herencia parcial 278

12.3.1 Implementación mediante inclusión de estructura de datos

10.2. 5 Función de herencia 279

12.3.2 Uso de punteros privados para implementar la herencia

10.2.5 Función 282

12.3.3 Resumen de herencia en lenguaje C 287

12.4 Implementación de programación basada en objetos en lenguaje C

12.4 Parte de la función polimórfica 288

12.4.1 Utilizar la inclusión de grupos de punteros de operación

10.2.5 Implementación de la función de estado del polimorfismo 288

12.4.2 Resumen de funciones polimórficas implementadas en lenguaje C 292

12.5 Implementación basada en objetos en lenguaje C

12.5 Reflexiones sobre la programación 292

p>

12.5.1 Programación basada en objetos en lenguaje C

10.2.5 Característica 292

12.5. 2 Interfaz de programación basada en objetos en lenguaje C,

10.2.5 La relación entre la implementación y la persona que llama 293

Parte 5 Programación en lenguaje C en un entorno integrado

Capítulo 13 Programa en lenguaje C Diseño de memoria 295

13.1 Área de almacenamiento del programa en lenguaje C 295

13.2 Segmentos del programa en lenguaje C 297

13.2.1 Clasificación de segmentos 297

13.2.2 Uso de secciones de programa 298

13.3 Conexión de programas ejecutables 301

13.3.1 Composición de programas ejecutables 301

13.3.2 Cada objetivo Relación entre archivos 303

13.3.3 Ejemplo de error de conexión 304

13.4 Ejecutando un programa en lenguaje C 309

13.4.1 Depuración de RAM ejecutando 311

13.4.2 Operación XIP del programa firmware 312

13.4.3 Carga y ejecución del programa firmware 313

13.4.4 Resumen del funcionamiento del programa en lenguaje C 315

Capítulo 14 Gramática común del lenguaje C integrado 317

14.1 Operación del puntero de memoria 317

14.1.1 El significado de la operación de memoria 317

14.1.2 Usar memoria de operación de puntero 319

14.1.3 El uso de volátiles 324

14.1.4 El uso real de punteros de sistema integrados

10.2. 5 Aplicación 325

14.2 Operaciones de bits 327

14.2.1 El significado de las operaciones de bits 327

14.2.2 La sintaxis de las operaciones de bits 328

14.3 Problemas de endianidad y alineación 330

14.3.1 Problemas de endianidad grande y pequeña 331

14.3.2 Problemas de alineación de memoria 335

14.3.3 Alineación cuestiones de los miembros de la estructura 338

14.4 Salto de programa 344

14.4.1 Salto de programa de sistema integrado

10.2.5 Tipo 344

14.4 .2 Implementación de saltos de programa en lenguaje C 345

Capítulo 15 Habilidades de programación en lenguaje C integrado 348

15.1 Habilidades de optimización de programas 348

15.1.1 Área de almacenamiento en búfer circular 348

15.1.2 Método de tabla de búsqueda 350

15.1.3 Eficiencia de ejecución del bucle For

10.2.5 Optimización 353

15.2 Acerca de la aritmética decimal 355

15.3 Transferencia de parámetros de funciones y valores de retorno 357

15.4 Técnicas de inicialización de variables 360

15.4.1 Inicialización de arrays 360

p>

15.4.2 Inicialización de estructuras 362

15.4.3 Resumen de inicialización de variables 362

15.5 Consejos para depurar programas y usar macros 363

15.5.1 Imprimir archivos, funciones y líneas de programa 363

15.5.2 #: Operador de encadenamiento 364

15.5.3 ##: Operador de conexión 366

15.5.4 La primera forma de definir macros de depuración 367

15.5.5 La segunda forma de definir macros de depuración 368

15.5.6 Clasificación de declaraciones de depuración Revisión 369

15.5.7 Declaraciones de depuración de compilación condicional 370

15.5.8 Definición de macro usando do... while 372

15.6 Análisis de código 373

Referencia 378