j'ai compris pour commencer en italique mais pas pour finir ?
Ben c'est du HTML tout bête :
Début du mode italique : <i>
Fin du mode italique :</i> (note le slash avant le "i")
Pour le reste, je pense que ton problème de référence manquante ne doit pas venir du destructeur de la fonction, mais d'ailleurs. Il faudrait que tu nous donnes le message d'erreur complet , avec éventuellement les numéros de ligne qui vont à coté, s'il y en a.
Si j'ai bien compris, la détection du type MIME ne se fait que sur les premiers octets. Si donc, par exemple, les fichiers "sxw" et "pdf" commençaient de la même façon, linux ne saurait pas quelles application lancer, non ?
C'est la détection du type du fichier lui-même qui se fait. Sa classification dans une catégorie MIME se fait à postériori.
Ensuite, la reconnaissance se fait le plus souvent à l'aide des premiers octets des fichiers, car la plupart des formats proposent un header à cet effet (même les *.exe de 1980 commencent par "MZ"), mais ce n'est pas systématique. file peut utiliser toutes les méthodes qu'il veut pour identifier un fichier.
Relis notament la man-page de /etc/magic donnée plus haut. On peut y lire :
offset : A number specifying the offset, in bytes, into the file of the data which is to be tested.
JE RETIRE CE QUE J'AI DIT (il faut dire que les puces devant tes numéros de partitions n'étaient pas claires).
hdb2 c'est la partoche étendue qui contient les autres ! C'est hdb6 qu'il faut checker, après avoir démonté /home bien sûr ! Cela fonctionnera mieux ainsi.
1) " #! " au début d'un fichier est pour autant que je sache un magic number reconnu par le système qui lui permettra de choisir l'interpréteur qu'il faut lancer. Donc tu peux mettre absolument n'importe quel nom de programme en lieu et place de /bin/bash !
2) Il y a belle lurette que Windows fonctionne déjà de la même façon. Ce fût d'ailleurs un problème car des petits malins s'amusaient à renommer des *.exe en *.gif, etc. Si bien que là où l'utilisateur avait l'impression de visualiser une image, et où les filtres de première ligne n'avaient aucun effet, celui-ci lançait un exécutable, en général malicieux.
3) Il est quand même heureux que le système soit capable de reconnaître lui-même le genre de fichier et n'ait pas à se fier à un code en trois lettres, d'abord pour éviter ce qui vient d'être dit en 2), et ensuite parce que les combinaisons d'un code à trois lettres sont limitées.
4) Si deux fichiers sont strictement identiques, c'est par définition parce qu'ils ont le même contenu ! Donc il n'y a à priori aucune raison valable de leur donner deux extensions différentes. Maintenant si tu estimes que des fichiers de conf (ou des saloperies style *.inf à la windows) ont besoin de cela pour être activés/désactivés, ou pour les distinguer d'un simple fichier texte que l'on ouvrirait avec un bloc-notes, et bien rien ne t'empêche de mettre quand même des extensions. Mieux, tu peux mettre autant de points que tu le souhaites (le point est considéré comme un caractère normal par le système de fichier), et file est suffisament fûté pour savoir les gérer aussi.
Réjouis-toi : Tu peux ajouter tes propres magic numbers :
Si tu as une référence indéfinie, c'est que ton programme fait appel à une fonction qu'il ne retrouve ni dans les bibliothèques externes, ni dans ton propre programme.
Donc, neuf fois sur dix, c'est parce que tu as oublié de d'écrire la fonction que tu appelles. L'erreur n'apparaît qu'à l'édition des liens car tu as tout-à-fait le droit de définir tes différentes fonctions dans des fichiers séparés, voire même déjà existants (principe de la bibliothèque).
En l'occurence, c'est un peu plus subtil : Tu déclares un destructeur à la fois online et virtuel, ce qui est franchement tordu. Donc, le compilateur fait implicitement appel à une fonction delete[] tout aussi personalisée et qui, bien sûr, n'existe pas.
Relis les commentaires de ton précédent post et tout devrait rentrer dans l'ordre.
qui a-t-il comme différences entre ces 2 archives ?
GCC était initialement un compilateur C, puis est devenu une suite de compilateurs. Donc en gros, ton premier tarball est le package de base qui contient le compilateur C et toutes les infrastructures sur lequelles les autres vont s'appuyer, le second contient l'extension C++ qui va permettre de bâtir g++ en plus. Tu trouveras pratiquement un tarball par type de compilo, tous s'appuyant sur le premier.
Par contre si tu es débutant sous Linux et sous C++, je te déconseille d'entreprendre la recompilation et l'installation d'une suite de compilateurs à partir des sources.
Ton gcc/g++ actuel est probablement fourni sous forme de RPM. Récupère le RPM le plus récent auprès de RedHat pour la FC2, et fait une mise à jour. Tout fonctionnera tout seul.
Maintenant gcc 3.3.3 est relativement récent. Si en plus tu débutes, tu ne devrais pas avoir besoin de mettre ton compilateur à jour.
Retire les trois caractères {;} de ton .h , sinon tu déclares ta fonction comme étant inline, qui donc n'aurait pas pas besoin d'être déclaré dans ton *.cpp .
De plus, tu peux te passer de ton point-virgule isolé, et te contenter d'un {}.
Enfin, les destructeurs virtuels, à l'inverse des méthodes ordinaires qui sont couramment virtualisées, sont quelque chose de très subtil et rarement nécessaires. Vire le mot-clé virtual aussi et réessaie.
Il y a aussi qu'il déclare utiliser une "vieille" Freebox. Il est possible que son modèle ne sache pas se comporter en routeur (moi je n'ai jamais eu que la v4, donc je ne sais pas si c'est le cas ou pas).
Disposes-tu d'une carte réseau ? Si oui, cela peut influer grandement sur ta décision finale. Si ce n'est pas le cas, je te conseille de t'en procurer une (entre 15¤ et 30¤ au format PCMCIA sur des sites comme Montgallet).
Un certain nombre de distributions offre la possibilité de faire une installation à travers un LAN, via une disquette de démarrage dont l'image est fournie sur le CD, et à partir d'une machine qui elle est dotée d'un lecteur de CD-ROM. Après cela, si tu disposes d'une connexion à Internet (ADSL ou en entreprise, toujours par le réseau), tu peux effectuer le reste de l'installation en téléchargeant les packages dont tu as besoin, et surtout de faire facilement des mises à jour.
Oui, c'est vrai que la dernière fois que j'ai fait modifier mon numéro dans l'annuaire, c'était avant Michel Bon. A l'époque, France Télécom fonctionnait encore bien même si on se plaignait, et le réseau téléphonique (au moins en Île-de-France, mais en grande banlieue tout de même), était d'excellente qualité.
Depuis, mon agence régionale (!) a fermé, la petite boutique Orange dans le centre commercial voisin est censée avoir repris l'intégralité de ses activités (!!), et comme c'est un petit salon de 25 mètres carrés avec trois petits guéridons censé faciliter la visite des téléphones mobiles exposés sur le mur (oui, le mur, sur les trois disponibles), c'est devenu un foutoir sans nom. Les clients sont excédés - j'en ai vu plusieurs pleurer - et les commerciaux complètement désabusés.
Ironie mise à part, il est de fait que tout abonné du téléphone a le droit de rectifier l'annuaire, en tout cas la partie la plus à même de défendre ses intérêts, voire même de la censurer totalement, et que cela peut-être fait en un à deux jours. A dire vrai, si l'on avait pu nous garantir que l'on pouvait en faire de même avec la constitution, je crois que chacun l'aurait adoptée sans crainte.
Quant au catalogue de la Redoute, là encore, la constitution aurait eu largement plus de succès si elle avait été illustrée de la même façon ! :-)
Pour autant que je sache DS, et ES, cela sert surtout en mode réel. Linux n'a jamais fonctionné dans un tel mode. Sur i386 et supérieur, on utilise au moins les registres 32 bits (avec le préfixe E).
Les segments (formellement Adresse Physique = Segment x 16 + Adresse), cela ne fonctionne qu'en mode réel également. En mode protégé, le numéro du segment se réfère à une plage de mémoire mappée sur une zone logique et à laquelle tu as le droit d'accéder sans déclencher de segfault.
Et pour finir, tout ceci n'est valable que sur PC (enfin sur architecture Intel ou compatible).
L'assembleur c'est vraiment fun, mais si tu développes pour Linux, tu ne devrais pas avoir besoin de descendre si bas.
Cela fontionnait impeccable avec XFree86. Il semble qu'avec X.org, ce soit un peu plus compliqué. Je le dis parce que j'ai eu le même problème, mais je n'ai pas eu le temps de beaucoup charcher. Quelqu'un peut confirmer ?
Bon déjà, j'ai oublié de dire que la machine que j'essaie de contacter par SSH fonctionne sous Mdk9.2 et pas Ubuntu ! :-) Mais c'est un détail.
En fait, mon problème vient du fait que je ne sais pas à l'avance quel va être mon DNS. Jusqu'à présent, je fixais effectivement moi-même ces adresses, puisque c'est censé être le fonctionnement normal. Mais je me suis aperçu que Free me renvoie parfois des adresses différentes, et j'aimerais les suivre pour des raisons de propreté. C'est pourquoi je voulais savoir s'il était possible de faire une requête DHCP qui ne récupérerait que les adresses du DNS sans assigner une nouvelle adresse IP à la carte réseau et, comble du raffinement, s'il était possible de configurer la distribution pour qu'elle le fasse seule, sans avoir besoin d'écrire un script spécifique.
Sinon, ce n'est pas grave, je les écrirai en dur dans resolv.conf
- le monde occidental entier est coupable de l'avoir laissé se produire
On entend cela tous les jours sans exception depuis 1945. Par contre, tous les soldats alliés et de la résistance qui ont donné leur vie pour y mettre fin, on n'en parle même pas une fois par an. Ce sont ces gens-là qui méritent le respect.
C'est sûr que c'est piggy pour le moins, mais à mon avis cela reste préférable à débrancher/rebrancher le périphérique à la main à chaque fois. Je te conseille d'ailleurs de remettre la gestion du hub en module, spécialement pour cet usage et pour pouvoir facilement changer de configuration.
Pour le reste, il n'y a pas moyen de mettre un périphérique hors tension si celui-ci n'a pas lui-même prévu une fonction pour le faire, car pour autant que je sache, ce n'est pas prévu par la spécification USB. En outre, si ton périphérique ne répond plus, tu ne pourras pas lui donner l'ordre de se mettre hors service.
Par contre, la norme impose au moins un Reset Général du host, et certains hubs de bonne qualité proposent une mise hors-tension port par port. Regarde les sources du noyau, dans drivers/usb/host/ochi-hcd.c par exemple (noyau 2.6). Il y a un paramètre power_switching qui semble servir à cela. Peut-être est-il possible d'appeler un sysctl ou quelque chose d'équivalent.
[^] # Re: Inline
Posté par Obsidian . En réponse au message erreur de destructeur sous gcc. Évalué à 2.
Ben c'est du HTML tout bête :
Début du mode italique : <i>
Fin du mode italique :</i> (note le slash avant le "i")
Pour le reste, je pense que ton problème de référence manquante ne doit pas venir du destructeur de la fonction, mais d'ailleurs. Il faudrait que tu nous donnes le message d'erreur complet , avec éventuellement les numéros de ligne qui vont à coté, s'il y en a.
[^] # Re: Type mime : comment fait linux ?
Posté par Obsidian . En réponse au message Type mime : comment fait linux ?. Évalué à 3.
C'est la détection du type du fichier lui-même qui se fait. Sa classification dans une catégorie MIME se fait à postériori.
Ensuite, la reconnaissance se fait le plus souvent à l'aide des premiers octets des fichiers, car la plupart des formats proposent un header à cet effet (même les *.exe de 1980 commencent par "MZ"), mais ce n'est pas systématique. file peut utiliser toutes les méthodes qu'il veut pour identifier un fichier.
Relis notament la man-page de /etc/magic donnée plus haut. On peut y lire :
[^] # Re: montage de /home
Posté par Obsidian . En réponse au message Créer une partition pour Ubuntu. Évalué à 2.
hdb2 c'est la partoche étendue qui contient les autres ! C'est hdb6 qu'il faut checker, après avoir démonté /home bien sûr ! Cela fonctionnera mieux ainsi.
[^] # Re: Type mime : comment fait linux ?
Posté par Obsidian . En réponse au message Type mime : comment fait linux ?. Évalué à 4.
1) " #! " au début d'un fichier est pour autant que je sache un magic number reconnu par le système qui lui permettra de choisir l'interpréteur qu'il faut lancer. Donc tu peux mettre absolument n'importe quel nom de programme en lieu et place de /bin/bash !
2) Il y a belle lurette que Windows fonctionne déjà de la même façon. Ce fût d'ailleurs un problème car des petits malins s'amusaient à renommer des *.exe en *.gif, etc. Si bien que là où l'utilisateur avait l'impression de visualiser une image, et où les filtres de première ligne n'avaient aucun effet, celui-ci lançait un exécutable, en général malicieux.
3) Il est quand même heureux que le système soit capable de reconnaître lui-même le genre de fichier et n'ait pas à se fier à un code en trois lettres, d'abord pour éviter ce qui vient d'être dit en 2), et ensuite parce que les combinaisons d'un code à trois lettres sont limitées.
4) Si deux fichiers sont strictement identiques, c'est par définition parce qu'ils ont le même contenu ! Donc il n'y a à priori aucune raison valable de leur donner deux extensions différentes. Maintenant si tu estimes que des fichiers de conf (ou des saloperies style *.inf à la windows) ont besoin de cela pour être activés/désactivés, ou pour les distinguer d'un simple fichier texte que l'on ouvrirait avec un bloc-notes, et bien rien ne t'empêche de mettre quand même des extensions. Mieux, tu peux mettre autant de points que tu le souhaites (le point est considéré comme un caractère normal par le système de fichier), et file est suffisament fûté pour savoir les gérer aussi.
Réjouis-toi : Tu peux ajouter tes propres magic numbers :
man file
man 5 magic
[^] # Re: GCC: GNU Compiler Collection
Posté par Obsidian . En réponse au message installation version récente de gcc. Évalué à 2.
Si tu as une référence indéfinie, c'est que ton programme fait appel à une fonction qu'il ne retrouve ni dans les bibliothèques externes, ni dans ton propre programme.
Donc, neuf fois sur dix, c'est parce que tu as oublié de d'écrire la fonction que tu appelles. L'erreur n'apparaît qu'à l'édition des liens car tu as tout-à-fait le droit de définir tes différentes fonctions dans des fichiers séparés, voire même déjà existants (principe de la bibliothèque).
En l'occurence, c'est un peu plus subtil : Tu déclares un destructeur à la fois online et virtuel, ce qui est franchement tordu. Donc, le compilateur fait implicitement appel à une fonction delete[] tout aussi personalisée et qui, bien sûr, n'existe pas.
Relis les commentaires de ton précédent post et tout devrait rentrer dans l'ordre.
[^] # Re: Inline
Posté par Obsidian . En réponse au message erreur de destructeur sous gcc. Évalué à 2.
Encore un peu de patience ...
[^] # Re: GCC: GNU Compiler Collection
Posté par Obsidian . En réponse au message installation version récente de gcc. Évalué à 2.
Oups ! Bien vu !
Le pire c'est que je m'y suis déjà collé il y a quelque temps :
https://linuxfr.org/forums/19/3922.html(...)
[^] # Re: montage de /home
Posté par Obsidian . En réponse au message Créer une partition pour Ubuntu. Évalué à 2.
# GCC: GNU Compiler Collection
Posté par Obsidian . En réponse au message installation version récente de gcc. Évalué à 3.
GCC était initialement un compilateur C, puis est devenu une suite de compilateurs. Donc en gros, ton premier tarball est le package de base qui contient le compilateur C et toutes les infrastructures sur lequelles les autres vont s'appuyer, le second contient l'extension C++ qui va permettre de bâtir g++ en plus. Tu trouveras pratiquement un tarball par type de compilo, tous s'appuyant sur le premier.
Par contre si tu es débutant sous Linux et sous C++, je te déconseille d'entreprendre la recompilation et l'installation d'une suite de compilateurs à partir des sources.
Ton gcc/g++ actuel est probablement fourni sous forme de RPM. Récupère le RPM le plus récent auprès de RedHat pour la FC2, et fait une mise à jour. Tout fonctionnera tout seul.
Maintenant gcc 3.3.3 est relativement récent. Si en plus tu débutes, tu ne devrais pas avoir besoin de mettre ton compilateur à jour.
# Inline
Posté par Obsidian . En réponse au message erreur de destructeur sous gcc. Évalué à 2.
De plus, tu peux te passer de ton point-virgule isolé, et te contenter d'un {}.
Enfin, les destructeurs virtuels, à l'inverse des méthodes ordinaires qui sont couramment virtualisées, sont quelque chose de très subtil et rarement nécessaires. Vire le mot-clé virtual aussi et réessaie.
[^] # Re: Une question super bête...
Posté par Obsidian . En réponse au message ubuntu / probleme de configuration d'un resau local multi plateformes avec partage internet. Évalué à 3.
# Linux Distribution Chooser
Posté par Obsidian . En réponse au message linux sur disquettes. Évalué à 2.
http://www.zegeniestudios.net/ldc/(...)
# Réseau ?
Posté par Obsidian . En réponse au message linux sur disquettes. Évalué à 5.
Un certain nombre de distributions offre la possibilité de faire une installation à travers un LAN, via une disquette de démarrage dont l'image est fournie sur le CD, et à partir d'une machine qui elle est dotée d'un lecteur de CD-ROM. Après cela, si tu disposes d'une connexion à Internet (ADSL ou en entreprise, toujours par le réseau), tu peux effectuer le reste de l'installation en téléchargeant les packages dont tu as besoin, et surtout de faire facilement des mises à jour.
[^] # Re: Le plus important
Posté par Obsidian . En réponse au journal Non à l'annuaire !. Évalué à 4.
Merci
[^] # Re: L'annuaire présente ...
Posté par Obsidian . En réponse au journal Non à l'annuaire !. Évalué à 3.
Depuis, mon agence régionale (!) a fermé, la petite boutique Orange dans le centre commercial voisin est censée avoir repris l'intégralité de ses activités (!!), et comme c'est un petit salon de 25 mètres carrés avec trois petits guéridons censé faciliter la visite des téléphones mobiles exposés sur le mur (oui, le mur, sur les trois disponibles), c'est devenu un foutoir sans nom. Les clients sont excédés - j'en ai vu plusieurs pleurer - et les commerciaux complètement désabusés.
[^] # Re: écologie
Posté par Obsidian . En réponse au journal Non à l'annuaire !. Évalué à 2.
# L'annuaire présente ...
Posté par Obsidian . En réponse au journal Non à l'annuaire !. Évalué à 7.
Quant au catalogue de la Redoute, là encore, la constitution aurait eu largement plus de succès si elle avait été illustrée de la même façon ! :-)
# Prog i386
Posté par Obsidian . En réponse au message accès à la mémoire. Évalué à 4.
Les segments (formellement Adresse Physique = Segment x 16 + Adresse), cela ne fonctionne qu'en mode réel également. En mode protégé, le numéro du segment se réfère à une plage de mémoire mappée sur une zone logique et à laquelle tu as le droit d'accéder sans déclencher de segfault.
Et pour finir, tout ceci n'est valable que sur PC (enfin sur architecture Intel ou compatible).
L'assembleur c'est vraiment fun, mais si tu développes pour Linux, tu ne devrais pas avoir besoin de descendre si bas.
[^] # Re: ttf
Posté par Obsidian . En réponse au message Installer une fonte dans Ubuntu. Évalué à 2.
# Article I
Posté par Obsidian . En réponse au journal mais quel plan B ?. Évalué à 10.
Combien de citoyens européens ont réellement eu l'occasion de donner leur avis ?
[^] # Re: Pour le réseau :
Posté par Obsidian . En réponse au message Splash Screen Ubuntu. Évalué à 2.
Bon déjà, j'ai oublié de dire que la machine que j'essaie de contacter par SSH fonctionne sous Mdk9.2 et pas Ubuntu ! :-) Mais c'est un détail.
En fait, mon problème vient du fait que je ne sais pas à l'avance quel va être mon DNS. Jusqu'à présent, je fixais effectivement moi-même ces adresses, puisque c'est censé être le fonctionnement normal. Mais je me suis aperçu que Free me renvoie parfois des adresses différentes, et j'aimerais les suivre pour des raisons de propreté. C'est pourquoi je voulais savoir s'il était possible de faire une requête DHCP qui ne récupérerait que les adresses du DNS sans assigner une nouvelle adresse IP à la carte réseau et, comble du raffinement, s'il était possible de configurer la distribution pour qu'elle le fasse seule, sans avoir besoin d'écrire un script spécifique.
Sinon, ce n'est pas grave, je les écrirai en dur dans resolv.conf
Merci.
# Au feu, le TCE.
Posté par Obsidian . En réponse au journal C'est fini. Évalué à 7.
Oui, plus que deux jours et on aura de nouveau la paix.
[^] # Re: ceci n'est pas un GodWin
Posté par Obsidian . En réponse au journal C'est fini. Évalué à 4.
On entend cela tous les jours sans exception depuis 1945. Par contre, tous les soldats alliés et de la résistance qui ont donné leur vie pour y mettre fin, on n'en parle même pas une fois par an. Ce sont ces gens-là qui méritent le respect.
[^] # Re: type ?
Posté par Obsidian . En réponse au message Reseter un périphérique USB. Évalué à 2.
[^] # Re: Démonter le hub
Posté par Obsidian . En réponse au message Reseter un périphérique USB. Évalué à 2.
Pour le reste, il n'y a pas moyen de mettre un périphérique hors tension si celui-ci n'a pas lui-même prévu une fonction pour le faire, car pour autant que je sache, ce n'est pas prévu par la spécification USB. En outre, si ton périphérique ne répond plus, tu ne pourras pas lui donner l'ordre de se mettre hors service.
Par contre, la norme impose au moins un Reset Général du host, et certains hubs de bonne qualité proposent une mise hors-tension port par port. Regarde les sources du noyau, dans drivers/usb/host/ochi-hcd.c par exemple (noyau 2.6). Il y a un paramètre power_switching qui semble servir à cela. Peut-être est-il possible d'appeler un sysctl ou quelque chose d'équivalent.