LINUX.ORG.RU

Сообщения zanac1

 
Новости — Разработка

Вышла сборка GCC 15.2.0 для Symbian

Группа Разработка

В комплекте идут Binutils 2.29.1 и GDB 10.2. Для желающих собрать самим – использовать скрипты в архиве GCC4Symbian.zip(проверено на Devuan). Для Windows выложена готовая сборка.

Качать на sourceforge.

 , ,

zanac1
()
Новости — Разработка

Вышла сборка GNU toolchain c GCC 14.2.0 для Symbian

Группа Разработка

После долгого и тяжелого труда вышла сборка GCC 14.2.0 в которой были исправлены ошибки сборки и добавлен ряд улучшений. В состав также вошли Binutils 2.29.1 и GDB 10.2.

Для Windows доступна в виде исполняемых файлов, для сборки на Linux-системах прилагается bash-сценарий.

Улучшения:

  • поддержка C++11 и новее в SDK;
  • по умолчанию определен макрос используемый для Symbian: __SYMBIAN32__;
  • полная поддержка common predefined macros в GCC;
  • не экспортируется operator delete ( void* ptr, std::size_t sz ) noexcept;.

Для поддержки современных стандартов C++ в папке fixed_headers находятся два заголовочных файла: gcce.h и e32cmn.h. Первый подходит ко всем SDK на базе Symbian 9, второй совместим лишь с несколькими SDK и исходниками Symbian 3. Для установки следует использовать install_headers.py

Макрос __SYMBIAN32__ предназначен для изоляции кода предназначенного для Symbian. По умолчанию задается системой сборки SDK или через прараметры компилятора если используется другая система сборки. Теперь будет немного легче тем, кто использует другие системы сборки.

«The common predefined macros are GNU C extensions» ©GCC мануал – предоставлен полный набор макросов для типов фиксированного размера.

Исправления:

  • ошибка сборки GCC «crtfastmath.o не найден»;
  • таки собрался freestanding libstdc++;
  • таки собрался GDB.

Начиная с 5 версии, GCC собирался только при помощи make -k, без оного начинал требовать crtfastmath.o, и на этом сборка заканчивалась. Это при том, что этот файл не компилируется для SOFTFP (в этом режиме программе все равно – FPU реальный или эмулиремый!). С указанным ключом собиралось все, кроме freestanding libstdc++ и GDB.

Качать здесь.

>>> Подробности

 , ,

zanac1
()
Форум — Linux-org-ru

Отвалилась тёмная тема в Opera mobile 10

Захожу время от времени с любимой нокии 5800 посмотреть на лор - а тут засада. Всё белое.

Upd: в предыдущий раз заходил с нокии в конце прошлого года, тёмная тема была.

 

zanac1
()
Форум — Development

Дикий жор памяти при сборке кросскомпилятора

Собираю кросскомпилятор arm-gcc с make -j6.

В первый выжрал все 8 гиг рамы и превед адские тормоза. Думал чутка памяти не хватает - добавил 10 гигов свопа - выжрало все и не подавилось, превед адские тормоза.

Как сию похабщину исправить?

Ось - Devuan chimera x64. Ничего не ковырял, обнов не ставил. В сабже нуб.

Раньше собирал под msys - был свой цирк с конями, но память не жрало как не в себя.

 , , ,

zanac1
()
Форум — Linux-install

Как задать свой путь к squashfs.img из папки LiveOS

В общем купил SSD, фирменная утилита для него либо под 10 либо в сборке с live Fedora.

Записал на флешку live Fedora, для загрузки использую syslinux. Грузится, утилита вроде работает.

Хочу поставить рядом Void linux. По умолчанию и Fedora и Void linux ищут squashfs.img в папке LiveOS в корне флешки.

Как задать свой путь по умолчанию к squashfs.img? Ну или другое имя поиска.

 , , ,

zanac1
()
Форум — General

Sylpheed удалил всю почту

Как восстановить почту? Чем проще, тем лучше. Локальный кэш остался.

Причина удаления - по-умолчанию в настройках стояло удалять старую почту.

 

zanac1
()
Форум — Development

Как убрать прямое обращение к переменной в шаблоном классе.

Есть в библиотеке такой класс, TAutoClose, освобождающий ресурсы своего члена класса, вызывая его метод Close(), при выходе из области видимости. При этом глаза мозолит использование iObj:

TAutoClose<RApaLsSession> cmd;
cmd.iObj.Connect();
cmd.iObj.Send();

Хочу так:

cmd.Connect();
cmd.Send();

Добавил реализацию оператора &(видел подобный фокус с оператором '*' для умных указателей), всё равно компилятор говорит, что не видит функции:

T& operator&() {
return iObj;}

Вот общий вид этой группы классов: TAutoClose освобождает ресурсы группы классов вида:

class RExample:
{
   int handle;
public:
   void Close() {}
}

И сам класс:

template <class T>
class TAutoClose
/**
@publishedAll

Automatically calls Close() on an object when that object goes out of scope.
The behaviour takes advantage of the fact that the compiler automatically
destroys objects that go out of scope.
*/
    {
public:
    inline ~TAutoClose();
private:
    static void Close(TAny *aObj);
public:
    /**
    An instance of the template class.
    */
    T iObj;
    };

// Class TAutoClose
template <class T>
inline TAutoClose<T>::~TAutoClose()
/**
Destructor.
The implementation calls Close() on iObj, the instance of the template class.
*/
    {iObj.Close();}
 
template <class T>
void TAutoClose<T>::Close(TAny *aObj)
    {((T *)aObj)->Close();}

 

zanac1
()
Форум — Development

В скрипте функции выполняются не по очереди, а вразнобой.

Функции в скрипте python выполняются в произвольном порядке. Я ожидаю, что функции выполняются друг за другом. Сам скрипт - это набор функций.

Вся логика находится в файле ‘init.py’(знаки подчеркивания в начале и конце имени файла режет парсер сайта).

Среди них две функции(модули piper и build_apps) запускают многопоточную сборку друг за другом, может из-за этого проблемы.

Исходный код - GitHub.

Ожидаемый лог:

  • Engine *.mmp done!(собираются статические библиотеки)
  • Target ScummVM?.mmp done!(собираются exe)
  • pkg: *.pkg(собираются установочные файлы)

Лог сборки:

Queue size: 92  
Thread count: 6
Queue size: 8
Thread count: 6
pkg: Neverhood.pkg
pkg: Neverhood_cmdline.pkg
Target ScummVM5.mmp done!
Target Neverhoode.mmp done!
 Target ScummVM1.mmp done!
Engine access.mmp done!
Engine adl.mmp done!Engine agi.mmp done!

Engine avalanche.mmp done!
Target ScummVM6.mmp done!
Target ScummVM2.mmp done!
Target ScummVM3.mmp done!
Engine buried.mmp done!
Target ScummVM7.mmp done!
Engine asylum.mmp done!
Target ScummVM4.mmp done!
Engine cge.mmp done!
Engine cge2.mmp done!
Engine chewy.mmp done!
Engine composer.mmp done!
Engine cine.mmp done!
Engine cryo.mmp done!
Далее много «Engine *.mmp done!»

Чяднт? P.S. Python 2.

 ,

zanac1
()
Форум — Development

В скрипте несколько вызовов datetime.now() выдает одинаковое время

Хочу использовать модуль питона в логах. Урезаная версия:

from datetime import datetime

print "Datetime: %s"  %datetime.now()
print "Hello world!"
print "Datetime: %s"  %datetime.now()

Выхлоп:

Datetime: 2021-06-20 22:21:39.796000
Hello world!
Datetime: 2021-06-20 22:21:39.796000

Вместо хелловорда поставьте тяжелую задачу, сборка буста например. Чяднт?

 

zanac1
()
Форум — Development

Ищу спецов умеющих в плагины для Eclipse

Я, автор релизов ScummVM для Symbian, прошу помочь перенести плагины к Eclipse с поддержкой Symbian на новое ядро. Исходный код — github.com/SymbianSource/oss.FCL.sftools.dev.ide.carbidecpp и github.com/SymbianSource/oss.FCL.sftools.dev.eclipseenv.carbideui. И справка SDK не подключается, тоже нужно починить.

 , ,

zanac1
()
Новости — Разработка

Сайт mingw.org недоступен более месяца

Группа Разработка

Сайт проекта недоступен более месяца, на главной висит заглушка.

Цель данного проекта – сборка нативных программ для Windows с помощью свободного программного обеспечения, в частности порта gcc, binutils и gdb, а также порта bash. Эту нелегкую ношу свободного ПО во мраке проприетарщины они несли свыше десяти лет. Новый проект, который взял на себя их задачи – Mingw-w64. По какой-то причине на сайте Mingw-w64 кривой сертификат.

>>> Подробности

 , ,

zanac1
()
Новости — Open Source

Вышла тестовая сборка ScummVM 2.2.0 для Symbian

Группа Open Source

ScummVM — это программа, позволяющая запускать некоторые классические адвенчуры и квесты при наличии у вас файлов данных от этих игр. Суть в том, что ScummVM заменяет исполняемые файлы игры, тем самым позволяя играть на тех системах, которые даже не существовали во время их создания!

ScummVM поддерживает более 250 квестов и адвенчур. Поддерживаются многие классические квесты, изданные такими легендарными студиями, как LucasArts, Sierra On-Line, Revolution Software, Cyan, Inc. и Westwood Studios. Вместе с такими знаменитыми играми, как Monkey Island, Broken Sword, Myst, Blade Runner и многими другими, вы сможете отыскать малоизвестные адвенчуры и по-настоящему скрытые шедевры. (Взято с сайта scummvm.org)

В силу ограниченного объема оперативной памяти устройств монолитный исполняемый файл был разбит на 4 части. Гарантированно запускается сам ScummVM , запуск игр не гарантирован кроме Blade Runner и Ultima 8. Эту версию можно ставить паралелльно уже установленной, она не заменит уже установленную. Автор будет признателен за тестирование и отзыв что работает или не работает.

Качать отсюда - https://sourceforge.net/projects/scummvms60git/

 , ,

zanac1
()
Форум — Development

Как правильно инициализировать список(std::list) объектов «на лету»?

Создаётся список(std::list) объектов с нетривиальным конструктором «на лету», элемент за элементом. Как их правильно инициализировать?

 

zanac1
()
Форум — Development

Как заполнить буфер используя поля струтуры

В памяти создается пустой массив uint32_t для структуры:

struct Elf32_HashTable
{
  uint32_t nBuckets;
  uint32_t nChains;
  uint32_t bucket[nBuckets];
  uint32_t chain[nChains];
};

Размер массива вычисляется по формуле uint32_t sz = 2 + iNSymbols + iNSymbols/3 + iNSymbols%0x3;, где nBuckets = iNSymbols/3 + iNSymbols%0x3;.

Как можно заполнить поля bucket и chain без дополнительный указателей, причем заполняться будут в случайном порядке?

Можно заполнять через указатели pBucket = &buf[x], но хочется минимализма...

 

zanac1
()
Форум — Development

При обращении по указателю программа падает

Программа работает с буфером готовых данных char*. Используется две структуры:

struct Buffer
{
  uint32_t bufsize;
  Bufdata* data;
}

struct Bufdata
{
  uint32_t datasize;
  const uint32_t* data;
}

Код:

Buffer* buf = (Buffer*)rawDataAsCharArray;
Bufdata* bdata = buf->data;
printf(bdata->datasize); //упс, упало
Если в Buffer убрать поле Bufdata* data и сделать так, то все норм:
Bufdata* bdata = (Bufdata*)(rawDataAsCharArray+sizeof(Buffer) );
printf(bdata->datasize); //ок
Компилятор - GCC 5.3.0 Чядн?

 ,

zanac1
()
Форум — Talks

Вышел порт для линукса утилиты elf2e32

elf2e32 создает бинарные файлы для Symbian из elf.

Преимущества этой утилиты над аналогами:

  • кроссплатформенность;
  • код распространяется под Eclipse Public License;
  • стабильность.

Минус:

  • итоговый размер файла на ~15% больше, чем у аналогов из-за ошибки расчета размера бинарного файла.

Ссылка

Перемещено Shaman007 из development

 , ,

zanac1
()
Форум — Development

Самодельный пасер на С++ : не удаляет комментарии

Написал программу которая должна удалять комментарии в файле исходного кода С++. Условия: // /* и */ не будут содержаться в самих комментариях, строках и символьных константах. Проблемы: '*/' сохраняется в файл. Код:

#include <iostream>
#include <fstream>

using namespace std;

const char *filename = "commandLine.h";
const char *filename2 = "commandLine_out.h";

int main()
{
    ifstream in(filename, ios_base::in);
    if(!in.is_open())
        std::cout << "Input file not found!" << std::endl;

    ofstream out(filename2);
    if(!out.is_open())
        std::cout << "Output file not found!" << std::endl;

    string line;

    bool inComment = false;
    bool afterComment = false;
    int i = 0;

    while(getline(in, line))
    {
        i++;
        line.append("\n");
//        std::cout << inComment << std::endl;

        if(afterComment == true)
        {
//            inComment = false;
            afterComment = false;
        }

        if(line.find("//")!=std::string::npos)
            inComment = true;

        if(line.find("/*")!=std::string::npos)
            inComment = true;
        if(line.find("*/")!=std::string::npos)
            inComment = false;
            afterComment = true;
        std::cout << i << " : " << inComment << "-" << afterComment <&lt; std::endl;
        if((inComment == false)&&(afterComment == true))
        {
            out << line;
        }
    }

    out.close();
    in.close();
    cout << "Hello world!" << endl;
    return 0;
}

 

zanac1
()
Форум — Development

FFMPEG : не собирается под MSYS

Решил собрать FFMPEG под Symbian. Цель - получить набор статических библиотек : compat, libavcodec, libavfilter, libavformat, libavresample ,libavutil, libpostproc, libswresample, libswscale.

Окружение : WinXP64 sp2, GCCE 4.4.1 от Codesourcery для Symbian, MinGW 4.8.1, Msys

Что сделано : взял с вики ffmpeg сборочный скрипт для Rasberry и доработал:

./configure --enable-cross-compile --cross-prefix=arm-none-symbianelf- --enable-static \
 --disable-shared --arch=arm --target-os=symbian --cc=arm-none-symbianelf-gcc \
 --enable-armv6t2 --cpu=armv6t2 --disable-mmx --incdir=epoc32\include\ffmpeg \
 --disable-runtime-cpudetect --enable-gray --disable-programs --disable-doc \
 --enable-rpath --disable-avdevice --enable-gpl --enable-nonfree \
 --prefix=$EPOCROOT --sysinclude=/d/Symbian/S60_5th_Edition_SDK_v1.0/epoc32/include

В configure есть поддержка Symbian, был получен config.h и config.mak s активированными ассемблерными файлами под armv6t2.

    symbian)
        SLIBSUF=".lib"
        enable dos_paths
        add_cflags --include=$sysinclude/gcce/gcce.h -fvisibility=default --include=$sysinclude/symcpp.h
        add_cppflags -D__GCCE__ -D__SYMBIAN32__ -DSYMBIAN_OE_POSIX_SIGNALS
        ;;

Проблемы: 1) Autoconf нашел лишь часть функций libc, например пропустил всё в math.h. Лог на http://pastebin.com/adatjSkB

2) при сборке в MSYS:

$ make
CC      libavfilter/aeval.o
In file included from libavfilter/aeval.c:26:
./libavutil/avassert.h:30: fatal error: stdlib.h: No such file or directory
compilation terminated.
make: *** [libavfilter/aeval.o] Error 1

ЧЯДНТ?

 , , , ,

zanac1
()
Форум — Development

GCC не видит хедеры библиотеки С

Пытаюсь собрать libflac под Msys. на команду :

CFLAGS=-O1 configure -mcpu=armv5t --with-ogg-includes=«$EPOCROOT\epoc32\include\tremor» --includedir=$EPOCROOT/epoc32/include/libc --host=arm-none-symbianelf --prefix=$EPOCROOT/epoc32 -includes=$EPOCROOT\epoc32\include\tremor получаю :

checking for ANSI C header files... no checking for sys/types.h... no checking for sys/stat.h... no checking for stdlib.h... no checking for string.h... no checking for memory.h... no checking for strings.h... no checking for inttypes.h... no checking for stdint.h... no checking for unistd.h... no

Нужно получить статическую библиотеку

 , , ,

zanac1
()

RSS подписка на новые темы