“Педантичні” ключі GCC

Статичний аналіз

Цікавився питаннями статичного аналізу програмного коду програм на С/С++.

Статичний аналіз програмного коду – аналіз коду програмного забезпечення, що відбувається без реального запуску програм, що досліджуються (інакше, такий аналіз називається динамічним).

Здоровий глузд і здорова логіка підказує “Якщо такі є, то чого б не використовувати доступні засоби не виходячи за межі середовища програмування?!”

Читати далі

HOWTO: Як скомпілювати динамічні бібліотеки MySQL для Qt 4.8

Параметри системи, на якій все відбувається:

  • Windows 7, x64
  • Qt 4.8.4
  • MinGW 4.4

За замовчуванням, в Qt драйвери для роботи з базою даних MySQL відсутні. Щоб переконатися в цьому можна виконати наступний код:

QStringList driverList;
driverList = QSqlDatabase::drivers();
if (!driverList.contains("QMYSQL", Qt::CaseInsensitive))
{
    qDebug() << "No QMYSQL support! Check all needed dll-files!";
} else {
    qDebug() << "QMYSQL support is avaiable.";
}

Для того, щоб зібрати необхідну для роботи бібліотеку, потрібно мати вихідні коди Qt та вихідні коди MySQL (при встановленні обох поставити галочки “Встановлювати вихідні коди”). Для Qt вихідні коди будуть знаходитися в каталозі ...\Qt\4.8.4\src\ (конкретно, нас цікавить підкаталог \src\plugins\sqldrivers\mysql\), а для MySQL те що нам потрібно — ...\MySQL\MySQL Server 5.5\include\. Ці шляхи шляхи в мене в системі були c:\Program Files (x86)\MySQL\MySQL Server 5.5\include\ (C:\PROGRA~2\MySQL\MYSQLS~1.5) та d:\Qt\4.8.4\src\plugins\sqldrivers\mysql\.

Для автоматизації збірки бібліотек, пропоную використати скрипт (.bat-файл):

set mysql=C:\PROGRA~2\MySQL\MYSQLS~1.5
cd d:\Qt\4.8.4\src\plugins\sqldrivers\mysql\
qmake "INCLUDEPATH+=%mysql%\include" "LIBS+=%mysql%\lib\libmysql.lib" 
-o Makefile mysql.pro "CONFIG+=release"
c:\MinGW\bin\mingw32-make.exe
pause

В якому c:\MinGW\bin\mingw32-make.exe — шлях до вашого mingw32-make.exe.

В результаті успішного виконання скрипта, в каталозі d:\Qt\4.8.4\src\plugins\sqldrivers\mysql\release\ з’явиться файл qsqlmysql4.dll.

Увага. Файл qsqlmysql4.dll (а також, за необхідності qsqlmysqld4.dll) та libmysql.dll (з каталогу MySQL\MySQL Server 5.5\lib\) потрібно скопіювати в папку з Qt — Qt\4.8.4\plugins\sqldrivers\ і надалі розповсюджувати з програмою, де використовується доступ до баз даних MySQL.

[EN] HOWTO: Compile Shark Machine Learning Library on Windows using MinGW, CMake

Shark Machine Learning Library (http://shark-project.sourceforge.net/) is a modular C++ library for the design and optimization of adaptive systems. It provides methods for linear and nonlinear optimization, in particular evolutionary and gradient-based algorithms, kernel-based learning algorithms and neural networks, and various other machine learning techniques. SHARK serves as a toolbox to support real world applications as well as research in different domains of computational intelligence and machine learning. The sources are compatible with the following platforms: Windows, Solaris, MacOS X, and Linux.

You can get source here: http://sourceforge.net/projects/shark-project/files/ or thru SVN from here: http://sourceforge.net/projects/shark-project/develop.

Here http://shark-project.sourceforge.net/GettingStarted.html you can read how to compile Shark library, but installing and compiling Shark on Windows systems is not so clear for typical users.

So, to compile, you must have installed this software:

Latest MinGW (http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/).
Latest CMake (http://www.cmake.org/cmake/resources/software.html).

When you unpack Shark sources, go to Shark root directory, and create file script.bat:

mkdir <path-to-build-dir>
cd <path-to-build-dir>
<path-to-CMake-bin>\cmake.exe -G"MinGW Makefiles" <path-to-Shark-sources>
<path-to-mingw-bin>\mingw32-make.exe

For example, I unpacked Shark sources to d:\PROJECTS\NEURAL\Shark\, and there I created such script file:

mkdir d:\PROJECTS\NEURAL\Shark_bin
cd d:\PROJECTS\NEURAL\Shark_bin
"d:\WORKSHOP\CMake 2.8\bin\cmake.exe" -G"MinGW Makefiles" d:\PROJECTS\NEURAL\Shark\
"c:\MinGW\bin\mingw32-make.exe"

Example of using Shark with Qt. In .pro file add:

SHARKHOME = "d:/PROJECTS/NEURAL/Shark/"
CONFIG  = qt console
INCLUDEPATH = $${SHARKHOME}/include
win32{
   LIBS = -L$${SHARKHOME}/lib/ -lshark
}
...

That’s all!