суббота, 10 октября 2015 г.

Oracle JDK в Linux

#!/bin/bash
#----------------------------------------
JDK_VER=jdk-8u60
JDK_DISTR_NAME=jdk1.8.0_60
JDK_DISTR=$JDK_VER-linux-x64
TEMP_DIR=/home/username/downloads
DISTR_LINK=http://download.oracle.com/otn-pub/java/jdk/8u60-b27/$JDK_DISTR.tar.gz
#----------------------------------------

echo "Downloading a package of $JDK_DISTR..."
wget -O $TEMP_DIR/$JDK_DISTR.tar.gz $DISTR_LINK &&
echo "Done!"

JDK_DIR=/usr/lib/jdk
echo "Creating directory $JDK_DIR..."
mkdir $JDK_DIR &&
echo "Done!"

echo "Unpacking..."
tar -zxvf $TEMP_DIR/$JDK_DISTR.tar.gz -C /usr/lib/jdk &&
rm -rf $TEMP_DIR/$JDK_DISTR.tar.gz &&
echo "Done!"

echo "Updating alternatives..."
update-alternatives --install /usr/bin/javac javac $JDK_DIR/$JDK_DISTR_NAME/bin/javac 1
update-alternatives --install /usr/bin/java java $JDK_DIR/$JDK_DISTR_NAME/bin/java 1
update-alternatives --install /usr/bin/javaws javaws $JDK_DIR/$JDK_DISTR_NAME/bin/javaws 1
echo "Done!"

echo 'Test output:'
ls -la /etc/alternatives/{java,javac,javaws}

Или из репозиториев:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
add-apt-repository ppa:upubuntu-com/java

sudo update-alternatives --config java

среда, 2 сентября 2015 г.

Деплой простого C++/Qt приложения с виджетами на Windows

Собирал QtCreator + MinGW. Приложение содержало пару кнопочек и таймер. Сразу было понятно, что нужны используемые модули Qt:
  1. Qt5Core.dll
  2. Qt5Gui.dll
  3. Qt5Widgets.dll
Винда шутку не оценила, порекомендовала поискать еще рантайм GCC и libstd++
  1. libgcc_s_dw2-1.dll
  2. libstdc++-6.dll
В ответ на это ругалось ошибкой пикрелейтед ("Ошибка при запуске приложений (0x000007b). Для выхода из приложения нажмите кнопку "ОК" "). Гугл посылал куда-то в сторону windeployqt.exe, который помог чуть меньше, чем никак.
Удалось обнаружить недостающую dll-ку следующим способом: взял в руки Process Explorer из sysinternals, нашел процесс программы, запущенной (успешно) из QtCreator, нажать Ctrl+D (посмотреть загруженные DLL для процесса), отсортировать по Path и найти библиотеки, относящиеся к "C:/Qt/5.5/...". Недостающим звеном оказалась библиотека libwinpthread-1.dll (для POSIX threads под MS Windows).
Итого список модулей дистрибутива брутто:
  1. %YOUR_APP_NAME%.exe
  2. Qt5Core.dll
  3. Qt5Gui.dll
  4. Qt5Widgets.dll
  5. libgcc_s_dw2-1.dll
  6. libstdc++-6.dll
  7. libwinpthread-1.dll

пятница, 3 апреля 2015 г.

Изменение размера памяти виртуальной машины VirtualBox

Маленький скрипт для изменения размера *.vdi-образа виртуальной машины в Oracle VirtualBox. Текст нужно скопировать в текстовый файл с расширением *.bat и запустить. Права администратора не требуются.

Прим.: Скрипт предполагает умолчательное состояние путей к VirtualBox, расположении проекта виртуальной машины и то, что пользователь не переименовывался.

@echo off
set VM_NAME=
set VM_HDD_NAME=
set NEW_SIZE=
set VDI_PATH=
set VBOX_PATH=

rem -------- [Configuration] --------------

set /p VM_NAME="Virtual machine name:"
set /p VM_HDD_NAME="Virtual machine storage device (HDD) name [as VM name]: "
set /p NEW_SIZE="Set new size in GB: "
set VDI_PATH=C:\Users\%USERNAME%\VirtualBox\ VMs\%VM_NAME%
set VBOX_PATH=C:\Program Files\Oracle\VirtualBox

rem -------- [/Configuration] -------------

if "%VM_HDD_NAME%"=="" set VM_HDD_NAME=%VM_NAME%
set /A NEW_SIZE=%NEW_SIZE%*1024

"%VBOX_PATH%\VBoxManage" modifyhd "%VDI_PATH%\%VM_HDD_NAME%.vdi" --resize %NEW_SIZE%
pause

Такую неособо нужную штуку бывает полезно написать, чтобы понять, насколько ужасна консоль в Windows =)

воскресенье, 4 января 2015 г.

Скрещивание Qt (+QtCtreator IDE) с компилятором MS Visual Studio 2012 (ver 11.0)

Ох, много седых волос прибавилось за этот долгий день. Итак, самым главным откровением оказалось то, что студия 2012 года является версией 11.0. Необходимо установить Windows SDK (советую отказаться от документации - сэкономит около 2,5Гб при установке с онлайновым инсталлятором). Далее необходимо установить переменные окружения. Пусть студия находится по адресу C:\Program Files (x86)\Microsoft Visual Studio 11.0, а Qt - C:\Qt\5.4

MSVS11ROOT="C:\Program Files (x86)\Microsoft Visual Studio 11.0"
INCLUDE="%MSVS11ROOT%\VC\include\;C:\Program Files (x86)\Windows Kits\8.0\Include\um"
LIB="%MSVS11ROOT%\VC\lib;C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x86;"
LIBPATH="%MSVS11ROOT%\VC\lib\"
QTDIR="C:\Qt\5.4"
QMAKESPEC="win32-msvc2012"
PATH="...;C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE;C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin;C:\Qt\Tools\mingw491_32\bin;C:\Qt\5.4\msvc2012_opengl\lib;C:\Program Files (x86)\Windows Kits\8.1\bin\x86"

Когда компилятор ругался крокозябрами на то, что не нашел тулы для сборки (всякие cl.exe, mt.exe), необходимо соответствующий путь добавлять в переменную Path. Ошибка с необнаруживаемым заголовочником stddef.h относится к переменной INCLUDE.

Переменные окружения можно делать и пользовательскими, главное - не забывать перезагружаться/перелогиниться в системе после каждого изменения в переменных!