• 0
Belov.V.

Сборка приложений под Linux

Вопрос

Предлагаю поделиться практикой сборки приложений под Linux, набором ошибок и глюков.

Решил сделать пару экспериментов в связке RAD-Linux.

1) Есть рабочий Debian7. На нем не пошел PAServer. Требует glib версии 2.14 или 2.17 (на 7-ке 2.12). Добавил в репозиторий ссылку на пакеты от debian 8. Обновил. PAServer стартует, но тут же валится по ошибке сокета (не записал как звучит). Пока все пакеты подряд.

2) Поднял Debian8. Чистый.

  • PAServer стартует, SDK в RAD студию загружается.
  • При попытке сборки ошибка "[DCC Error] E2597 C:\Program Files (x86)\Embarcadero\Studio\19.0\bin\ld-linux.exe: error: cannot find -lgcc_s"
  • При обновлении кеша файлов SDK ругается:
Directory does not exist: /usr/include/c++/
Directory does not exist: /usr/include/x86_64-linux-gnu/ (исчезла после gcc-6)
Directory does not exist: /usr/include/x86_64-linux-gnu/c++/
Directory does not exist: /usr/include/c++/
Directory does not exist: /usr/lib/gcc/x86_64-redhat-linux/
Directory does not exist: /usr/lib/gcc/x86_64-redhat-linux/
Directory does not exist: /usr/lib64/
  • Доставил пакеты gcc-6 и linux-compiler-gcc-6-x86, обновил файлы кеша SDK (исчезла вторая строчка в предупреждении при обновлении).

Ура!  Простейший пример собирается и стартует. Под отладчиком работает. Но остались шесть предупреждений при обновлении linux SDK.

Где это может вылезти?

Евгений Корепов понравилось это

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1 ответ на этот вопрос

  • 0

Еще в документации нашел рекомендацию для возможности использовать System.zLib установить пакет zlib-deve.

Для Debian9 это zlib1g-dev. Установил, обновил SDK, количество предупреждений о не найденных путях по прежнему 6

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас

  • Похожие публикации

    • Автор: Pulsarius
      Здравствуйте, Ярослав! Скажите, пожалуйста, есть ли какая либо информация о планах поддержки Linux в C++ Builder? Нашей компании очень подходит RAD Studio для наших целей и быстрой разработки. Планируем приобрести лицензию. В ближайшее время планируем разрабатывать наше решение для Windows, macOS и Android, пока этого достаточно. Но есть некоторые сомнения о выборе RAD Studio и всё из-за того, что примерно через год потребуется наше решение реализовать и для Linux. Какова вероятность, что C++ Builder обзаведётся поддержкой Linux'а в течении 1 - 1,5 года? Delphi не рассматриваем. Заранее спасибо за ответ.
    • Автор: chaplin.u@gmail.com
      Освежите в памяти для того чтобы аппликация была совместима с Лоллипопом ( Андроид 5) какие версии SDK NDK должны стоять ?
       
    • Автор: Martifan
      Доброго времени сутки.
      вовремя запуска аппликации выдаёт такую ошибку и телефоне аппликация не запускается хотя если его запустить вручную то он работает я перерыл интернет ничего полезного не нашел может кто знает как с этим бороться.
      раньше работал нормально но через какой то время перестал.
      заранее спасибо 

    • Автор: chaplin.u@gmail.com
      Не могу запустить приложение на Маке. Какие-то проблемы с sdk .
      Во-первых почему-то создаётся СДК для бета версии MacOSX10.12.sdk а на моём Маке стоит 10.11 . Где взять sdk на 10.11 ?
      Во-вторых прописаны несуществующие директории :
      [bccosx Warning] W8123 Path 'C:\Users\Documents\Embarcadero\Studio\SDKs\MacOSX10.12.sdk/System/Library/Frameworks' not found 
      [bccosx Warning] W8123 Path 'C:\Users\Documents\Embarcadero\Studio\SDKs\MacOSX10.12.sdk/System/Library/PrivateFrameworks' not found - 
      Что там должно быть и где взять эти файлы
      В-третьих в файле  sysmac.h  написано :
      #if !defined(TARGET_OS_IPHONE) && !defined(TARGET_IPHONE_SIMULATOR)
            #pragma option push -w-8017  // Workaround redefinition of NSEC_PER_USEC and USEC_PER_SEC
            #include <CoreServices/CoreServices.h>
      А этих директорий у меня тоже нет ...
       
       
       
       
    • Автор: Axbor
      Пытаюсь запустить демо проект из коробки XE10 которая находится по этому пути: C:\Users\Public\Documents\Embarcadero\Studio\17.0\Samples\Object Pascal\Database\FireDAC\Samples\Getting Started\MySQL
      При попытке соединится с сервером выдает ошибку 
      Client does not support authentication protocol requested by server; consider upgrading MySQL client
      Как это исправит?
    • Автор: Axbor
      Короче есть такой код при выполнении которого выходит ошибка Bitmap size too big:
      void __fastcall TForm1::TabControl2Gesture(TObject *Sender, const TGestureEventInfo &EventInfo, bool &Handled) { switch (EventInfo.GestureID) { case sgiLeft: if(!ChangeJoke(false)) return; TabControl2->Next(TTabTransition::Slide, TTabTransitionDirection::Normal); Handled = true; Latifa2Caption->Text = Latifa3Caption->Text; Latifa2Text->Text = Latifa3Text->Text; Latifa2Layout->Height = Latifa3Layout->Height; TabControl2->TabIndex = 1; break; case sgiRight: if(!ChangeJoke(true)) return; TabControl2->Previous(TTabTransition::Slide, TTabTransitionDirection::Normal); Latifa2Caption->Text = Latifa1Caption->Text; Latifa2Text->Text = Latifa1Text->Text; Latifa2Layout->Height = Latifa1Layout->Height; TabControl2->TabIndex = 1; Handled = true; break; default: break; } } bool __fastcall TForm1::ChangeJoke(bool iLeft) { if(iLeft) { if(CurrPos == 0) return false; Latifa1Caption->Text = Jokes[CurrPos - 1].Caption; Latifa1Text->Text = Jokes[CurrPos - 1].Content; Latifa1Layout->Height = Latifa1Caption->Height + Latifa1Text->Height + 20; CurrPos --; return true; } else { if(CurrPos + 1 >= Count) { TThread::Synchronize(TThread::CurrentThread, GetJoke); return false; } Latifa3Caption->Text = Jokes[CurrPos + 1].Caption; Latifa3Text->Text = Jokes[CurrPos + 1].Content; Latifa3Layout->Height = Latifa3Caption->Height + Latifa3Text->Height + 20; CurrPos ++; return true; } } Там внутри TabItem ов находится ScrollBox(align=Client) внутри ScrollBox есть Layout (Align Top) внутри Layout Rectangle(Align Content) и еще два Label (Align = top, AutoSize = true, WrodWrap = true).
      Еще заметил, иногда без ошибки выполняется но размер Layout становится слишком большим. Что то идет явно не так.
      (UPD)
      Когда не выходит ошибка и размер Layout становится становится слишком большой исправляется это при повторе движения. И после это всё работает нормально.
    • Автор: masmat
      Всех с Новым годом!.
       
      Не могу понять в чем ошибка. Значит по порядку
       
      1. Есть рецепт настройки проекта для запуска на iOS, ссылку не буду приводить, дабы не нарушать правила.
      2. Все настроил, iPhone виден в Delphi как устройство для отладки.
      3. Запускаю отладку и получаю вот такие ошибки. Путь "Local root directory" был и по умолчанию, и указывал его абсолютным, не помогает
       
       
       
      4. Когда обновить файлы локально

       
      То получаю вот такую ошибку

       
      И всё, дальше тупик. Не могу понять в чем дело.
      ПО последних версий
      Windows Embarcadero® Delphi XE8 Version 22.0.19908.869 + Update 1 MAC OS X EI Capitan на физическом MAC SDK 9.2 XCode 7.2 PA Server 16.0  
       
       
    • Автор: Дениска
      Господа! Тема очень важная.
      Как использовать сторонние нативные (написанные на Obj-C) фреймворки и SDK в Firemonkey (не дописана).
       
      Имеется SDK, включающий статическую библиотеку, заголовок к ней и кучу классов упрощающих работу с библиотекой.
      libSDK.a SDK.h class1.h class1.m class2.h class3.m ... classN.h classN.m Чтобы упростить себе жизнь, немного покопавшись:
      www.youtube.com/watch?v=f7lxkv-sZA0 www.youtube.com/watch?v=5cnY8WNKRwg ... я собрал из этой кучи файлов одну статическую библиотеку MyLib.a.
      (Кому нужно знать как это делается, спрашивайте. Это отдельная тема.)
       
      Как заверяют разработчики этого SDK, для использования этой библиотеки необходимо подключить пару нативных фреймворков и две динамические библиотеки:
      SystemConfiguration.framework CoreTelephony.framework libstdc++.dylib libz.dylib Фреймворки стандартные и уже реализованы в RAD Studio, а библиотеки присутствуют в скачиваемом IOS SDK по пути:
      C:\Users\Username\Documents\Embarcadero\Studio\SDKs\iPhoneOS9.0.sdk\usr\lib.
       
      Embarcadero "побеспокоилась" о подключении сторонних статических библиотек. Создаётся функция (пример взят из сканера баркодов):
       
      implementation
        procedure FakeLoader(произвольное имя); cdecl; external 'MyLib.a' name 'OBJC_CLASS_$_MyClass'; 
       
      Реальная польза этой функции для меня остаётся загадкой, кроме того, что без неё приложение не увидит библиотеки и при попытки обратится к классу выдаст: "ObjectiveC class MyClass could not be found".
       
      Для начала я создал на XCode libHelloWorld.a (думаю не нужно говорить, что она делает).
      Немного покопавшись:
      ridingdelphi.blogspot.com/2014/01/the-quest-to-migrate-ios-squarecam-app_3169.html blog.blong.com/2013/05/delphi-for-ios-some-notes.html написал хедер HelloWorld.pas, в котором описал классы и функции хранящиеся в этой библиотеке. Подключил pas в uses  в проекте и всё заработало.
      (Кому нужно знать как это делается, спрашивайте. Это отдельная тема.).
      Решил теперь подключить мою MyLib.a, которую я создал из основе SDK, можно сказать конвертировал. Но она требует две динамические библиотеки, что в случае с HelloWorld не требовалось.
       
      Как подсказывает Embarcadero, мне нужно дописать в мой FakeLoader директиву dependency. Итого:
        procedure FakeLoader; cdecl; external 'MyLib.a' name 'OBJC_CLASS_$_MyClass'
        dependency 'libstdc++.dylib', 'libz.dylib';
       
      Но вот тут и нужна Ваша помощь!
       
      Я помещал эти библиотеки прямо в проект, указывал абсолютные пути из MacPC и из моего PC, копировал оригинальные библиотеки из MacPC, писал их с расширением и без, с префиксом "lib" и без. IDE твердит одно:
           [DCC Error] E2597 ld: library not found for -llibz.dylib    [DCC Error] E2597 ld: library not found for -llibstdc++.dylib  
      Без этих библиотек моя статическая библиотека MyLib.a не компилируется с ошибками:
            Error: "blablabla", referenced from: lalalala in MyLib.a(Class1.o);  lalalala in MyLib.a(Class1.o);      Error: "qwertyuui", referenced from: olololo in MyLib.a(Class2.o);  olololo in MyLib.a(Class2.o);      Error: "abracadabra", referenced from: abcdefjgh in MyLib.a(Class3.o);  abcdefjgh in MyLib.a(Class3.o);    ...   Кто сталкивался? Кто знает чем помочь? Пишите. Сейчас мой проект простаивает из-за этой проблемы.  
    • Автор: Brovin Yaroslav
      Как установить предыдущую версии SDK и симуляторов?
       
      Зачастую Apple меняет требования к процедуре запуска приложений на новых версиях iOS. Для сохранения совместимости с RAD Studio и не потерять возможность отладки и запуска приложений требуется установить предыдущую версию симулятора или SDK.
    • Автор: rareMax
      Добрый вечер. Когда-то видел в интернете(не помню - официальный источник или нет) что будет поддержка приложений для Linux'a. Вот собственно и интересно - будет ли она? Если да - то как скоро? Спасибо.
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу