Estoy escribiendo el módulo de Linux simple mod.c. Cuando compilo el archivo mod.c, crea dos archivos de salida mod.o y mod.ko. Así que solo quiero saber, ¿Cuál es la diferencia entre el archivo mod.o y mod.ko?Diferencia entre el archivo .o y .ko
Respuesta
La respuesta corta es que el archivo .ko .ko es su archivo objeto vinculado con algunas estructuras de datos generadas automáticamente por el kernel que necesita el kernel.
El archivo . O es el archivo objeto de su módulo, el resultado de compilar su archivo C. El sistema de compilación kernel crea automáticamente otro archivo C con algunas estructuras de datos que describen el módulo kernel (llamado your_module_kmod.c), compila este archivo C en otro archivo objeto y vincula el archivo objeto y el archivo objeto que creó para crear el . ko archivo.
El enlazador dinámico en el núcleo que está a cargo de los módulos del núcleo de carga, espera encontrar la estructura de datos del kernel puesto en el objeto kmod en el archivo .ko y no ser capaz de cargar el módulo del núcleo sin ellos.
Antes de Linux 2.6, un programa de espacio de usuario interpretaría el archivo ELF objeto (.o) y hacer todo el trabajo de vinculación con el núcleo en ejecución, generar una imagen binaria final. El programa pasaría esa imagen al y el núcleo haría poco más que pegarlo en la memoria . En Linux 2.6, el núcleo hace el enlace. Un programa de espacio de usuario pasa el contenido del archivo de objeto ELF directamente al núcleo . Para que esto funcione, la imagen del objeto ELF debe contener información adicional de . Para identificar este tipo particular de archivo de objeto ELF, nombramos el archivo con el sufijo ".ko" ("objeto kernel") en lugar de ".o" Para el ejemplo , el controlador de dispositivo serie que en Linux 2.4 vivía en el archivo serial.o en Linux 2.6 vive en el archivo serial.ko.
- 1. Diferencia entre el archivo .keystore y el archivo .jks
- 2. Diferencia entre el archivo HDF5 y el archivo PyTables
- 3. Diferencia entre archivo .jar y .dll
- 4. Diferencia entre -O de GHC y O2
- 5. Diferencia entre o y || al establecer variables
- 6. ¿Cuál es la diferencia entre .sqlite y el archivo .db?
- 7. Diferencia entre escribir en el archivo atómicamente y no
- 8. ¿Diferencia entre appSettings y connectionStrings en el archivo Web.config?
- 9. ¿Cuál es la diferencia entre: = y + = en el archivo make?
- 10. ¿Cuál es la diferencia entre un archivo de objeto .o y un archivo de biblioteca .so?
- 11. ¿Diferencia entre el análisis y el paso?
- 12. ¿Cuál es la diferencia entre un archivo .o y un archivo .lib?
- 13. Diferencia entre un archivo empaquetado y un archivo descompuesto
- 14. MySQL: diferencia entre ', `,' y"
- 15. ¿Diferencia entre == y caso?
- 16. Diferencia entre 'java' y 'libjvm.so' (Linux) o 'jvm.dll' (Windows)?
- 17. Diferencia entre & y &
- 18. Diferencia entre | y || o & y && para la comparación
- 19. Diferencia entre File.Copy y File.Move
- 20. Diferencia entre ensamblado y DLL
- 21. ¿Cuál es la diferencia entre el archivo app.config y el archivo XYZ.settings?
- 22. C# I/O - Diferencia entre System.IO.File y StreamWriter/StreamReader
- 23. Diferencia entre objeto y *?
- 24. ¿Diferencia entre el margen y el relleno?
- 25. Diferencia entre el objeto y el objeto
- 26. La diferencia entre $ * y $ @
- 27. ¿Diferencia entre 'usar' y el alcance?
- 28. Diferencia entre web.config y machine.config?
- 29. Diferencia entre StreamReader.Read y StreamReader.ReadBlock
- 30. Diferencia entre xreadlines y de bucle de un archivo
Creo que .ko son 2.6 archivos de objetos kernel mientras que .o son 2.4. Obtenga más información al respecto aquí: http://tldp.org/HOWTO/Module-HOWTO/linuxversions.html – smichak