Articles of gcc

Quel est le moyen le plus simple de trouver la taille d’un type sans comstackr ni exécuter de code?

J’ai écrit un script bash pour déterminer la taille des types de données de gcc (par exemple, ./sizeof int double les tailles respectives int et double ) en encapsulant chacun de ses arguments dans la macro P() , puis en compilant et en exécutant le code. . #define P(x) printf(“sizeof(” #x “) = %u\n”, (unsigned […]

Appeler une fonction depuis un autre fichier du même répertoire en C

J’apprends le C, mais j’ai une longue expérience des langages de programmation de niveau supérieur comme Java. J’étais en train de lire sur les fichiers d’en-tête, donc je m’amusais avec eux. Cependant, j’ai remarqué que je pouvais appeler une fonction depuis un autre fichier sans l’inclure (c’est dans le même répertoire), comment est-ce possible?! Est-ce […]

Référence non définie à _sbrk

J’ai un problème avec _sbrk. Dans une phase de compilation de la compilation, j’utilise ci-dessous la commande pour lier mes objects et obtenir une référence non définie à _sbrk. arm-none-eabi-ld -static -T linkerscript.ld -o exe timer_example.o /home/ziga/projects/cs_lite/arm-none-eabi/lib/libc.a /home/ziga/projects/cs_lite/lib/gcc/arm-none-eabi/4.5.1/libgcc.a Je suis en train de comstackr pour arm926ej-s et en mode ARM, donc je pense avoir choisi […]

Où est stdarg.h?

Sur mon système (Mac OS 10.6) /usr/include/stdarg.h est: /* This file is public domain. */ /* GCC uses its own copy of this header */ #if defined(__GNUC__) #include_next #elif defined(__MWERKS__) #include “mw_stdarg.h” #else #error “This header only supports __MWERKS__.” #endif Donc, si GCC utilise sa propre copie de stdarg.h , où est-il? Je n’ai aucune […]

énormes fichiers binarys avec objcopy

J’ai des problèmes lorsque je définis des variables globales dans un programme C de base pour un processeur ARM9. J’utilise le compilateur EABI GNU et le binary généré par un elfe de 12 Ko est de 4 Go! Je suppose que le problème vient de mon fichier de dispersion, mais je ne parviens pas à […]

Comment faire en sorte que `gcc` génère l’instruction` bts` pour x86-64 à partir du C standard?

Inspiré par une question récente , j’aimerais savoir si quelqu’un sait comment faire en sorte que gcc génère l’instruction x86-64 bts (bit test and set) sur les plates-formes Linux x86-64, sans recourir à un assemblage en ligne ou à un compilateur non standard. les insortingnsèques. Questions connexes: Pourquoi gcc ne fait-il pas cela pour une […]

Erreur fatale pour arm-linux-gnu-gcc: stdio.h: Aucun fichier ou répertoire de ce type

Ce sont les fichiers dans / usr / bin [root@xilinx bin]# ls -ld arm* -rwxr-xr-x. 1 root root 691752 Feb 5 2013 arm-linux-gnu-addr2line -rwxr-xr-x. 1 root root 721416 Feb 5 2013 arm-linux-gnu-ar -rwxr-xr-x. 1 root root 1297632 Feb 5 2013 arm-linux-gnu-as -rwxr-xr-x. 1 root root 689168 Feb 5 2013 arm-linux-gnu-c++filt -rwxr-xr-x. 1 root root 545664 […]

Pourquoi Valgrind ne repère-t-il pas la fuite lorsque le programme a été compilé avec gcc-5.2.0

Aujourd’hui, je codais quelque chose et après avoir fini, j’ai vérifié avec valgrind et j’ai eu une surprise. Si je comstack mon programme sur mon Ubuntu (15.04 64BIT) avec gcc-4.9.2 avec ce qui suit: gcc -Wextra -Werror -Wssortingct-prototypes -Wconversion –std=c11 -O2 -g program.c -o program Et puis lancez valgrind: valgrind –leak-check=full –track-origins=yes ./program Je reçois […]

ld: impossible d’exécuter des opérations PE sur une erreur de fichier de sortie non PE

Je suis nouveau dans la programmation de système d’exploitation et je lis un livre qui donne un exemple simple de kernel comme suit: main() { char *video_memory = 0xb8000; *video_memory = ‘X’; } Pour comstackr ce fichier appelé kernel.c, j’utilise MinGW sous Windows 7 comme suit: gcc -ffreestanding -c kernel.c -o kernel.o Cela crée le […]

Comstackr contre libusb-dev sur Ubuntu

J’essaie de comstackr l’exemple libusb.c fourni par le paquet libusb (si vous supprimez le code source) Cela ne fonctionne pas pour dire le moins. #include #include #include Cela provoque son échec, il n’y a pas de libusb/libusb.h c’est usb.h , donc je change cela. Et cela échoue de manière nouvelle et innovante. J’ai copié le […]