9
votes

Passer de Windows à Ubuntu

J'ai utilisé pour programmer sous Windows avec Microsoft Visual C ++ et j'ai besoin de créer certains de mes programmes portables (écrits dans Portable C ++) pour être multiplate-forme, ou au moins je peux publier une version de travail de mon programme pour Linux et Windows.

Je suis totalement nouveau venu dans le développement des applications Linux (et utilisez rarement le système d'exploitation lui-même).

Donc, aujourd'hui, j'ai installé Ubuntu 10.04 LTS (via Wubi) et code équipé :: Blocs avec le compilateur G ++ comme arme principale. Ensuite, j'ai compilé mon tout premier programme Hello World Linux et j'ai confondu sur le programme de sortie.

Je peux exécuter mon programme via l'option de menu "Build and Run" dans le code :: Blocs, mais lorsque j'ai essayé de lancer l'application compilée à l'extérieur via un navigateur de fichiers (IN / MYNTFFSPARTITION / MYPROJEJECT / BIN / RELEASE; Oui, je l'ai sauvé dans ma partition NTFS), le programme ne s'est pas présenté.

pourquoi? J'ai manqué d'idée.

Je dois changer mon Windows et Microsoft Visual Studio Linux et Code :: Blocs Mindset .

Alors je suis venu avec ces questions:

  1. Comment puis-je exécuter mes programmes de Linux compilés à l'extérieur (IDE extérieurs)?
    • sous Windows, je fais simplement exécuter le fichier exécutable généré (.exe)
    • Comment puis-je distribuer mon application Linux?
      • dans Windows, je distribue simplement les fichiers exécutables avec les fichiers DLL correspondants (le cas échéant)
      • Quelle est l'équivalent de Libs (Library Static) et DLLS (Bibliothèque dynamique) sous Linux et comment les utiliser?

6 commentaires

Bonne chance. J'ai couru Linux pendant des années, mais double-démarré à Windows pour le développement, car les outils de Linux semblent comme l'âge de pierre. Maintenant, j'utilise juste Windows tout le temps ...


Cela serait posé mieux comme plusieurs questions et de ceux-ci (par exemple l'équivalent de la bibliothèque) ayant déjà été posé auparavant.


Je pense que vous seriez bien mieux avec la bibliothèque QT et QTCreator IDE.


@RLBond: C'est intéressant car je suis un développeur Linux qui travaille à côté de deux développeurs Windows sur la même base de code multiplate-forme. Ils viennent très souvent à moi lorsque la situation devient difficile à cause de tous les outils de développement disponibles sur Linux. Je veux dire 'ldd' et nm sont là-bas sans avoir à aller chercher des objets comme la dépendance Walker. Ils retombent à gdb lorsque le débogueur vs refuse de donner quelque chose de sensation et que pour le nombre de fois qu'ils ont demandé "Valgrind" ... :)


Drôle. J'ai couru des fenêtres pendant des années, mais Dual a démarré à Linux pour le développement, car je trouve cela plus à l'aise avec tous les outils de développement. Maintenant, je gère presque exclusivement Linux. Dépend probablement du type de développement que vous faites.


Eh bien, différents coups pour différents gens. Je fais du développement C ++ et je ne peux tout simplement pas m'habituer au développement Linux. Il m'a fallu pour toujours pour trouver un automate, par exemple. Je ne peux toujours jamais avoir la suspension de faire des choses avancées dans GDB. Je sais que beaucoup de gens sont très bons avec tous les outils, mais pour quelqu'un qui a grandi sur des idées, je ne peux tout simplement pas la creuser :(


9 Réponses :


3
votes
  1. Naviguez jusqu'au dossier avec votre programme compilé et exécutez ./ Programme
  2. Envoyez le programme, plus tout .so fichiers
  3. .a est la bibliothèque statique, .so est des bibliothèques partagées.
  4. Oui, mais souvent, vous devez la compiler en premier.

    Pas sûr des distributions WxWidgets, cependant.


0 commentaires

0
votes

1, UNIX n'a ​​généralement pas une extension particulière pour un exécutable - donc myProg.exe serait juste myProg. Vous devrez peut-être le configurer pour être exécutable si l'IDE ne le fait pas automatiquement, tapez "chmod + x myProg"

5, pour WXWindows, je téléchargerais la source et construisez-la, vérifiez les instructions de construction, mais il s'agit probablement d'une question de "configuration; faire; faire installer". Généralement dans UNIX, vous construisez une source de formes de libs afin de pouvoir trouver correctement tous les composants de votre machine - vous avez également la source d'exemples, etc.


0 commentaires

0
votes

Je viens d'ajouter des informations à la réponse de RLBond.

  1. Cela dépend de la version Linux. Si vous utilisez un Ubuntu - Créez un package deb. ( http://ubuntuforums.org/showthread.php?t=51003 ) < / li>

    Puis-je exécuter le programme WXGTK sous X11?

    Oui, si vous avez un package WXGTK installé :)


0 commentaires

1
votes

Pourquoi ne pas simplement rester avec ce que vous savez et développez-vous ?net? Ubuntu est originaire de mono. Vous pouvez continuer à utiliser Visual C ++ ou à monter jusqu'à C # et à faciliter votre vie.


0 commentaires

0
votes

Cela ne va pas vraiment répondre à vos questions, mais je pense être une recommandation valide.
Vous avez deux problèmes que vous essayez de traiter avec:

  1. L'environnement Linux.
  2. Assurez-vous que votre programme est portable.

    Si j'étais vous, je chargerais des blocs de code sous Windows et exécutez-le sur Cygwin ou Mingw, cela vous aidera à vous assurer que votre code est portable à travers les plates-formes. Vous connaissez l'environnement et gagnerait une productivité maximale sur la haie du système d'exploitation.

    Une fois que vous êtes satisfait de ce qui précède, prenez votre code et déplacez-le à Linux. À ce stade, tout effort de portage devrait être trivial.


0 commentaires

2
votes

Depuis que Ubuntu est livré avec des packages WXGTK, vous devez certainement construire contre eux. Pour le développement, vous devriez utiliser une version de débogage, il peut donc être bon de construire vous-même, mais pour le renforcement du déploiement contre les paquets que le système fournit semble mieux.

WXX11 est un choix pire que WXGTK, n'utilisez-le que pour les systèmes où WXGTK n'existe pas ou nécessite de nouvelles bibliothèques GTK que sont disponibles.


1 commentaires

Sur Ubuntu, les packages de bibliothèque nécessaires au développement d'une bibliothèque se terminent généralement par -Dev . Par exemple, libwxgtk2.8-dev pour WXGTK 2.8. Vous n'avez même pas besoin de vous compiler pour avoir une version de débogage - les symboles de débogage des bibliothèques de distribution sont également emballés (par exemple, libwxgtk2.8-dbg ).



1
votes

Un conseil général aux nouveaux arrivants de Linux, mais qui sont techniquement obligés de commencer, est la suivante: Vous devez apprendre à utiliser correctement votre distribution choisie.

Dans votre cas, cela signifie apprendre à acquérir les bons forfaits de développement fournis par Ubuntu. Par exemple, d'autres personnes vous conseillent de télécharger la source de bibliothèques que vous allez utiliser, mais la meilleure façon est de Utiliser le système de paquet d'Ubuntu pour télécharger les bibliothèques que vous souhaitez programmer contre , ainsi que Les en-têtes de cette bibliothèque (souvent placés dans un package séparé) ainsi que les symboles de débogage de la bibliothèque (également souvent dans un package séparé).

Regardez dans le système System-> Administration de Ubuntu pour l'outil SYNAPTIC , ce qui vous permet de rechercher les référentiels de packages sur Internet. Vous trouverez presque certainement des packages pour les bibliothèques dont vous avez besoin, ainsi que tous les outils.


0 commentaires

16
votes

Comment puis-je exécuter ma compilée Linux programmes externes (IDE extérieurs)? Dans Windows, je suis simplement exécuté le généré Fichier exécutable (.exe) P>

sur Linux, vous faites la même chose. La seule différence est que sur Linux, le répertoire actuel n'est par défaut pas dans la trajectoire, de sorte que vous le faites: p> xxx pré>

si vous ajoutez le directeur actuel au chemin p> XXX PRE>

Windows Way P>

apt-cache search wx


2 commentaires

J'avais +1 vous deux fois si je pouvais, pour que vous puissiez utiliser les informations de dépendance dans des packages pour les bibliothèques, au lieu de groupement.


Je vous ai fermement prudent l'ajout du répertoire actuel au chemin. Bien que ce n'est qu'un très mauvais problème de sécurité si cela est fait en tant que root [Cringe], cela peut certainement finir suffisamment dangereux pour un seul utilisateur, ou au moins conduire à un comportement inattendu assez étrange. Cela est particulièrement vrai si vous le préparez comme vous le suggérez; Il est assez rare de vouloir remplacer quelque chose déjà installé et que vous voulez probablement l'ajouter ( chemin = "$ chemin:." ) si vous le voulez vraiment vraiment là-bas.



0
votes

Lorsque vous dites que votre programme ne vous apparaît pas, je suppose que vous voulez dire que c'était là dans le navigateur de fichiers, mais lorsque vous avez double cliqué, vous avez un curseur occupé pendant un moment et que rien ne s'est passé?

Si oui alors Cela signifie que le programme n'a pas exécuté, probablement parce qu'il ne pouvait pas trouver les bibliothèques dynamiques qu'elle est liée. Pour diagnostiquer le problème, vous pouvez l'exécuter à partir d'un terminal, puis vous aurez raconté quel est le problème.

Vous voudrez peut-être lire la page manuelle de ld.so IE Tapez xxx

dans un terminal. Cela vous indique où la liaison de bibliothèque Dynamic Linux recherche des bibliothèques au moment de l'exécution. Il vous fait également référence à un autre outil utile appelé ldd que je vous recommande de vous familiariser si vous faites du développement Linux.


0 commentaires