DevC++ Compilation projet et options - C++ - Programmation
Marsh Posté le 22-03-2008 à 00:08:10
utiliser code::blocks car DevC++ n'est plus maintenu
Ah et ton .a il sort de linux ? Il faut certainement le recompilé sur ton windows
Marsh Posté le 22-03-2008 à 13:53:06
Pour le .a, c'est le prof qui nous le fournit, le but du jeu étant de deviner ce qu'il s'y cache. Il sort très probablement de Linux mais j'imagine que c'est compilé avec minGW
Bon je tente avec Code::Blocks
Merci.
Marsh Posté le 22-03-2008 à 14:09:42
bah si ca sort d'un linux c'ets compilé sosu forme d'ELF ... donc pas sur que mingw le lise :[
Marsh Posté le 23-03-2008 à 18:26:18
Pour simple vérification, c'est normal que Code::Blocks me sorte des erreurs du type D:\cpp\Entrainement\main.cpp|86|undefined reference to `Sportif::Sportif()'| alors qu'il y a bien un #include sportif.h qui contient tous les prototypes ?
Je ne connais pas objdump, et n'ayant pas d'Unix sous la main, je vais surement devoir passer par cygwin.
En attendant je regarde ce que peut donner IDA.
Merci à tous les deux.
Marsh Posté le 23-03-2008 à 18:34:12
Bon ben IDA me sort du code assembleur, ca me confirme bien que c'est au format ELF (Relocatable)... A part ca je sais pas trop quelles infos en tirer.
Marsh Posté le 23-03-2008 à 20:03:53
Il est possible de compiler un projet contenant un un fichier ".a " avec Dev-Cpp, car j'y suis arrivé. Mais peut-être que ce n'est pas possible avec tous les fichiers ".a". J'ai peut-être eu de la chance. Voici ce que j'ai fait :
1. Créer un projet qui inclut les fichiers ".c" ou ".cpp" et ".h", "rc" éventuellement, mais pas le fichier ".a", car c'est du binaire qui n'a pas besoin d'être recompiler.
2. Placer le fichier ".a" dans le répertoire où se trouve les autres bibliothèques, en l'occurence chez moi, dans c:\Dev-Cpp\lib.
3. Dans "Project options", onglet "Parameters", textarea "Linker",
ajouter "-lnom_du_fichier_sans_le_prefixe_lib_sans_suffixe_point_a".
Dans mon cas la bibliothèque s'appelait "libjpeg.a". J'ai écrit "-ljpeg"
C'est tout.
Mon makefile contient, en autres choses :
LIBS = -L"C:/DEV-CPP/lib" -mwindows -ljpeg |
Une différence que je constate, qui est peut-être importante, je ne sais pas, est le nom de la bibliothèque. D'habitude, elles commencent toutes par les trois lettres "lib". C'est une tradition qui remonte à ma jeunesse. A votre place, j'essayerais de renommer le fichier sportif.a en libsportif.a, et de mettre "-lsportif" (sans les guillemets) dans l'onglet "Parameters" des "Project Options".
Marsh Posté le 24-03-2008 à 14:18:44
Merci pour votre contribution très claire et très intéressante.
En suivant vos indications, à priori il trouve bien libsportif.a mais j'obtiens les mêmes erreurs que sous Code::Block (où j'inclus le .a à l'édition de liens dans les options du projet)
Code :
|
J'ai bien un makefile semblable au votre.
Finalement ca revient au même que si j'inclus simplement le .a dans l'édition de liens du projet. Dommage, merci quand même
Marsh Posté le 01-04-2008 à 20:36:03
Bonsoir,
je reviens à la charge avec la compilation de ce projet.
J'ai installé cygwin et je ne parviens toujours pas à compiler avec g++
g++ main.o sportif.a -o course ne passe pas, des références sont indefinies pour lui alors qu'elles sont dans le .a.
Cygwin n'est pas censé émuler un environnement Unix ?
Je me demande s'il me manque pas des packages ??
J'ai installé ELFIO, mais je ne trouve pas de doc sur ce package, ce qu'il fait concrètement et comment on s'en sert.
Auriez vous des idées svp ?
Marsh Posté le 22-03-2008 à 00:03:44
Bonjour,
Voilà j'ai un projet c++ tout simple composé des fichiers suivants:
entrainement.h
sportif.h
main.cpp
sportif.a
Pour compiler sous UNIX je fais ca:
g++ -Wall -pedantic -Werror -c main.cpp
g++ main.o sportif.a -o monexe
Tout se passe bien.
Mais quand j'ajoute ces 4 fichiers au projet sous Dev C++ (dernière version beta) et que j'ajoute sportif.a dans la colonne Editeur de liens, j'obtiens un paquet d'erreur du genre :
Je suis allé voir le Makefile, j'ai tenté de le modifier pour que ca marche, mais je n'obtiens rien de mieux... Celui qu'il génère ressemble à ca :
Que puis-je faire pour pouvoir compiler sous DevC++ ?
Merci d'avance à ceux qui jetteront un oeil
Message édité par Pwill le 22-03-2008 à 00:04:46