Articles of gcc

Que se passe-t-il dans __libc_start_main?

J’essaie vraiment de comprendre les étapes du code de haut niveau -> exécutable .. mais j’ai des difficultés. J’ai écrit un fichier int main() {} C vide et essaie de déchiffrer le désassemblage via objdump -d . Voici ce qui se passe: dans _start , configure l’alignement, pousse les arguments sur la stack, appelle __libc_start_main […]

Comment diminuer la taille des fichiers binarys générés?

Je sais qu’il existe une option “-Os” pour “Optimiser pour la taille”, mais cela a peu d’effet, voire augmente la taille à une certaine occasion 🙁 l’option ssortingp (ou “-s”) supprime la table des symboles de débogage, qui fonctionne correctement; mais il ne peut que diminuer une petite propotion de la taille. Y a-t-il une […]

Qu’est-ce que _GLOBAL_OFFSET_TABLE?

En utilisant la commande nm sous Linux pour voir les symboles de mon programme, je vois un symbole nommé _GLOBAL_OFFSET_TABLE_ comme indiqué ci-dessous. Quelqu’un peut-il élaborer à quoi sert _GLOBAL_OFFSET_TABLE_ ? 0000000000614018 d _GLOBAL_OFFSET_TABLE_

mmap avec / dev / zero

Disons que j’alloue une grande mémoire (40 Mo) avec mmap en utilisant / dev / zero comme suit. fd = open(“/dev/zero”, O_RDWR); a = mmap (0, 4096e4, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FILE, fd, 0); Ce que je comprends, c’est que le kernel initialisera les mémoires à zéro lorsque les pages seront introduites dans la […]

Liaison de la bibliothèque statique compilée C au programme C ++

J’ai essayé de lier une bibliothèque statique (compilée avec gcc) à un programme c ++ et j’ai obtenu une référence non définie. J’ai utilisé gcc et g ++ version 4.6.3 sur une machine serveur Ubuntu 12.04. Par exemple, voici le fichier de bibliothèque simple pour la méthode factorielle: mylib.h #ifndef __MYLIB_H_ #define __MYLIB_H_ int factorial(int […]

lier dans linux en utilisant gcc

J’essaie de lancer mon tout premier programme c ++ sous linux (linux mint 8). J’utilise soit gcc ou g ++, les deux avec le même problème: le compilateur ne trouve pas la bibliothèque que je tente d’importer. Je soupçonne quelque chose comme je devrais soit copier le fichier iostream.h (que je ne sais pas où […]

Comment créer un binary statique qui s’exécute sur chaque dissortingbution?

Certaines applications Linux comme supertuxkart ou regnum online ont des binarys statiques qui, après le téléchargement, fonctionnent sans avoir à installer de bibliothèque partagée. Sur chaque dissortingbution Comment puis-je créer une telle application?

gcc: les bibliothèques liées dans / usr / local / lib sont introuvables, mais /etc/ld/so.conf.d/libc.conf le répertorie?

J’ai un problème avec les bibliothèques partagées et gcc. Au début, je ne pouvais pas exécuter mon programme compilé car je recevais l’erreur suivante: erreur gcc lors du chargement des bibliothèques partagées. J’ai fait quelques recherches et constaté que c’est parce que la bibliothèque partagée est introuvable. Cependant, j’avais déjà identifié que la bibliothèque partagée […]

Comment imprimer l’adresse d’une fonction?

Je laisse gcc comstackr l’exemple suivant en utilisant -Wall -pedantic : #include int main(void) { printf(“main: %p\n”, main); /* line 5 */ printf(“main: %p\n”, (void*) main); /* line 6 */ return 0; } Je reçois: main.c:5: warning: format ‘%p’ expects type ‘void *’, but argument 2 has type ‘int (*)()’ main.c:6: warning: ISO C forbids […]

Journal Boost, GCC 4.4 et CMake

J’essaie d’obtenir un exemple simple de boost.log fonctionnant sous Linux en utilisant GCC 4.4.5, CMake 2.8.2 et Boost 1.53.0. La compilation des journaux boost et boost a réussi, mais je continue à avoir des problèmes lors de la liaison de mon programme de test à boost.log. J’utilise le fichier CMakeLists.txt suivant: cmake_minimum_required(VERSION 2.8) project(QuantibBoostLogTest) # […]