Debian VS RedHat



  • Beides ist i386

    Hab eine Anwendung unter Debian gebaut, die auch von mir erstelle SharedObjects verwendet und unter CentOS, welches denk ich mal auf RedHat basiert, bekomm ich ein SIGABRT in __kernel_vsyscall ()



  • Hmmm... vllt. auch nicht!

    Einmal hab ich:

    Linux matti-pc 3.0.0-19-generic-pae #33-Ubuntu SMP Thu Apr 19 20:59:10 UTC 2012 i686 athlon i386 GNU/Linux

    Und dann:

    Linux t661 2.6.18.8-0.13-default #1 SMP Thu Nov 6 13:35:13 UTC 2008 x86_64 x86_64 x86_64 GNU/Linux

    kann das funktionieren?


  • Mod

    matti83 schrieb:

    kann das funktionieren?

    Immer noch vielleicht 🙂 . Es ist zumindest keine der unmöglichen Kombinationen.

    Kommt eben auf die Exe an, welche libs sie statisch und dynamisch linkt, welche Kernelfunktionen sie benutzt, welche Version der Runtime sie braucht oder nicht und und und...

    Es ist definitiv möglich, Executables ohne Neucompilieren auf sehr unterschiedlichen Systemen zu benutzen. Kommerzielle Linuxsoftware macht das häufig so. Aber dabei wird beim Erstellen der Exe auch genau darauf Wert gelegt.

    Was hast du überhaupt vor? Wenn du sowieso beide Systeme vor dir hast, wieso probierst du es nicht einfach aus?



  • hab ich ausprobiert.

    unter debian läufts unter CentOS __syscall error

    wie finde ich jetzt heraus woran es liegt?
    und doch lieber dev-env installieren und unter CentOS neu compilieren... 😕



  • matti83 schrieb:

    [...] doch lieber dev-env installieren und unter CentOS neu compilieren... 😕

    Wenn möglich natürlich JA !



  • Swordfish schrieb:

    matti83 schrieb:

    [...] doch lieber dev-env installieren und unter CentOS neu compilieren... 😕

    Wenn möglich natürlich JA !

    Schade... ich hätt gern eine (saubere) Version, die auf so vielen Systemen wie möglich läuft.
    Gibt es da ein gutes HowTo?


  • Mod

    matti83 schrieb:

    Gibt es da ein gutes HowTo?

    Wieder: Kommt drauf an.

    Wenn dein Programm nichts großartig anders macht, als man mit strengem ANSI-C/C++ machen könnte, dann ist das mehr oder weniger trivial, wenn du hingegen Aufrufe an "exotischere" Bibliotheken machst, dann wird das ganz schnell schwierig.

    Derzeit scheinst du ziemlich wenig Plan zu haben, wie eine Exe überhaupt aufgebaut ist und wie Bibliotheken, Runtime und Kernel zusammenarbeiten. Ein guter Plan wäre, sich zunächst mit den Grundbegriffen vertraut zu machen. Wie oft hast du überhaupt Software schon selber compiliert und wie oft hast du eventuelle Probleme dabei selber gelöst?



  • Ach so ein oder zwei Programme hab ich schon geschrieben... das ist nicht das ding.

    Mir fehlt nur ein Verständnis zwischen den verschiedenen Distributionen.

    was verwende ich alles?
    - betriebssystem
    - system calls
    - pthread lib
    - meine eigenen libs
    - meine anwendung

    Also was ist gleich, und worauf muss ich auchten? 😕


  • Mod

    Ich sage mal: Link alles (auch die libgcc und evtl. libstdc++, je nach Sprache) statisch und compilier für einen Prozessorbefehlssatz der beiden Systemen gemeinsam ist (hier: i386). Das sollte schon reichen. Falls es nicht funktionieren sollte, melde dich wieder.



  • Komische Frage eigentlich. Wäre doch viel einfacher, das ganze gleich selbst auszuprobieren. Und wenn man schon mal dabei ist, kann man auch gleich mal gucken, obs auch auf Solaris oder anderen Unixen läuft.

    Ansonsten vielleicht zum Programm sowas dabei schreiben wie "läuft optimal unter Debian-Systemen" oder eben "Programm ist optimiert für Debian" oder so ähnlich 😉

    Rein richtungsmäßig wäre es vielleicht eher sinnvoller auf Red Hat zu entwickelen und gucken, obs auch auf Debian läuft, Debian hat eben die größere (und ältere) Fangemeinde (Bibpflege usw.).


Anmelden zum Antworten