Forum Programmation.c porter un logiciel open source depuis Windows

Posté par . Licence CC by-sa.
Tags : aucun
3
26
jan.
2018

Bonjour à tous,

Il y a un logiciel open source qui est actuellement sous Windows, et que je suis obligé de faire tourner en VM.

Mais je me demande, si compte-tenu qu'il soit open source en C, si le porter sous Linux serais un gros travail?

Je suppose qu'il faudrait le compiler et en trouvant les dépendance?

  • # quel est ce programme

    Posté par . Évalué à 3. Dernière modification le 26/01/18 à 08:56.

    Ca peut être plus compliqué en fonction de comment il a été programmé :
    par exemple si le programme utilise des fichiers et que les chemins sont écrits en durs, il faut réécrire tous les chemins. Ou si le programme fait une commande system.

    Quel est le programme en question ?

    Attention au compilo utilisé aussi, normalement ils sont standard mais essaie (si possible) d'utiliser le même

    • [^] # Re: quel est ce programme

      Posté par . Évalué à 2.

      Le programme en question est SEOmacroscope en licence GNU
      developpé sous visual apparement.

      Je vais déjà essayer d'installer visual code studio sous mon ubuntu.

      • [^] # Re: quel est ce programme

        Posté par (page perso) . Évalué à 6.

        Je vais déjà essayer d'installer visual code studio sous mon ubuntu.

        Visual Code Studio n'est de souvenir qu'un éditeur de texte. Cela ne te sera d'aucune aide pour le faire fonctionner sous Linux.
        Cependant le code est en C# (et non en C), tu devrais regarder du côté de mono (ou autre outil .NET pour Linux) pour voir s'il n'est pas possible de le faire tourner sous Linux facilement.

      • [^] # Re: quel est ce programme

        Posté par . Évalué à 1. Dernière modification le 26/01/18 à 09:31.

        C'est du c# c'est différent du c, il faut pas confondre c c# et c++. C# (prononce c sharp) est "sponsorisé" par windows et son framework .NET.

        Apparemment il existerait un framework .net qui fonctionnerait sous linux. Note que j'utilise le conditionnel donc je suis vraiment pas sûr que ça fonctionne.
        Edit : grillé par Renault

        • [^] # Re: quel est ce programme

          Posté par . Évalué à 1.

          Merci a vous deux. effectivement j'avais confondu. je connaissais c et c++ mais pas c#
          Je pensais que visual code studio compilais aussi, donc je l'ai installé pour rien.

          Et j'ai essayé de le faire tourner sous wine mais ca fonctionne pas.
          Au final, je suppose que je dois oublier de compiler du c# pour linux

          Donc il reste mono sinon rester en Vm

    • [^] # Re: quel est ce programme

      Posté par . Évalué à 3. Dernière modification le 26/01/18 à 09:43.

      normalement ils sont standard

      On parle d'un logiciel sous windows, la, hein… si le code est écrit avec Visual Studio, disons, par exemple, 2005, il faut savoir qu'il ne s'agit pas d'un compilateur C, mais C++, et les langages C et C++ ne suivent pas le même standard (ils sont proches, ok, mais ça s'arrête la, je pense notamment à stdint.h qui n'était pas inclus dans le standard C++ avant C++11, autrement dit on a du contourner le problème pendant pas mal de temps, je gage que c'est la raison pour laquelle certaines libs genre la SDL réimplémentent ces types… en bref: VS2005 notamment ne respecte pas le standard C99.).
      J'ai aussi souvenir de softs qui compilaient avec VS2005 mais pas avec VS2008, aussi. Bref: MS et les standards C/C++, mieux vaut s'en méfier comme de la peste, surtout si le dev d'origine a pas fait gaffe.

      Ou si le programme fait une commande system.

      Autre problème: les chances sont énormes pour que le logiciel utilise l'API win32 ou des libs spécifiques à windows pour l'interface graphique, ça risque de représenter un gros gros boulot de changer ça: Qt n'a pas du tout la même façon de penser (Gtk je sais pas, mais franchement je doute aussi que ça soit proche). À la rigueur, p'tet passer des MFCs si c'est ce qui est utilisé vers WxWdigets, la philosophie est, de mémoire, assez proche.

      De toute façon, avant de chercher à faire le portage, il faudrait déjà essayer de le faire tourner via wine, ce soft. Et si wine passe pas, le plus simple, c'est de porter le logiciel pour qu'il tourne via wine, c'est ce qui demandera le moins de travail. Et pour éviter de s'emmerder avec du multiarch, il suffit de compiler en 64bits.

      Quel est le programme en question ?

      Bonne question. Si ça se trouve, il suffit de recompiler.

      [edit]
      p'tain, du coup j'ai pas vu l'histoire du C#… faut toujours qu'on vienne me causer quand j'attaque un truc…

  • # Wine ?

    Posté par . Évalué à 2.

    As-tu testé de le lancer sous Wine ? Si cela fonctionne ce sera beaucoup plus léger qu'une VM ;)

    • [^] # Re: Wine ?

      Posté par . Évalué à 1.

      Bizarrement, le logiciel se lance sans souci mais il ne crawl pas. (oui c'est un crawler)

      • [^] # Re: Wine ?

        Posté par . Évalué à 1.

        voici le retour d'erreur sous Wine
        Si une bonne ame a une idée:

        $ wine ~/.wine/drive_c/Program\ Files/SEO\ Macroscope/SEOMacroscope.exe 
        fixme:mscoree:ConfigFileHandler_startElement Unknown element L"configSections" in state 1
        fixme:mscoree:ConfigFileHandler_startElement Unknown element L"sectionGroup" in state 3
        fixme:mscoree:ConfigFileHandler_startElement Unknown element L"section" in state 3
        fixme:mscoree:ConfigFileHandler_startElement Unknown element L"section" in state 3
        fixme:mscoree:parse_supported_runtime sku=L".NETFramework,Version=v4.5.2" not implemented
        fixme:mscoree:ConfigFileHandler_startElement Unknown element L"userSettings" in state 1
        fixme:mscoree:ConfigFileHandler_startElement Unknown element L"SEOMacroscope.MacroscopeEnvironment.MacroscopePreferences" in state 3
        […]
        fixme:mscoree:ConfigFileHandler_startElement Unknown element L"SEOMacroscope.MacroscopePreferences" in state 3
        fixme:mscoree:ConfigFileHandler_startElement Unknown element L"setting" in state 3
        […]
        fixme:mscoree:ConfigFileHandler_startElement Unknown element L"value" in state 3
        fixme:mscoree:CLRMetaHost_GetRuntime Unrecognized version L"v4.0"
        fixme:wincodecs:PngDecoder_Block_GetCount 0x175db30,0x33c028: stub
        fixme:wincodecs:PngDecoder_Block_GetCount 0x1777b50,0x33c028: stub
        fixme:wincodecs:PngDecoder_Block_GetCount 0x1808960,0x33c028: stub
        fixme:wincodecs:PngDecoder_Block_GetCount 0x1777b68,0x33c028: stub
        fixme:wincodecs:PngDecoder_Block_GetCount 0x1808a08,0x33c028: stub
        fixme:wincodecs:PngDecoder_Block_GetCount 0x1896260,0x33c678: stub
        fixme:wincodecs:PngDecoder_Block_GetCount 0x17a3ac0,0x33c678: stub
        fixme:wincodecs:PngDecoder_Block_GetCount 0x176e230,0x33c678: stub
        fixme:wincodecs:PngDecoder_Block_GetCount 0x1780050,0x33c678: stub
        fixme:wincodecs:PngDecoder_Block_GetCount 0x1891730,0x33c678: stub
        fixme:wincodecs:PngDecoder_Block_GetCount 0x198f788,0x33dc38: stub
        fixme:wincodecs:PngDecoder_Block_GetCount 0x198f7a0,0x33dc38: stub
        fixme:wincodecs:PngDecoder_Block_GetCount 0x19ba5a0,0x33e298: stub
        fixme:wincodecs:PngDecoder_Block_GetCount 0x19bcae0,0x33e8e8: stub
        
        Unhandled Exception:
        System.NotImplementedException: The requested feature is not implemented.
          at SEOMacroscope.Macroscope.MemoryGate (Int32 RequiredMegabytes) [0x00000] in <filename unknown>:0 
          at SEOMacroscope.MacroscopeJobMaster.SpawnWorkers () [0x00000] in <filename unknown>:0 
          at SEOMacroscope.MacroscopeJobMaster.Execute () [0x00000] in <filename unknown>:0 
          at SEOMacroscope.MacroscopeMainForm.ScanningThread () [0x00000] in <filename unknown>:0 
          at System.Threading.Thread.StartInternal () [0x00000] in <filename unknown>:0 
        [ERROR] FATAL UNHANDLED EXCEPTION: System.NotImplementedException: The requested feature is not implemented.
          at SEOMacroscope.Macroscope.MemoryGate (Int32 RequiredMegabytes) [0x00000] in <filename unknown>:0 
          at SEOMacroscope.MacroscopeJobMaster.SpawnWorkers () [0x00000] in <filename unknown>:0 
          at SEOMacroscope.MacroscopeJobMaster.Execute () [0x00000] in <filename unknown>:0 
          at SEOMacroscope.MacroscopeMainForm.ScanningThread () [0x00000] in <filename unknown>:0 
          at System.Threading.Thread.StartInternal () [0x00000] in <filename unknown>:0 
        
        • [^] # Re: Wine ?

          Posté par . Évalué à 2.

          Hello,

          Le message d'erreur

          fixme:mscoree:parse_supported_runtime sku=L".NETFramework,Version=v4.5.2" not implemented

          devrait donner une bonne idée du pourquoi ça ne marche pas sous wine :-)

          • [^] # Re: Wine ?

            Posté par . Évalué à 3.

            Ca marche!!
            Bon pas très rapidement mais ca fonctionne,

            J'avais la version de wine de base sous ubuntu 14.04 (1.7 ou 8)
            J'ai installé la stable de winehq

            sudo apt-get install --install-recommends winehq-stable

            mais j'ai encore de la conf pour corriger notamment:

            001c:err:module:import_dll Library MSVCR120_CLR0400.dll (which is needed by L"C:\\windows\\Microsoft.NET\\Framework64\\v4.0.30319\\mscorsvw.exe") not found
            001c:err:module:import_dll Library mscoree.dll (which is needed by L"C:\\windows\\Microsoft.NET\\Framework64\\v4.0.30319\\mscorsvw.exe") not found
            001c:err:module:attach_dlls Importing dlls for L"C:\\windows\\Microsoft.NET\\Framework64\\v4.0.30319\\mscorsvw.exe" failed, status c0000135
            000f:err:service:process_send_command service protocol error - failed to write pipe!
            […]
            0042:fixme:ras:RasEnumConnectionsW (0x598cb38,0x56cf494,0x56cf498),stub!
            0042:fixme:ras:RasEnumConnectionsW RAS support is not implemented! Configure program to use LAN connection/winsock instead!
            0042:err:winsock:WSAIoctl -> SIO_ADDRESS_LIST_CHANGE request failed with status 0x2733
            0042:err:winsock:WSAIoctl -> SIO_ADDRESS_LIST_CHANGE request failed with status 0x2733
            […]
            
            • [^] # Re: Wine ?

              Posté par (page perso) . Évalué à 4.

              il te manque quelques winetricks visiblement

              Peux-tu poster le résultat de

              objdump -x ton_exe_lanceur.exe | grep -i DLL | sort | uniq

              ça devrait nous dire les libraires à installer via des winetricks

              Multitasking — The art of doing twice as much as you should half as well as you could.

              • [^] # Re: Wine ?

                Posté par . Évalué à 1.

                ~$ objdump -x ~/.wine/drive_c/Program\ Files/SEO\ Macroscope/SEOMacroscope.exe | grep -i DLL | sort | uniq
                DllCharacteristics 00008560
                DLL Name: mscoree.dll
                vma: Hint Temps Avant DLL Premier

                • [^] # Re: Wine ?

                  Posté par (page perso) . Évalué à 2.

                  Quand je le lance il m'indique qu'il a besoin de dotnet452, quand je l'installe il continue à me dire qu'il ne le trouve pas, bizarre

                  mon historique

                  2013 WINEARCH=win32 WINEPREFIX=/home/gg/.wine_seo winecfg
                  2014 WINEARCH=win32 WINEPREFIX=/home/gg/.wine_seo winetricks -q --unattended wininet comctl32 dotnet45
                  2015 WINEARCH=win32 WINEPREFIX=/home/gg/.wine_seo winetricks -q --unattended dotnet452
                  2016 WINEARCH=win32 WINEPREFIX=/home/gg/.wine_seo wine SEOMacroscope-Installer-1.6.0.0.exe
                  2017 WINEARCH=win32 WINEPREFIX=/home/gg/.wine_seo wine ~/.wine_seo/drive_c/Program\ Files/SEO\ Macroscope/SEOMacroscope.exe
                  2018 WINEARCH=win32 WINEPREFIX=/home/gg/.wine_seo wine ~/Téléchargements/NDP452-KB2901907-x86-x64-AllOS-ENU.exe
                  2019 WINEARCH=win32 WINEPREFIX=/home/gg/.wine_seo wine ~/.wine_seo/drive_c/Program\ Files/SEO\ Macroscope/SEOMacroscope.exe
                  2020 WINEARCH=win32 WINEPREFIX=/home/gg/.wine_seo winetricks -q --unattended dotnet452
                  2021 WINEARCH=win32 WINEPREFIX=/home/gg/.wine_seo wine ~/.wine_seo/drive_c/Program\ Files/SEO\ Macroscope/SEOMacroscope.exe
                  2022 WINEARCH=win32 WINEPREFIX=/home/gg/.wine_seo wine ~/Téléchargements/NDP471-KB4033344-Web.exe
                  2023 WINEARCH=win32 WINEPREFIX=/home/gg/.wine_seo wine ~/.wine_seo/drive_c/Program\ Files/SEO\ Macroscope/SEOMacroscope.exe

                  Mono me donne

                  $ mono SEOMacroscope-Installer-1.6.0.0.exe
                  Cannot open assembly 'SEOMacroscope-Installer-1.6.0.0.exe': File does not contain a valid CIL image.
                  gg@asus:~/Téléchargements$

                  Multitasking — The art of doing twice as much as you should half as well as you could.

                  • [^] # Re: Wine ?

                    Posté par . Évalué à 1.

                    J'ai pas ce souci, ce matin j'ai réintaller un machine en 32b

                    pour l'install de la wine:

                    rm -rf ~/.wine
                    env WINEARCH=win32 WINEPREFIX=/home/gotcha/.wine 
                    wineboot -u
                    bash winetricks dotnet452 corefonts
                    

                    et j'utilise La V1.5 de macroscope.

                    $ wine ~/.wine/drive_c/Program\ Files/SEO\ Macroscope/SEOMacroscope.exe 
                    003a:fixme:kernelbase:QuirkIsEnabled3 (0x33f4c8, 0xffffffff) stub!
                    003a:fixme:process:GetNumaHighestNodeNumber (0x33fbf0): semi-stub
                    003a:fixme:thread:SetThreadStackGuarantee (0x33fbd4): stub
                    0043:err:ole:CoGetContextToken apartment not initialised
                    003a:fixme:time:QueryThreadCycleTime (0xfffffffe,0x39e2550): stub!
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 4 0x170dfc 0x33d064 0x33d6d0 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 3 0x171070 0x33d244 0x33d8b0 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 3 0x171070 0x33d244 0x33d8b0 (nil)
                    003a:fixme:shell:URL_ParseUrl failed to parse L"System.Windows.Forms"
                    003a:fixme:shell:URL_ParseUrl failed to parse L"System"
                    003a:fixme:shell:URL_ParseUrl failed to parse L"System.Drawing"
                    003a:fixme:ntdll:EtwEventRegister ({8e9f5090-2d75-4d03-8a81-e5afbf85daf1}, 0x43d02be, (nil), 0x1242dd8) stub.
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 2 0x176a84 0x33d034 0x33d6a0 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 2 0x176a84 0x33d214 0x33d880 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 2 0x176a84 0x33d214 0x33d880 (nil)
                    003a:fixme:nls:get_dummy_preferred_ui_language (0x8 0x33e928 (nil) 0x33e924) returning a dummy value (current locale)
                    003a:fixme:nls:get_dummy_preferred_ui_language (0x8 0x33e928 0x17c270 0x33e924) returning a dummy value (current locale)
                    003a:fixme:shell:URL_ParseUrl failed to parse L"Accessibility"
                    003a:fixme:shell:URL_ParseUrl failed to parse L"System.Configuration"
                    003a:fixme:shell:URL_ParseUrl failed to parse L"System.Xml"
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 4 0x17a234 0x33c7c4 0x33ce30 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 3 0x188c28 0x33c9a4 0x33d010 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 3 0x188c28 0x33c9a4 0x33d010 (nil)
                    003a:fixme:gdiplus:GdipGetFamilyName No support for handling of multiple languages!
                    003a:fixme:shell:URL_ParseUrl failed to parse L"SEOMacroscope.resources"
                    003a:fixme:shell:URL_ParseUrl failed to parse L"SEOMacroscope.resources"
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 2 0x1a0e60 0x33a5f4 0x33ac60 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 2 0x1a0e60 0x33a7d4 0x33ae40 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 2 0x1a0e60 0x33a7d4 0x33ae40 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 4 0x1a1b0c 0x33c2f4 0x33c960 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 3 0x1a1af8 0x33c4d4 0x33cb40 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 3 0x1a1af8 0x33c4d4 0x33cb40 (nil)
                    003a:fixme:nls:LCMapStringEx unsupported lparam 183bd8
                    003a:fixme:shell:URL_ParseUrl failed to parse L"SEOMacroscope.resources"
                    003a:fixme:shell:URL_ParseUrl failed to parse L"SEOMacroscope.resources"
                    003a:fixme:shell:URL_ParseUrl failed to parse L"SEOMacroscope.resources"
                    003a:fixme:shell:URL_ParseUrl failed to parse L"SEOMacroscope.resources"
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 2 0x1a269c 0x33c6c4 0x33cd30 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 2 0x1a269c 0x33c8a4 0x33cf10 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 2 0x1a269c 0x33c8a4 0x33cf10 (nil)
                    003a:fixme:process:FlushProcessWriteBuffers : stub
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 4 0x199eac 0x33d564 0x33dbd0 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 3 0x199e98 0x33d744 0x33ddb0 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 3 0x199e98 0x33d744 0x33ddb0 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 4 0x199eb0 0x33d564 0x33dbd0 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 3 0x199e9c 0x33d744 0x33ddb0 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 3 0x199e9c 0x33d744 0x33ddb0 (nil)
                    006e:fixme:ole:CoGetApartmentType (0x4f3fdec, 0x4f3fde8): semi-stub
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 2 0x1b1878 0x33cd94 0x33d400 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 2 0x1b1878 0x33cf74 0x33d5e0 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 2 0x1b1878 0x33cf74 0x33d5e0 (nil)
                    003a:fixme:shell:URL_ParseUrl failed to parse L"RobotsTxt"
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 4 0x1b3ff4 0x33d554 0x33dbc0 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 3 0x1b39c0 0x33d734 0x33dda0 (nil)
                    003a:fixme:combase:RoGetParameterizedTypeInstanceIID stub: 3 0x1b39c0 0x33d734 0x33dda0 (nil)
                    003a:fixme:gdiplus:GdipCreateHalftonePalette stub
                    003a:fixme:gdiplus:GdipGetNearestColor (0x20efa8, 0x33e5e8): Passing color unmodified
                    003a:fixme:gdiplus:GdipGetNearestColor (0x20efa8, 0x33e5e8): Passing color unmodified
                    003a:fixme:gdiplus:GdipGetNearestColor (0x20efa8, 0x33e5e8): Passing color unmodified
                    003a:fixme:gdiplus:GdipGetNearestColor (0x20efa8, 0x33e5e8): Passing color unmodified
                    006f:fixme:ole:CoGetApartmentType (0x639fc7c, 0x639fc78): semi-stub
                    0071:fixme:sync:SetWaitableTimerEx (0x1f4, 0x64afe48, 500, (nil), (nil), (nil), 50) semi-stub
                    0074:fixme:ole:CoGetApartmentType (0x65bfbfc, 0x65bfbf8): semi-stub
                    007d:fixme:ole:CoGetApartmentType (0x66cfb7c, 0x66cfb78): semi-stub
                    00dd:fixme:ole:CoGetApartmentType (0xabdfafc, 0xabdfaf8): semi-stub
                    003a:fixme:shell:URL_ParseUrl failed to parse L"System.Core"
                    

                    voila ca foncitionne mais c'est lent et me bloque un core à 100%

                    • [^] # Re: Wine ?

                      Posté par (page perso) . Évalué à 2.

                      si ça marche c'est parfait juste un truc, en général les messages
                      fixme
                      sont sans intérêt, donc tu peux faire

                      WINEDEBUG=fixme-all wine ~/.wine/drive_c/Program\ Files/SEO\ Macroscope/SEOMacroscope.exe

                      ça sera plus sobre

                      Multitasking — The art of doing twice as much as you should half as well as you could.

            • [^] # Re: Wine ?

              Posté par . Évalué à 3.

              Il faut que tu utilises mono, pas wine.
              apt install mono-complete
              mono ./tonsoft.exe

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.