Articles of gcc

Rendre un exécutable Ubuntu

J’ai fait un programme en C en utilisant le compilateur gcc. À l’heure actuelle, il n’a pas de composants GUI. Je le comstack avec makefile et je l’exécute dans le terminal. Je dois le déployer pour que l’exécutable soit autonome. Je veux que l’exécutable ait une icône et lorsque vous cliquez dessus, lancez le programme […]

Où les constantes de chaîne sont-elles stockées par GCC et d’où ces pointeurs sont-ils mappés?

Lorsque je comstack et exécute le programme C suivant sur ma machine Linux x86_64, compilé par GCC: #include int main(void) { char *p1 = “hello”; // Pointers to ssortingngs char *p2 = “hello”; // Pointers to ssortingngs if (p1 == p2) { // They are equal printf(“equal %p %p\n”, p1, p2); // equal 0x40064c 0x40064c […]

erreur: ‘asm’ non déclaré (première utilisation dans cette fonction)

Je reçois l’erreur suivante lors de la compilation: error: ‘asm’ undeclared (first use in this function) EXCHANGE( s, *(a) ); ^ dans un fichier d’en-tête où la macro est appelée comme suit: EXCHANGE( s, *(a) ); et la définition réelle de la macro est la suivante: #define EXCHANGE(R,M) asm volatile ( “xchg %1, %0” : […]

Avertissement de construction d’un module de kernel utilisant des symboles exportés

J’ai deux modules de kernel (disons modA et modB). modA exporte un symbole avec EXPORT_SYMBOL(symA) et modB l’utilise. J’ai l’entête modA.h pour modA: … extern void symA(int param); … et dans modB.c : #include “modA.h” … static int __init modB_init(void) { symA(10); } … Si insmod modB fonctionne correctement, mon modB est correctement lié au […]

Qu’est-ce que l’équivalent de _emit sur Linux?

J’essaie de porter un code d’assemblage écrit en Visual Studio dans un assemblage en ligne GNU sous Linux. Le code d’origine utilise _emit que MSDN décrit comme une pseudo-instruction et explique: La pseudoinstruction _emit est similaire à la directive DB de MASM. Vous utilisez _emit pour définir un seul octet immédiat à l’emplacement actuel du […]

GDB examine les permissions de mémoire

J’ai une adresse en mémoire et je veux connaître les permissions (r / w / x) de cette adresse mémoire. Par exemple char *s = “hello”; Ici, la chaîne littérale “hello” est stockée dans la mémoire morte. Lorsque vous exécutez le programme via gdb, existe-t-il une possibilité de vérifier les permissions pour cette adresse mémoire […]

Comment obtenir la valeur de retour de PROCESSUS ENFANT?

Le programme calcule la sum des nombres de 1 à N. Le processus enfant calcule la sum des nombres EVEN. Le processus parent calcule la sum des nombres impairs. Je veux obtenir la valeur de retour du processus enfant dans le processus parent. Comment je fais ça #include #include #include #include #include int main() { […]

vérifier si un binary compilé avec “-static”

J’ai un fichier binary sous Linux. Comment puis-je vérifier s’il a été compilé avec “-static” ou non?

Detouring et assemblage en ligne GCC (Linux)

Je programme des extensions pour un jeu qui offre une API pour (nous) modders. Cette API offre une grande variété de choses, mais elle a une limitation. L’API concerne uniquement le «moteur», ce qui signifie que toutes les modifications (mods) qui ont été publiées en fonction du moteur n’offrent aucune sorte d’API (mod spécifique). J’ai […]

Comment puis-je définir rpath sur les binarys gcc pendant le bootstrap?

J’essaie de construire gcc 4.7.2 en utilisant un préfixe personnalisé $PREFIX J’ai construit et installé tous les prérequirejs dans mon emplacement de préfixe, puis configuré, construit et installé gcc avec succès. Le problème que j’ai maintenant est que $PREFIX n’est pas dans le chemin de recherche de la bibliothèque, et donc les bibliothèques partagées ne […]