Question

J'ai décidé de ne pas installer Windows et d’utiliser Debian comme système d’exploitation par défaut. J'ai toujours codé sous Windows et plus particulièrement avec Visual Studio. J'essaie actuellement de m'habituer à compiler mon code sous Linux.

Même si j'ai encore beaucoup de documentation à lire et ne vous attendez pas à ce que vous me simplifiiez la tâche trop facilement, il serait quand même agréable de se faire une idée du point de départ. J'ai quelques questions spécifiques, mais n'hésitez pas à suggérer / recommander autre chose à propos du sujet.

  • Quels sont les guides recommandés pour la création d'un fichier make, comment compiler ce makefile (dois-je appeler moi-même g ++, dois-je utiliser 'make'?)
  • En regardant les autres logiciels Linux, ils semblent presque toujours avoir un fichier 'configurer'. Qu'est-ce que cela fait exactement? Est-ce seulement vérifier si les bibliothèques requises sont installées ou est-ce plus que vérifier les exigences?
  • Comment lier des bibliothèques et en quoi cela concerne-t-il mes paramètres makefile ou g ++? Dans Windows, je compilerais la bibliothèque, inclurais des fichiers d'en-tête, indiquerais à l'éditeur de liens quel fichier lib supplémentaire lier, et copierais un fichier dll. Comment fonctionne ce processus sous Linux?
  • Des recommandations pour les éditeurs de code? J'utilise actuellement nano et j'ai entendu parler de vim et d'emacs, mais je ne sais pas quels sont leurs avantages mutuels. Y at-il d'autres, et pourquoi devrais-je les considérer sur l'un des trois précédents? Note: Je ne cherche pas d’IDE.

Toute aide, liens vers des guides & amp; la documentation (de préférence celles destinées aux débutants) est très appréciée!

Était-ce utile?

La solution

  

Quels sont les guides recommandés pour la création d'un fichier make, comment compiler ce makefile (dois-je appeler moi-même g ++, dois-je utiliser 'make'?)

Vous construisez à partir du fichier Make en appelant "make". Et dans votre makefile, vous compilez et liez en utilisant g ++ et ld.

  

En regardant d'autres logiciels Linux, ils semblent presque toujours avoir un fichier 'configurer'. Qu'est-ce que cela fait exactement? Est-ce seulement vérifier si les bibliothèques requises sont installées ou est-ce plus que vérifier les exigences?

C’est un script généralement utilisé pour configurer divers éléments en fonction de l’environnement utilisé pour la construction. Parfois, il ne s'agit que d'un script shell de base, d'autres fois, il fait appel à des outils tels que Autoconf pour découvrir ce qui est disponible lors de la construction. Le " configurer " Le script est également généralement un emplacement permettant à l'utilisateur de spécifier diverses choses à construire ou à exclure, telles que la prise en charge de fonctionnalités expérimentales.

  

Comment lier des bibliothèques et en quoi cela concerne-t-il mes paramètres makefile ou g ++? Dans Windows, je compilerais la bibliothèque, inclurais des fichiers d'en-tête, indiquerais à l'éditeur de liens quel fichier lib supplémentaire lier, et copierais un fichier dll. Comment fonctionne ce processus sous Linux?

ld est l'éditeur de liens GNU. Vous pouvez l'invoquer séparément (ce que la plupart des makefiles finiront par faire), ou vous pouvez y déléguer g ++. Les options que vous transmettez à g ++ et à ld déterminent où rechercher les en-têtes inclus, les bibliothèques à lier et comment afficher le résultat.

  

Des recommandations pour les éditeurs de code? J'utilise actuellement nano et j'ai entendu parler de vim et d'emacs, mais je ne sais pas quels sont leurs avantages mutuels. Y at-il d'autres, et pourquoi devrais-je les considérer sur l'un des trois précédents? Note: Je ne cherche pas d’IDE.

Vim et Emacs sont des éditeurs très flexibles qui prennent en charge un grand nombre d'utilisations différentes. Utilisez ce qui vous convient le mieux, mais je suggérerais que vous souhaitiez peut-être quelques tâches minimales, telles que la coloration syntaxique.

Autres conseils

Juste une note pour accompagner les réponses de MandyK.

Créer des fichiers make à la main est généralement un moyen très peu transférable de se construire entre les variantes / unix de la distribution linux. Il existe de nombreux systèmes de génération permettant de générer automatiquement des fichiers de marque, construisant sans fichiers de marque. Outils automatiques GNU , Cmake , Scons , confiture , etc.

Pour aller plus en détail sur la configuration.

  • Vérifie les compilateurs disponibles, les bibliothèques et l'architecture du système.
  • Assurez-vous que votre système correspond à la liste de packages compatibles appropriée.
  • Vous permet de spécifier des arguments de ligne de commande pour spécialiser votre construction, le chemin d'installation, les packages d'options, etc.
  • Configure génère ensuite un Makefile approprié spécifique à votre système.
  

Quels sont les guides recommandés sur   créer un fichier make, comment compiler   depuis ce makefile (est-ce que j'appelle g ++   moi-même, est-ce que j'utilise 'make'?)

J'ai appris à écrire des makefiles en lisant le Manuel GNU Make .

  

En regardant d'autres logiciels Linux, ils   presque toujours semblent avoir un   Fichier 'configure'. Que fait-il exactement   faire? Est-ce seulement vérifier si le requis   les bibliothèques sont installées ou le fait   Plus que la simple vérification des exigences?

Le fichier de configuration est généralement associé à autotools . Comme le nom du script l'indique, il vous permet de configurer le logiciel. Du point de vue du développeur, cela signifie principalement la définition de macros, qui déterminent les variables, les bibliothèques disponibles, etc. Il teste également la disponibilité des bibliothèques. En fin de compte, le script génère un Makefile GNU, que vous pouvez ensuite utiliser pour créer et installer le logiciel.

Le système de construction GNU n’est que l’un des nombreux. Je n'aime pas particulièrement le système de construction GNU, car il a tendance à être plus lent que les autres et génère un Makefile moche. CMake , Jam ( Boost Jam pourrait être intéressant pour C ++) et waf . Certains systèmes de compilation génèrent simplement des fichiers Makefiles, tandis que d'autres fournissent un système de génération complètement nouveau. Pour des projets simples, écrire un Makefile à la main serait facile, mais "vérification de la dépendance". (pour les bibliothèques, etc.) devra également être fait manuellement.

Modifier: Brian Gianforcaro également fait remarquer cela.

Votre question est un peu trop générale, mais voici ce que je recommanderais:

  • Editeur: vim et emacs sont populaires. Comme pour la plupart des outils, ce qui compte le plus, c'est d'en maîtriser un. J'aime utiliser vim car vi (son descendant) est disponible partout, mais cela peut ne pas être très pertinent, surtout si vous restez sous Linux. N'importe quel éditeur de programmation convient.

  • configurez: sauf si vous faites de gros projets, ne vous en faites pas. C'est un cauchemar à utiliser et à déboguer. Cela n’a de sens que si vous avez l’intention de distribuer votre projet. Dans ce cas, lisez le livre automatique: http: // sources .redhat.com / autobook / . Comme d'autres l'ont dit, il existe des alternatives (cmake, scons, etc ...). Je connais assez bien scons et autotools, mais j'utilise toujours make pour les petits projets (quelques fichiers).

En ce qui concerne la bibliothèque partagée: il s’agit presque de Windows, sauf que vous vous connectez directement à la bibliothèque partagée - il n’existe pas de distinction .lib vs .dll sous Linux. Par exemple. pour une bibliothèque foo avec une fonction foo:

int foo(void)
{
     return 1;
}

Vous le construisez comme suit:

gcc -fPIC -c foo.c -o foo.o
gcc -shared foo.o -o libfoo.so

Un principal (bien sûr, dans la vie réelle, vous mettez l'API dans un fichier d'en-tête):

int foo(void);

int main(void)
{
    foo();
    return 0;
}

Et ensuite, vous le liez en tant que:

gcc -c main.c -o main.o
gcc main.o -o main -L. -lfoo 

Le -L. est ici pour dire que vous voulez que l'éditeur de liens regarde dans le répertoire courant (contrairement à windows, cela ne se fait jamais par défaut sous Linux), le -lfoo dit de faire un lien avec la bibliothèque foo.

Donc, pour commencer, je vais d'abord vous indiquer ceci guide pour les makefiles, il aborde également certains liens.
C’est juste un petit quelque chose que mon prof d’informatique de l’Université nous a donné. Je l’ai trouvé très clair et concis, très utile.

Et comme pour un IDE, j'utilise eclipse généralement parce qu’il gère aussi le fichier makefile. Sans parler de la compilation et de la sortie standard à portée de main dans le programme.
Il était principalement destiné au développement Java, mais il existe aussi un plugin C / C ++!

Je recommande le livre L'art de la programmation Unix par ESR. Il couvre le choix de l'éditeur, du langage de programmation, etc. Il donne également une bonne idée de l'état d'esprit qui sous-tend la programmation sous Unix ou Linux.

Pour les éditeurs, vous voulez probablement soit Vim, soit Emacs. Ils sont tous les deux différents et celui qui est le meilleur est plus un goût personnel qu'autre chose. J'utilise Vim. C'est idéal pour se déplacer rapidement dans le code et apporter des modifications. Je n'ai pas autant aimé Emacs que beaucoup de gens. Emacs est extrêmement extensible et peut être utilisé pour tout, du lecteur de nouvelles aux idées. Essayez les deux et voyez ce que vous aimez.

  
      
  • Des recommandations pour les éditeurs de code? J'utilise actuellement nano et j'ai entendu parler de vim et d'emacs, mais je ne sais pas quels sont leurs avantages mutuels. Y at-il d'autres, et pourquoi devrais-je les considérer sur l'un des trois précédents? Note: Je ne cherche pas d’IDE.
  •   

Si vous utilisez Linux avec un gestionnaire de fenêtres (KDE, Gnome, etc.), vous pouvez également envisager d’utiliser l’éditeur de texte standard pour votre gestionnaire de fenêtres. Le principal avantage qu'il aurait sur vim / emacs / nano est qu’il semblerait plus familier à ceux provenant d’un environnement Windows: un éditeur écrit pour être exécuté sur le gestionnaire de fenêtres comporte une barre de menus, des boîtes de dialogue d’ouverture et de sauvegarde des fichiers, une annulation / une restauration. et de nombreuses autres fonctionnalités intéressantes que les éditeurs de console ne peuvent probablement pas égaler. (Bien qu'Emacs et Vim soient assez sophistiqués de nos jours, alors qui sait ;-P)

Sur KDE (c’est ce que j’utilise), je peux vous recommander KWrite, un éditeur de texte riche en fonctionnalités mais assez basique avec mise en évidence de la syntaxe; ou Kate, qui est un éditeur de texte plus sophistiqué doté de fonctionnalités supplémentaires: gestion de session, panneau de terminal intégré, invocation automatique de make et plusieurs plug-ins, y compris une visionneuse de symboles C / C ++. J'utilise généralement Kate pour mon travail en C ++ lorsque je ne veux pas me préoccuper de la configuration d'un projet IDE complet. (Pour votre information, l'IDE pour KDE est KDevelop)

  

Des recommandations pour les éditeurs de code? je suis   utilise actuellement nano et j'ai entendu parler de   vim et emacs, mais je ne sais pas ce que le   les avantages d’eux sont au-dessus les uns des autres.   Y at-il d'autres, et pourquoi devrais-je   les considérer sur l'un des précédents   Trois? Note: je ne cherche pas un   IDE.

Vi et Emacs sont les deux éditeurs Unix par excellence; Si vous souhaitez utiliser un éditeur de texte plutôt qu'un IDE, l'un d'entre eux ou ses dérivés (vim, xemacs, etc.) est la solution. Les deux prennent en charge la coloration syntaxique et toutes sortes de fonctionnalités, par défaut ou via des extensions. La meilleure partie de ces éditeurs est l’extensibilité qu’ils offrent; emacs via une variété de lisp et vim via son propre langage de script.

Personnellement, j'utilise Emacs, je ne peux donc pas en dire beaucoup sur Vim, mais vous devriez pouvoir trouver beaucoup d'informations en ligne. Emacs a plusieurs bons tutoriels et références, dont celui-ci .

EDIT [décembre 2014]: Il semble y avoir eu récemment une tendance des éditeurs multi-plateformes et hautement extensibles. Cela pourrait être un bon choix si vous voulez quelque chose de moins qu'un IDE, mais plus graphique que vi / emacs et une impression native sur plusieurs plates-formes. Je recommande de consulter Sublime ou Atom ; ces deux systèmes fonctionnent sous Windows / Linux / Mac et ont de grandes communautés de plugins et de thèmes.

l'espace entre l'appel direct de g ++ et l'utilisation d'une chaîne de construction autotools est plutôt étroit. Devenez bon avec autotools, ce qui est vraiment ce qui se rapproche le plus d'un "projet" disponible dans le monde Linux / Open Source.

Pour quelqu'un venant de Visual Studio, tous ces éléments en ligne de commande peuvent sembler mystérieux et compliqués. Avant de vous transformer en junkie bash shell / vim / emacs, essayez d’abord quelques outils basés sur une interface graphique afin de disposer de quelques temps de transition ...

  • QT 4.5 avec son mini-IDE QT Creator. C’est le meilleur cadre, quelques années avant la compétition.
  • Eclipse (C ++) - D'après mon expérience avec Windows, je trouve cela ahurissant (c'est probablement la meilleure application Java jamais écrite)
  • KDevelop
  • Anjuta
  • Si vous utilisez Delphi, Lazarus / FreePascal est une bonne alternative.

Je suis sûr que les cheveux longs se moqueront et prétendent que vim ou emacs leur fournit l'environnement de développement le meilleur et le plus rapide, mais des traits différents pour des personnes différentes. Une personne habituée à un IDE mettra du temps à changer ou ne voudra peut-être pas changer du tout. Malgré toutes leurs prouesses en matière d'édition, la création d'applications à interface graphique n'est certainement pas un travail pour les outils 80x25. Il faut des années pour devenir un expert du côté de la ligne de commande, sa transformation de la vision du monde plus qu’autre chose.

Comme note de côté parmi les réponses appropriées ici. Si vous voulez vous lancer en tant que gars sous Windows, je suggérerais le nouveau Qt SDK . On se sent comme chez soi: -)

Je conseille d’utiliser SCons à la place de Make. C’est le même travail, mais il est plus facile d’utiliser et de gérer immédiatement comment créer des bibliothèques dynamiques, des dépendances, etc. Voici un exemple concret pour un prog simple

env = Environment()
env.Append(CCFLAGS='-Wall')
env.Append(CPPPATH = ['./include/'])

env.MergeFlags('-ljpeg')
env.ParseConfig("sdl-config --cflags --libs")
env.ParseConfig("curl-config --cflags --libs")
env.ParseConfig("pkg-config cairo --cflags --libs")

env.Program('rovio-pilot', Glob('./src/*.cpp'))

En tant qu'éditeur de texte, je suis satisfait de JEdit pour le codage, mais c'est une question de goût.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top