brazo-linux-gcc
- Estructura y nivel de conocimiento - la compilación del programa y depurar
- configuración de la instalación cruz compilador Embedded
- Host de destino modelo de desarrollo de juntas
- Bajo el microprocesador ARM compilador sistema / Linux
- Descargar e instalar el compilador
- herramienta de brazo-linux-gcc
- `-E`
- `-S`
- `` -C
- `-o`
- `File` -include
- `-Y dir`
- `-i`
- `` -Iprefix prefix` 和 -iwithprefix dir`
- `` -L nombre de la biblioteca
- `` -L directorio
- optimización de gcc
- deberes
herramientas de desarrollo de Linux diseñadas para hacer y makefile
Estructura y nivel de conocimiento - la compilación del programa y depurar
configuración de la instalación cruz compilador Embedded
Host de destino modelo de desarrollo de juntas
-
Anfitrión
de compilación, enlace incluido software informático -
equipo de destino
que ejecuta el software, plataforma de hardware embebido -
compilador de "local"
para generar código objeto que se ejecuta en el propio compilador, donde el mismo equipo y entorno de sistema operativo (plataformas), Windows, como entorno de Windows para generar el código objeto. -
compilador cruzado
Se utiliza para generar el código objeto para funcionar en otras plataformas, tales como el entorno Windows Linux genera código objeto.
Bajo el microprocesador ARM compilador sistema / Linux
Las reglas de nomenclatura compilador
arch [-vendor] [-os] [-(gnu)eabi]-工具名称
arch
- arquitecturas, tales como ARM , MIPSvendor
- proveedores de la cadena de herramientas, el nombre de la CPU o un desarrollo fabricantes de placasos
- los sistemas operativos de destino, tales como Linux(gnu) eabi
- el uso de las bibliotecas, incluyendo glibc , EABI , uClibc tres tipos
Ejemplo: arm-none-eabi-gcc
- sistema Bare-metal usado para compilar la arquitectura ARM
Ejemplo:arm-none-linux-gnueabi-gcc
- Para los sistemas Linux basados en la arquitectura ARM, basado en GCC, Glibc uso de la biblioteca
después de que la compañía introdujo CodeSourcery compilador optimizado para la elaboración de la arquitectura ARM u-boot, núcleo de Linux, las aplicaciones de Linux.
Varios directorios importantes:
directorio de la herramienta del compilador:FriendlyARM/toolchain/4.9.3/bin
El directorio de archivo de cabecera del compilador:FriendlyARM/toolchain/4.9.3/arm-cortexa9-linux-gnueabihf/sys-root/usr/include
directorio de archivos de biblioteca:FriendlyARM/toolchain/4.9.3/arm-cortexa9-linux-gnueabihf/sys-root/usr/lib
Descargar e instalar el compilador
Usted puede ir a la página oficial de descarga, http://www.linaro.org/downloads/
pero más lentamente, se puede descargar directamente conmigo.
Enlaces: https://pan.baidu.com/s/1jL_G6kbTC9h_bF8HHXBWxw código de extracción: 67u4
1. En primer lugar mover el paquete para instalar el directorio tmp descargado en el directorio raíz (/ tmp)
2. Uso comando tar para extraer el paquete de instalación, el siguiente comando se introduce en la entidad de certificación raíz indicación sudo Terminal :( anterior para ejecutar el comando)
sudo tar -xjvf /tmp/arm-linux-gcc-4.6.4-arm-x86_64.tar.bz2 -C /
Tenga en cuenta que en mayúsculas las letras C, este comando optar por instalar el paquete y extraer los TuxamitoSoftToolchains del directorio raíz en el interior (/ opt / TuxamitoSoftToolchains)
3. Después de la extracción se ha completado, y luego crear un nuevo directorio en el brazo (/ usr / local), a saber, introduzca el siguiente comando en el terminal:
sudo mkdir /usr/local/arm
Después de crear un brazo directorio de éxito, también hay que darle a liberar a todos los privilegios que introduzca el siguiente comando en el terminal:
sudo chmod 777 /usr/local/arm
4. Busque el extracto del directorio y copiar todo el directorio gcc-4.6.4 en el directorio brazo de nueva construcción, el comando es el siguiente:
primer cd a gcc 4.6.4-directorio (después de cambiar el primer vistazo no ls sin gcc-4.6.4 directorio):
cd /opt/TuxamitoSoftToolchains/arm-arm1176jzfssf-linux-gnueabi/
Y luego ejecutar el comando cp copia, -r representar dentro de nada, así como en todo el directorio
sudo cp -r gcc-4.6.4 /usr/local/arm
5. Open (/ etc / perfil) variables y variables de entorno de base de datos de configuración, el objeto es para ser usado más tarde en cualquier posición del comando cruz compilador es como sigue:
sudo vi /etc/profile
Después vi o vim abierta, la adición de dos líneas al final del archivo, e introduzca el código siguiente: La primera línea es agregar las variables de entorno de ejecución del programa, la segunda línea es la ruta del archivo de biblioteca
export PATH=$PATH:/usr/local/arm/gcc-4.6.4/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/arm/gcc-4.6.4/lib
A continuación, guarde hacia fuera.
6. Utilice el comando source para recargar el archivo de configuración para tener efecto
source /etc/profile
7. Compruebe que la instalación se ha realizado correctamente, la información de versión de salida Introduzca el siguiente comando en el terminal:
arm-linux-gcc -v
herramienta de brazo-linux-gcc
arm-gcc-Linux sintaxis: arm-linux-gcc [ option | filename ]...
En circunstancias normales, producir un nuevo programa de necesidades que pasar por cuatro etapas: pre-procesamiento, compilador, ensamblador, enlazador
, por supuesto, podemos decidir qué pasos para compilar las operaciones realizadas por el final del parámetro
gama de parámetros en Linux buscar la ayuda del medio ambiente:man arm-linux -gcc
-E
- Sólo el archivo de procesamiento previo , pero no compilar, ensamblar y enlazar.
Ejemplo:
arm-linux -gcc -E hello.c -o hello1.c
El pretratamiento, contenidos hola.c:
después del pretratamiento, contenidos Hello1.c:
-S
- Sólo el archivo compilado (archivo ensamblador generado .s) , pero no se puede compilar y enlazar.
Ejemplo: arm-linux -gcc -S hello.c
el ejemplo anterior generará un hello.s archivo compilado
-c
- Sólo el archivo compilado y montado, pero no está vinculada, lo que significa que sólo el archivo de programa make obj.
Ejemplo: arm-linux -gcc -c hello.c –o hello.o
-o
- Especificar el nombre de destino, el tiempo predeterminado, compilador gcc es a.out
Ejemplo:
arm-linux -gcc hello.c
La compilación predeterminada hello.out
arm-linux -gcc -o hello.bin hello.c
objetivo sustantivo es hello.bin
arm-linux -gcc -o hello.s -S hello.c
-include file
- Contiene un código que, en términos simples, es compilar un archivo cuando se necesita otro archivo, se puede usar la función conjunto es equivalente a utilizar en su código
#include
.
Ejemplo:arm-linux -gcc hello.c -include type.h
-I dir
- Si utiliza
#include"file"
el tiempo, gcc / g ++ buscará primero en el directorio actual que ha especificado en los archivos de cabecera, si no lo encuentra, el compilador por defecto en el directorio de archivos de cabecera de encontrar; - Si utiliza un
-I
directorio especificado, el compilador buscará primero el directorio especificado, y luego presione la marcha secuencial convencional.
Ejemplo: arm-linux -gcc -o hello -I/xxx/include hello.c
-I
- Antes de función de cancelación es un parámetro, es generalmente en
-I dir
después de su uso
-iprefix prefix
y -iwithprefix dir
Estos dos parámetros se utilizan generalmente en conjunto, cuando -I
una búsqueda en el directorio falla, a prefix+dir
buscar la siguiente
-l库名
- Especifica las bibliotecas de tiempo de compilación utilizados ( biblioteca estática .a / DLL .so )
Ejemplo: arm-linux-gcc -lpthread hello.c
especifica el uso de phtread.c
la biblioteca
-L目录
- tiempo de compilación especifica, la ruta de búsqueda de biblioteca. Por ejemplo, en la biblioteca, se puede
-L
especificar el directorio en su biblioteca, de lo contrario el compilador sólo encontrará en el directorio de la biblioteca estándar . Estedir
es el nombre del directorio.
Ejemplo:
arm-linux-gcc –L./ hello.c –o hello
optimización de gcc
Proporcionar gcc con el fin de satisfacer diferentes niveles de optimización de las necesidades del usuario y proporcionar casi un centenar de opciones de tipo de optimización, que se utilizan para { tiempo de compilación , el tamaño de archivo de destino , la eficiencia } Este modelo tridimensional de un diferentes soluciones de compromiso y el equilibrio. Optimización de métodos y así sucesivamente, en su conjunto tendrá las siguientes categorías:
- Reducir la instrucción de la operación;
- Tratar de cumplir con la canalización de la CPU;
- Por adivinar el comportamiento de la secuencia de código de ejecución del programa de reajuste;
- pleno uso de registros;
- Pide una simple expansión, etc.
-O0
, -O1
, -O2
, -O3
O0: no hacen ninguna optimización, que es el valor predeterminado opciones del compilador
O3: más alto nivel de optimización
-g
- El compilador genera información de depuración en tiempo de compilación.
Ejemplo:
arm-linux –gcc –o hello -g hello.c
deberes
(1) que pertenece al miembro de watchdog ( módulo de hardware ), que es una función de núcleo ( código de software de detección de fuera de control ) y ( cuando el sistema está "corriendo hacia fuera" en el bucle y restaurar el funcionamiento del sistema ).
(2) suponiendo C fun.c código, que se compila en fun.o código objeto, comando de compilación arm-linux-gcc -c fun.c -o fun.o
, si el uso de una biblioteca libcurses.a función fun.c, y que junto con el Smartfun main.c ejecutable compilado , el comando del compilador arm-linux-gcc -c fun.c main.c -lcurses -o smartfun
.