Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 19 мар 2024, 12:17

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




Начать новую тему Ответить на тему  [ Сообщений: 28 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
СообщениеДобавлено: 17 янв 2018, 20:18 
Не в сети

Сообщения: 146
Немного подумав, я нашёл более простой способ получить динамическую библиотеку, возникший в качестве побочного эффекта.
Вместо
Код: "OBERON"
  1. vostok $ mkdir result/Hello-с
  2. vostok $ result/o7c to-c Hello result/Hello-с -infr . -m test/source
  3. vostok $ cc -fPIC result/Hello-с/*.c singularity/implementation/*.c -Iresult/Hello-с -Isingularity/implementation -lm -shared -o result/libHello.so
Можно использовать такую команду:
Код: "BASH"
vostok $ result/o7c to-bin "Hello.Go;" result/libHello.so -infr . -m test/source -t result/Hello-c -cc "cc -shared -fPIC"
В остальном всё так же, кроме непринципиальных вещей. Ключевая особенность в ";" после команды Hello.Go, из-за которой транслятор o7c воспринимает её как скрипт и поэтому генерирует файл script.c, который использует Hello как библиотеку, открывая её функции для переиспользования из конечного файла libHello.so.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 21 янв 2018, 08:45 
Не в сети
Администратор
Аватара пользователя

Сообщения: 86
Видимо, я что-то не понимаю в этой жизни))
Код: "OBERON"
  1. Hello.Come
  2. exit status 1
  3. Can not found or open file of module
  4.  
  5. Found errors in the module Hello:
  6.  
  7. 1) -54 Imported module not found 3 : 12


Получить бинарник из консоли тоже не смог) Непосредственное исполнение команд -- не дышит.

После копирования кучи файлов в одно место:
Код: "OBERON"
  1. d:\coding\vostok-master\result\self>o7c to-bin Hello Hello -infr .. -m . > out.txt
  2. C:/Users/User/AppData/Local/Temp/o7c-Hello/CFiles.c:6: error: include file 'o7.h' not found

Фактически под вин10 сборка пытается проводиться не в каталоге o7c-Hello, а o7\Hello0056677F345.
Т.е. каждый раз каталог новый и как туда подложить o7.h -- что-то у меня фантазия не срабатывает))

_________________
Действия профессионала предсказуемы. Но в мире полно любителей!


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 21 янв 2018, 13:41 
Не в сети

Сообщения: 146
Я не тестирую в Windows, потому что её у меня нет. Вместо неё я использую WINE и, видимо, проявляются нестыковки между OS и Not Emulator.

С другой стороны, странно, что не собирается двоичный исполняемый файл, потому что make.cmd сам использует эту возможность:
Код: "BASH"
 > result\o7c.exe to-bin Translator.Start result\self\o7c.exe -infr . -m source -cc %CC%
Что вне использования сценария можно оформить как:
Код: "BASH"
 > result\o7c.exe to-bin Translator.Start result\o7c-2.exe -infr . -m source -cc tcc
Так тоже не собирается?

В любом случае, копировать всё в один каталог не нужно - это только увеличит хаос, а нужно починить сборку.

Уточните, пожалуйста, куда был положен модуль Hello.mod, и какой командой его пытались собирать.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 21 янв 2018, 20:22 
Не в сети
Администратор
Аватара пользователя

Сообщения: 86
Я и не собирался копировать всё в один каталог изначально. Просто решил, что надо добиться хоть какого-нибудь положительного результата.
То, что творит вин10, мягко скажем так -- меня сильно удивляет, вплоть до произношения различных междометий за которые в приличном обществе начинают смотреть немного странно.

1. Я пробовал собрать код по получившейся команде Ивана. Не получается. Точнее, начинает получаться с криками то этого нет, то другого. Компиль (самосборка), исходный файл, либа Out -- всё лежит рядом.

2. Сервер собрал в LiteIDE, 6 метров, жирная зверюга, в-общем, всё как положено. Единственно, поменял привелегированный порт в коде (80) на 8000. Я так понимаю, это совсем не критично (впрочем, просьба поменять в репе). Компиль лежит рядом, исходник в браузере висит. Пытался играть с путями -- что вышло привёл выше.

Прям хоть вынь бросай, и бубунту ставь. Но нельзя. Знакомые часто просят по удалёнке посмотреть, что происходит, а то и просто по телефону. Бывает, и по работе приходится ноут использовать. Разве что, рядом поселить. Со всеми вытекающими рисками.

_________________
Действия профессионала предсказуемы. Но в мире полно любителей!


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 21 янв 2018, 21:09 
Не в сети

Сообщения: 146
1. Иван собирал, находясь в каталоге result, куда он, также, положил файл Hello.mod.
В его случае был задействован компилятор Си по умолчанию - "cc -g -O1".
Если сделать всё также Windows, в которой установлен только tcc, то нужно вызвать такую команду:
Код: "BASH"
o7c to-bin Hello Hello.exe -infr .. -m . -cc tcc
Я думал о том, чтобы сделать поиск нужного компилятора, но пока не дошли руки, и его надо указывать вручную. Также, можно сделать копию tcc.exe - cc.exe, тогда можно не указывать параметр -сс в простейших случаях.

2. Запуск сервера из Windows я даже не предусматривал. Разумеется он будет большим - там статически скомпонован полноценный сервер.

Раз Windows 10, то должна быть возможность нормально запускать приложения GNU/Linux. Стоит попробовать.


Обновление: добавил параметр -m .


Последний раз редактировалось Comdiv 21 янв 2018, 21:30, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 21 янв 2018, 21:17 
Не в сети
Администратор
Аватара пользователя

Сообщения: 86
Код: "OBERON"
  1. D:\coding\vostok-master\result>o7c to-bin Hello Hello.exe -infr .. -cc tcc
  2. Can not found or open file of module

Увы и ах. Что-то не прёт седня))
Да, линь-подсистему я поставил, сделал вид что поставил Бубунту и Дебиан -- как работать не понял от слова совсем. Баш открывается, что там показывает, иксы работать не хотят, виртуальные машины пробовал две -- ни одна не хочет образы поднимать. Да и с играми под вин10 тоже как-то не очень гладко. Вроде всё хорошо, фейлов каких-то явных нет, но всё как-то без огонька))

_________________
Действия профессионала предсказуемы. Но в мире полно любителей!


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 21 янв 2018, 21:28 
Не в сети

Сообщения: 146
Я забыл добавить путь для поиска модуля Hello. Если он лежит всё в том же каталоге result, то его поиск будет осуществлён при использовании параметра
Код: "OBERON"
Вся команда будет выглядеть так:
Код: "BASH"
o7c to-bin Hello Hello.exe -m .  -infr .. -cc tcc


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 21 янв 2018, 21:34 
Не в сети
Администратор
Аватара пользователя

Сообщения: 86
Код: "OBERON"
  1. o7c to-bin Hello Hello.exe -m . -infr .. -cc tcc

А вот это работает!)) В консольке собралось))
Если исходник сохранять в cp1251, то даже способен в консоль вывести русский текст)

_________________
Действия профессионала предсказуемы. Но в мире полно любителей!


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

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


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

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


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

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
© VEDAsoft Oberon Club