Rating@Mail.ru

Форум по операционной системе GNU/Linux и свободному программному обеспечению


Текущее время: 19 июн 2018, 04:11

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Swift под Linux
Непрочитанное сообщениеДобавлено: 02 фев 2018, 16:40 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10806
Откуда: Харьков
Язык программирования Swift уже упоминался в форуме несколько раз:
производительность языков программирования
Цитата:
Swift — язык программирования от Apple.
В 2015г. Apple анонсировала Swift как открытый язык программирования (с открытым исходным кодом) и теперь Swift доступен на Linux.

Swift
Цитата:
Цитата:
Swift — это надёжный и интуитивно понятный язык программирования от Apple, при помощи которого можно создавать приложения для iOS, Mac, Apple TV и Apple Watch. Он предоставляет разработчикам небывалую свободу творчества. Благодаря этому простому и удобному языку с открытым кодом вам достаточно просто интересной идеи, чтобы создать нечто невероятное.

Смысл здесь (в разборках с языком Swift) в том, что ... многие программисты хотели бы осваивать iOS, но далеко не у всех есть под рукой iPad или iPhone. Под Linux можно а). разобраться с языком Swift и научиться ним пользоваться и, возможно, б). разрабатывать некоторые приложения под Apple оборудование.
Сам Swift, собственно, под Linux никакого смысла не имеет - IMHO ... но может кто-то в этом и видит смысл, которого я не вижу.


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Swift под Linux
Непрочитанное сообщениеДобавлено: 02 фев 2018, 16:43 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10806
Откуда: Харьков
Olej писал(а):
Смысл здесь (в разборках с языком Swift) в том, что ... многие программисты хотели бы осваивать iOS, но далеко не у всех есть под рукой iPad или iPhone. Под Linux можно а). разобраться с языком Swift и научиться ним пользоваться и, возможно, б). разрабатывать некоторые приложения под Apple оборудование.

К счастью (это сильно ускорит начало освоения) есть вот такой русскоязычный сайт с документацией по языку:
Изображение
Цитата:
Документация на сайте на Swift 3.0


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Swift под Linux
Непрочитанное сообщениеДобавлено: 03 фев 2018, 01:04 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10806
Откуда: Харьков
Берём здесь: Download Swift.
Там есть только:
Цитата:
Ubuntu 16.10 December 5, 2017
Ubuntu 16.04 December 5, 2017
Ubuntu 14.04 December 5, 2017

Но! Там не какие-то DEB-пакеты для установки, а архив от корня, то, как распространялись UNIX бинарные пакеты ... лет 20 назад.
Поэтому есть у меня подозрение, что это можно разархивировать с равным успехом (или неуспехом) в любом Linux.
Архивы не маленькие ... чутьпоболее 150Mb:
Код:
[olej@dell Langs]$ ls -l swift-4.0.3-RELEASE-ubuntu16.10.tar.gz
-rw-rw-r-- 1 olej olej 167162654 фев  2 23:58 swift-4.0.3-RELEASE-ubuntu16.10.tar.gz

Если это хозяйство разархивировать (как они пишут - в любое место), то будем иметь:
Код:
[olej@dell Langs]$ tree -L 2 swift-4.0.3-RELEASE-ubuntu16.10
swift-4.0.3-RELEASE-ubuntu16.10
└── usr
    ├── bin
    ├── include
    ├── lib
    ├── libexec
    ├── local
    └── share

7 directories, 0 files

Что и подсказывает, что это "архив от корня".


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Swift под Linux
Непрочитанное сообщениеДобавлено: 03 фев 2018, 11:00 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10806
Откуда: Харьков
Установка...
Как они пишут (раздел Linux пониже), для установки достаточно:

1. Проверить что установлены 2 пакета, требуемые по зависимостям:
Код:
olej@nvidia ~ $ apt search clang libicu-dev | grep 'i '
i   clang                                             - C, C++ and Objective-C compiler (LLVM based)               
i A clang-3.8                                         - C, C++ and Objective-C compiler (LLVM based)               
i A libclang-common-3.8-dev                           - clang library - Common development package                 
i A libclang1-3.8                                     - C interface to the clang library                           
i   libicu-dev                                        - Development files for International Components for Unicode

Или доустановить.

(пропускаю проверку GPG сигнатур!)

2. Разархивировать .tar.gz в любой каталог /path/to ...
Код:
[olej@dell ~]$ tree -L 2 swift-4.0.3-RELEASE-ubuntu16.04
swift-4.0.3-RELEASE-ubuntu16.04
└── usr
    ├── bin
    ├── include
    ├── lib
    ├── libexec
    ├── local
    └── share

7 directories, 0 files


3. Установить (можно в ~/.bashrc ... или командой в терминале) путь:
Цитата:
Код:
$ export PATH=/path/to/usr/bin:"${PATH}"


После чего:
Цитата:
You can now execute the swift command to run the REPL or build Swift projects.


P.S. На сегодня последней актуальной stable версией является 4.03. Обращайте внимание на версию, версии 2.Х, 3.Х, 4.Х - слабо совместимы.


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Swift под Linux
Непрочитанное сообщениеДобавлено: 03 фев 2018, 12:19 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10806
Откуда: Харьков
Olej писал(а):
После чего:
Цитата:
You can now execute the swift command to run the REPL or build Swift projects.

REPL - это их такая консольная IDE:
Цитата:
REPL (Read-Eval-Print-Loop)

В ней можно диалогово набирать код, выполнять, отлаживать...


Вложения:
r1.png
r1.png [ 93.82 КБ | Просмотров: 561 ]
Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Swift под Linux
Непрочитанное сообщениеДобавлено: 03 фев 2018, 12:36 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10806
Откуда: Харьков
Olej писал(а):
2. Разархивировать .tar.gz в любой каталог /path/to ...
Код:
[olej@dell ~]$ tree -L 2 swift-4.0.3-RELEASE-ubuntu16.04
swift-4.0.3-RELEASE-ubuntu16.04
└── usr
    ├── bin
    ├── include
    ├── lib
    ├── libexec
    ├── local
    └── share
 
7 directories, 0 files


3. Установить (можно в ~/.bashrc ... или командой в терминале) путь:

Есть другой вариант: как и требует UNIX "разархивирование от корня", из каталога в который разархивировали, копировать в корень файловой системы:
Код:
olej@nvidia ~/swift-4.0.3-RELEASE-ubuntu16.04 $ sudo cp usr /usr -R

Это лучше в смысле простоты использования (никаких переменных PATH, LD_LIBRARY_PATH, никаких несоответствия путей), но это хуже в смысле удаления.


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Swift под Linux
Непрочитанное сообщениеДобавлено: 03 фев 2018, 13:22 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10806
Откуда: Харьков
Olej писал(а):
В ней можно диалогово набирать код, выполнять, отлаживать...

Как можно видеть и из картинки, простейшее приложение на Swift может выглядеть так:
Код:
print( "Hello, world!" )

Вот его (файл hello.swift) и станем использовать в качестве тестового пробника.
Ещё одно приложение - вычисление чисел Фибоначчи, используемое и для сравнения скоростей выполнения:
Код:
func fibo( n: Int ) -> Int {
    if n < 2 {
        return 1
    }
    else {
        return fibo( n: n - 1 ) + fibo( n: n - 2 )
    }
}

if CommandLine.arguments.count < 2 {
    print( "Ups!" )
} else {
    let arg = CommandLine.arguments[ 1 ]
    let argstr: Int? = Int( arg )
    if argstr != nil {
       let argint: Int! = Int( arg )
       print( fibo( n: argint ) )
    }
    else {
       print( "Ups!" )
    }
}

Код:
olej@nvidia ~/2018_WORK/own.BOOKs/ManyLang/swift $ swift fibo_sw.swift
Ups!

Код:
olej@nvidia ~/2018_WORK/own.BOOKs/ManyLang/swift $ swift fibo_sw.swift 30
1346269


Вложения:
hello.swift [25 байт]
Скачиваний: 9
fibo_sw.swift [423 байт]
Скачиваний: 11
Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Swift под Linux
Непрочитанное сообщениеДобавлено: 03 фев 2018, 14:40 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10806
Откуда: Харьков
Ещё один способ проверять и исполнять код Swift - это онлайн ресурс
Изображение

Здесь, как видно, представлена версия Swift 3.0.1.


Вложения:
r2.png
r2.png [ 93.13 КБ | Просмотров: 561 ]
Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Swift под Linux
Непрочитанное сообщениеДобавлено: 03 фев 2018, 14:56 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10806
Откуда: Харьков
Olej писал(а):
Поэтому есть у меня подозрение, что это можно разархивировать с равным успехом (или неуспехом) в любом Linux.

Как оказалось, это не так...
Код:
[olej@dell ~]$ lsb_release -a
LSB Version:   :core-4.1-amd64:core-4.1-noarch
Distributor ID:   Fedora
Description:   Fedora release 25 (Twenty Five)
Release:   25
Codename:   TwentyFive

Код:
[olej@dell ~]$ swift --help
swift: error while loading shared libraries: libatomic.so.1: cannot open shared object file: No such file or directory

Это будет происходить после любого запуска swift с любыми ключами.
После установки:
Код:
[olej@dell speed.10]$ dnf provides '*/libatomic.so*'
Последняя проверка окончания срока действия метаданных: 13 days, 0:50:04 назад, Sat Jan 20 23:36:15 2018.
gcc-6.4.1-1.fc25.x86_64 : Various compilers (C, C++, Objective-C, Java, ...)
Источник: @System
gcc-6.4.1-1.fc25.i686 : Various compilers (C, C++, Objective-C, Java, ...)
Источник: updates
gcc-6.4.1-1.fc25.x86_64 : Various compilers (C, C++, Objective-C, Java, ...)
Источник: updates
libatomic-6.4.1-1.fc25.i686 : The GNU Atomic library
Источник: updates
libatomic-6.4.1-1.fc25.x86_64 : The GNU Atomic library
Источник: updates
gcc-6.2.1-2.fc25.i686 : Various compilers (C, C++, Objective-C, Java, ...)
Источник: fedora
gcc-6.2.1-2.fc25.x86_64 : Various compilers (C, C++, Objective-C, Java, ...)
Источник: fedora
libatomic-6.2.1-2.fc25.i686 : The GNU Atomic library
Источник: fedora
libatomic-6.2.1-2.fc25.x86_64 : The GNU Atomic library
Источник: fedora

Код:
[olej@dell speed.10]$ sudo dnf install libatomic
[sudo] пароль для olej:
Последняя проверка окончания срока действия метаданных: 1:18:17 назад, Sat Feb  3 00:00:36 2018.
Зависимости разрешены.
=========================================================================================================================
 Package                      Архитектура               Версия                          Репозиторий                Размер
=========================================================================================================================
Установка:
 libatomic                    x86_64                    6.4.1-1.fc25                    updates                     42 k

Результат операции
=========================================================================================================================
Установка  1 Пакет

Объем загрузки: 42 k
Объем изменений: 26 k
Продолжить? [д/Н]: y
Загрузка пакетов:
libatomic-6.4.1-1.fc25.x86_64.rpm                                                        186 kB/s |  42 kB     00:00   
-------------------------------------------------------------------------------------------------------------------------
Общий размер                                                                              37 kB/s |  42 kB     00:01     
Проверка транзакции
Проверка транзакции успешно завершена.
Идет проверка транзакции
Тест транзакции проведен успешно
Выполнение транзакции
  Установка    : libatomic-6.4.1-1.fc25.x86_64                                                                       1/1
  Проверка     : libatomic-6.4.1-1.fc25.x86_64                                                                       1/1

Установлено:
  libatomic.x86_64 6.4.1-1.fc25                                                                                         

Выполнено!

После этого:
Код:
[olej@dell ~]$ swift --help
swift: error while loading shared libraries: libedit.so.2: cannot open shared object file: No such file or directory

Теперь ему не хватает ещё одной библиотеки: libedit.so.2

Конечно, по опыту установки многих других проектов, можно последовательными приближениями установить все библиотеки, что ему надо...
Только это занудной занятие.
И это говорит о том, что обещанная реализация Swift for Linux собрана через задницу, "абы було" :evil:
Насколько хорошо Oracle, для сравнения, собирает установочные пакеты VirtualBox, под Linux, который для них тоже является не основной средой - настолько же здесь Apple делает это говённо!


Вернуться к началу
 Профиль Отправить личное сообщение  
 
 Заголовок сообщения: Re: Swift под Linux
Непрочитанное сообщениеДобавлено: 03 фев 2018, 15:29 
Не в сети
Писатель
Аватара пользователя

Зарегистрирован: 24 сен 2011, 14:22
Сообщения: 10806
Откуда: Харьков
Olej писал(а):
Вот его (файл hello.swift) и станем использовать в качестве тестового пробника.

Как показано на картинке, запускать любой файл .swift (после установки Swift, естественно) - так:
Код:
olej@nvidia ~/2018_WORK/own.BOOKs/ManyLang/swift $ swift hello.swift
Hello, world!

Но! к сожалению, компиляция в автономное приложение завершается с ошибкой:
Код:
olej@nvidia ~/2018_WORK/own.BOOKs/ManyLang/swift $ swiftc -v -ohello hello.swift
Swift version 4.0.3 (swift-4.0.3-RELEASE)
Target: x86_64-unknown-linux-gnu
/usr/local/bin/swift -frontend -c -primary-file hello.swift -target x86_64-unknown-linux-gnu -disable-objc-interop -color-diagnostics -module-name hello -o /tmp/hello-bbdefd.o
/usr/local/bin/swift-autolink-extract /tmp/hello-bbdefd.o -o /tmp/hello-d6a867.autolink
/usr/bin/clang++ -fuse-ld=gold -target x86_64-unknown-linux-gnu -Xlinker -rpath -Xlinker /usr/local/lib/swift/linux /usr/local/lib/swift/linux/x86_64/swift_begin.o /tmp/hello-bbdefd.o -L /usr/local/lib/swift/linux -lswiftCore --target=x86_64-unknown-linux-gnu @/tmp/hello-d6a867.autolink /usr/local/lib/swift/linux/x86_64/swift_end.o -o hello
/usr/bin/ld.gold: error: невозможно найти -lstdc++
clang: error: linker command failed with exit code 1 (use -v to see invocation)
<unknown>:0: error: link command failed with exit code 1 (use -v to see invocation)

Во-первых, это замечательно срабатывало в версиях Swift 2.X !
Во-вторых, это ошибка последней фазы компиляции - Clang++, и ld.gold не находит Clang библиотеки libstdc++.so - это стандартная библиотека C++, но не Clang, а GCC...
И далее ... проверяем:
Код:
olej@nvidia ~/2018_WORK/own.BOOKs/ManyLang/swift $ cat hello.cc
#include <iostream>
using namespace std;

int main( int argc, char **argv ) {
   cout << "Hello Clang!" << endl;
}

Код:
olej@nvidia ~/2018_WORK/own.BOOKs/ManyLang/swift $ clang++ -xc++ -stdlib=libstdc++ hello.cc -o hellocc
hello.cc:3:10: fatal error: 'iostream' file not found
#include <iostream>
         ^
1 error generated.

olej@nvidia ~/2018_WORK/own.BOOKs/ManyLang/swift $ clang++ -xc++ -stdlib=libc++ hello.cc -o hellocc

olej@nvidia ~/2018_WORK/own.BOOKs/ManyLang/swift $ ./hellocc
Hello Clang!

Clang не находит GCC библиотеку libstdc++, но находит свою библиотеку libc++.
Правда, это после того, как я установил раньше:
Код:
olej@nvidia ~/2018_WORK/own.BOOKs/ManyLang/swift $ apt install libc++-dev
Чтение списков пакетов… Готово
Построение дерева зависимостей
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
  libc++-helpers libc++1
НОВЫЕ пакеты, которые будут установлены:
  libc++-dev libc++-helpers libc++1
обновлено 0, установлено 3 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 786 kБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 6.881 kB.
Хотите продолжить? [Д/н] y
Пол:1 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 libc++1 amd64 3.7.0-1ubuntu0.1 [225 kB]
Пол:2 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 libc++-helpers all 3.7.0-1ubuntu0.1 [5.308 B]
Пол:3 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 libc++-dev amd64 3.7.0-1ubuntu0.1 [555 kB]
Получено 786 kБ за 0с (1.008 kБ/c)
Выбор ранее не выбранного пакета libc++1:amd64.
(Чтение базы данных … на данный момент установлено 673666 файлов и каталогов.)
Подготовка к распаковке …/libc++1_3.7.0-1ubuntu0.1_amd64.deb …
Распаковывается libc++1:amd64 (3.7.0-1ubuntu0.1) …
Выбор ранее не выбранного пакета libc++-helpers.
Подготовка к распаковке …/libc++-helpers_3.7.0-1ubuntu0.1_all.deb …
Распаковывается libc++-helpers (3.7.0-1ubuntu0.1) …
Выбор ранее не выбранного пакета libc++-dev:amd64.
Подготовка к распаковке …/libc++-dev_3.7.0-1ubuntu0.1_amd64.deb …
Распаковывается libc++-dev:amd64 (3.7.0-1ubuntu0.1) …
Обрабатываются триггеры для libc-bin (2.23-0ubuntu10) …
Настраивается пакет libc++1:amd64 (3.7.0-1ubuntu0.1) …
Настраивается пакет libc++-helpers (3.7.0-1ubuntu0.1) …
Настраивается пакет libc++-dev:amd64 (3.7.0-1ubuntu0.1) …
Обрабатываются триггеры для libc-bin (2.23-0ubuntu10) …


Вернуться к началу
 Профиль Отправить личное сообщение  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
[ Time : 0.160s | 20 Queries | GZIP : On ]