Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/06/2008, à 11:24

Dark_kenessis

Malloc ne marche pas avec gcc :(

Bonjour,

je tente desespérement d'utiliser la fonction malloc avec gcc (derniére version installée et mise a jour).

Au début du fichier, j'ai bien fait le "#include <stdlib.h>", et pourtant pas moyen d'utiliser malloc, ou free avec gcc.

lors de la compilation, j'obtiens le message suivant:
"
kernel.o: In function `main':
kernel.c:(.text+0x92): undefined reference to `malloc'
"

main.c est trés simple :
"
    long* memoireAllouee = NULL; // On crée un pointeur sur long
    memoireAllouee = malloc(sizeof(long)); // La fonction malloc inscrit dans notre pointeur l'adresse qui a été reservee.
"
pourtant ce code a été pris sur un bon tutoriel, mais ça ne se compile pas chez moi (deux pc sous ubuntu 8.04 avec gcc).

Cela fait 2jours que je suis sur le probléme, et je n'ai trouvé aucune solution sad

Si quelqu'un pouvait éclairer ma lanterne big_smile

Merci d'avance!!

#2 Le 27/06/2008, à 11:27

slasher_fun

Re : Malloc ne marche pas avec gcc :(

build-essential est bien installé ? Parce que ça fonctionne chez moi...

Hors ligne

#3 Le 27/06/2008, à 11:28

Karl_le_rouge

Re : Malloc ne marche pas avec gcc :(

T'as bien installé les paquets de développement et non pas gcc seul ?
# apt-get install build-essential
Arrives-tu déjà à compiler un simple hello world ?

Hors ligne

#4 Le 27/06/2008, à 11:33

Dark_kenessis

Re : Malloc ne marche pas avec gcc :(

Oui, tout est bien installé.

#5 Le 27/06/2008, à 11:48

Dark_kenessis

Re : Malloc ne marche pas avec gcc :(

Build essential est bien installé, et a jour.

En fait la compilation fonctionne, mais au moment de faire le "ld" de tous les fichiers ".o" (pour faire un "executable") il affiche ce message.

Il le fait pour tous les programmes qui utilisent malloc.

C'est à devenir fou, car ça fait deux jours que je réinstalles les librairies et tout, et ça fait deux jours que ça tourne en rond hmm

#6 Le 27/06/2008, à 12:33

rniamo

Re : Malloc ne marche pas avec gcc :(

fait voir ton code : "kernel.c" à l'air dêtre un fichier système +> kmalloc() et non malloc.


< Quelques un des mes programmes  | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
        \   ^__^
         \  (o o)\_______
            (___)\            )\

Hors ligne

#7 Le 27/06/2008, à 13:35

Dark_kenessis

Re : Malloc ne marche pas avec gcc :(

Lol non,

"kernel.c" est un fichier que l'on développe avec des amis : on tente de faire un mini systéme d'exploitation.

Tout allait bien jusqu'à présent : il nous faut maintenant pouvoir faire des listes chainées, or sans malloc je vois pas trop comment faire.

en fait dés que je met malloc dans n'importe quel fichier source, il plante en me mettant ce message d'erreur "undefined reference to `malloc'"

Je ne sais pas quoi faire, si ça marche pas je v tenter de réinstaller tout le systéme :s

#8 Le 27/06/2008, à 13:40

nicolas.sitbon

Re : Malloc ne marche pas avec gcc :(

Dark_kenessis a écrit :

Lol non,

"kernel.c" est un fichier que l'on développe avec des amis : on tente de faire un mini systéme d'exploitation.

Tout allait bien jusqu'à présent : il nous faut maintenant pouvoir faire des listes chainées, or sans malloc je vois pas trop comment faire.

en fait dés que je met malloc dans n'importe quel fichier source, il plante en me mettant ce message d'erreur "undefined reference to `malloc'"

Je ne sais pas quoi faire, si ça marche pas je v tenter de réinstaller tout le systéme :s

Tu développes un OS, c'est donc un environnement freestanding, pas étonnant de ne pas trouver malloc dans ce cas...
Fais voir ta ligne de compilation/édition!

Hors ligne

#9 Le 27/06/2008, à 15:17

Karl_le_rouge

Re : Malloc ne marche pas avec gcc :(

Avant de te lancer dans l'écriture d'un noyau, tu ferais mieux de te documenter.

osdev.org est la référence, tu peux également te référer à la série d'articles publiés sur GLMF  autor de SOS (sos.enix.org).
Comme l'a souligné nicolas.sitbon, un peu de jugeotte, l'allocation mémoire est géré par le noyau, si tu n'as pas implémenté celle-ci ...
Si tu étudies le noyau Linux, tu verras que celui-ci inclut un sous-ensemble de la libc pour ses besoins internes, la GNU Libc (ou µCLibc, dietlibc, Newlib etc ...) font appel aux appels systèmes du noyaux.
En général, malloc est implémenté à l'aide de l'appel système sbrk.

Hors ligne

#10 Le 27/06/2008, à 15:30

nicolas.sitbon

Re : Malloc ne marche pas avec gcc :(

Karl_le_rouge a écrit :

En général, malloc est implémenté à l'aide de l'appel système sbrk.

heu nan, attention, l'appel système est brk, sbrk n'est qu'une fonction de la glibc... je sais c'est du chipotage...

Hors ligne