суббота, 21 декабря 2013 г.

Шпаргалка по сборке gcc

Оставлю тут шпаргалку по сборке gcc из транка:

$ # скачаем исходники
$ svn checkout svn://gcc.gnu.org/svn/gcc/trunk gcc
$ cd gcc
$ # соберём компилятор
$ mkdir obj bin
$ cd obj
$ ../configure
$ make -j2
$ make DESTDIR=/anywhere/gcc/bin/ install
$ # а теперь пересоберём его самим собой, но с уже интересующими нас опциями
$ make clean
$ rm * -rf
$ ../configure CC="
/anywhere/gcc/bin/usr/local/bin/gcc" CXX="/anywhere/gcc/bin/usr/local/bin/g++" CFLAGS="$CFLAGS -O3" CXXFLAGS="$CXXFLAGS -O3" LIBS="-L/anywhere/gcc/bin/usr/local/libs $LIBS"
$ make -j2
$ make DESTDIR=
/anywhere/gcc/bin_opt/ install

понедельник, 18 ноября 2013 г.

Установка Gentoo на шифрованный раздел

Решил поэкспериментировать с шифрованием разделов в gentoo. Т.к. не нашлось готовых мануалов, по которым бы всё сразу завелось пришлось долго гуглить и ходить по граблям. В посте будет полное описание данного процесса. Нет, не неуклюжего хождения по граблям, а готового решения, которое сработало на моём ноутбуке.

пятница, 1 ноября 2013 г.

Ошибка в комментарии

На старых фронтэндах был простой способ получить ошибку в плохо написанном комментарии. Связано это с триграфами. Сам столкнулся с такой на старой версии edg - фронтэнда, который используется в компиляторе intel.

$ cat test.c

/**
 * ??!
 */

int main(){}


$ lcc_i test.c
lcc: "test.c", line 2: error: support for trigraphs is disabled
          [-Werror=trigraphs]
   * ??!
     ^

1 error detected in the compilation of "test.c".


Подробней о проблемах с триграфами можно почитать на вики. Тут интересен вопрос "а почему вообще возникает такая проблема?". Фишка кроется в стандарте, раздел 5.1.1.2 Translation phases. Грубо говоря препроцессирование делится на 6 стадий. При этом триграфы разворачиваются на первой стадии, а комментарии удаляются только на 3-ей.

На современных компиляторах такой проблемы замечено не было.

воскресенье, 6 октября 2013 г.

Если octave при запуске выдаёт такое:
On entry to octave parameter number 13 had an illegal value
то скорей всего он был собран с ключом -ffast-math. Эта опция допольно деструктивная, включается только руками или по -Ofast. Придётся для конкретно этого пакета (у меня он называется sci-mathematics/octave) включать -fno-fast-math.

вторник, 1 октября 2013 г.

LLVM vs. GCC

Кто круче Шварценеггер или Сталлоне GCC или LLVM? Этот вопрос уже давно мучает многих людей на форумах. На эту тему можно много рассуждать, рассматривая с разных сторон. Но существуют относительно объективные критерии оценки.

среда, 25 сентября 2013 г.

Сделал сводную таблицу по доходам депутатов московской городской думы. Хотелось бы поделиться ощущениями. Нет, не от доходов (от них ощущений тоже много, но данный блог не для этого), а от создания таблиц в latex.

пятница, 20 сентября 2013 г.

Будни компиляторщика

Сравнение двух CFG функции "до" и "после"
CFG до применения фазы оптимизации













CFG после применения фазы оптимизации













Обычно такие бяки генерируются flex'ом

среда, 31 июля 2013 г.

Анонимный нулевой bit-field

Встретил в Си забавную конструкцию:

struct A
{
    int :0;
};


Здесь присутствует очень забавная вещь - анонимное битовое поле нулевого размера. После преодоления шока от увиденного полез разбираться.

среда, 10 июля 2013 г.

суббота, 29 июня 2013 г.

iso646.h

Наткнулся на забавный заголовочный файл в стандарте Си - iso646.h. В нём логические и битовые операции определены символами:

#define and    &&
#define and_eq    &=
#define bitand    &
#define bitor    |
#define compl    ~
#define not    !
#define not_eq    !=
#define or    ||
#define or_eq    |=
#define xor    ^
#define xor_eq    ^=
Википедия утверждает, что это нужно для не querty клавиатур, на которых сложно печатать по-человечески.  Правда непонятно, используется ли это где-то на практике - на гитхабе все результаты - какие-то тестовые модули.

вторник, 4 июня 2013 г.

Перевод обзорной статьи про Saturn

К сожалению у меня последнее время не хватает времени на написание статей для бложика, но буду стараться его выцарапать. А пока что ловите перевод статьи про статический анализатор C - Saturn. Мне он нужен был только для экзамена по английскому, но пару комментариев я здесь оставлю.

Оригинал и перевод здесь.

пятница, 25 января 2013 г.

Ещё один time

Внезапно узнал, что есть две утилиты time. Одна стандартная, которая показывает время, затраченное процессом на выполнение. Другая - ГНУтая, которая имеет ряд плюшек.

суббота, 19 января 2013 г.

Продолжаю щупать OCaml

Теперь решил написать простенькую программу на OCaml, провести замеры и сравнить с аналогичной программой на плюсах.

воскресенье, 6 января 2013 г.

Arduino

Появился у меня Arduino. Очень хорошая штука для тех, кто ни в зуб ногой в железках, т.е. для таких как я. И что особенно приятно - SDK запускается но генте почти без лишних проблем. Вся информация ниже доступна на первой странице гугла.