Ubuntu - przenaszalność programów w C++ (najczęstsze problemy).

Dodano: 2010-04-17

Pisząc programy w języku C++ dla systemów z rodziny Linux, nie uniknie się problemów z niemożliwością odpalenia napisanych aplikacji w różnych systemach np: Slackware, SUSE, Ubuntu.

Najczęściej występujące problemy oraz ich możliwe rozwiązania zostały wymienione poniżej:

  1. Plik wykonywalny programu:
    • -bash: ./[nameFile]: Permission denied Komunikat ten oznacza, że aplikacja nie posiada uprawnień do wykonania kodu w systemie Linux, należy nadać odpowiednie prawa plikowi: sudo chmod u+x [nameFile]
    • -bash: ./[nameFile]: cannot execute binary file Powyższa informacja oznacza, że plik wykonywalny jest skompilowany pod inny typ architektury systemu (32bit lub 64 bit) i/lub innego rodzaju rodziny procesorów (np: AMD, Intel). Najlepsze rozwiązanie tego problemu to skompilowanie programu w systemie użytkownika, na którym ma pracować – niestety w przypadku programów komercyjnych jest to wręcz niemożliwe.
  2. Kod źródłowy – większość programów darmowych pod Linux jest dostępna w tej postaci, umożliwia ona skompilowanie programu w dowolnym systemie. Jeżeli już umożliwiasz użytkownikom dostęp do kodu źródłowego, co się bardzo chwali - to podaj w pliku np. readme.txt informację jakiej komendy użyłeś by skompilować plik (kompilatora) i w jakim systemie została wykonana kompilacja testowa. W przypadku korzystania z „nietypowych” bibliotek podaj linki do nich lub zaopatrz program w odpowiednie biblioteki - tutaj istnieje jednak większe prawdopodobieństwo błędów kompilacji. Nawet programy w postaci kodu źródłowego nie gwarantują poprawnego skompilowania programu - mogą tu wchodzić w grę niuanse różnych wersji języka C++ jak i kompilatorów użytych przez danego użytkownika.