Архив метки: Linux

Как установить текущую дерикторию для Cygwin?

Любители работать в консоли, подобной консоли линукса, могут установить себе Cygwin, юникс подобную среду, где будут доступны стандартные консольные программы из линукса.

Ставится Cygwin довольно просто. В процессе установки в одном из режимов можно выставить флажки напротив программных пакетов, которые вы хотите установить. Я выбрал себе пакеты nano, git и что-то ещё.

После инсталляции на рабочем столе появляется ярлычок Cygwin для запуска среды.

 

Запуск Cygwin из любой папки

Так как я пользуюсь TotalCommander-ом, мне удобно запускать программы сразу из нужной мне директории. Создадим удобный bat-файл для запуска Cygwin.

Сразу, без долгих размышлений, копируем строку «Объект» из свойства этого ярлыка в новый созданный нами файл C:binbash.bat
Полное содержимое файла будет выглядеть так:

@start "" C:cygwinbinmintty.exe -i /Cygwin-Terminal.ico -

Обратите внимание на то, что путь до exe-файла у вас может быть другим. У себя я установил Cygwin в директорию C:cygwin.
Также если директория C:bin у вас ещё не добавлена в переменную окружения PATH, то это следует сделать.

 

Настройка запуска Cygwin

После некоторой работы с Cygwin я обнаружил, что не смотря на то, что запускать Cygwin я могу из любой директории, просто прописав слово bash, сама же запускаемая среда всегда открывается в домашней директории вашего пользователя. (Домашняя директория установлена в переменной окружения HOME).

Это выглядит не очень удобно, ведь если я пишу команду bash, находясь в директории D:xyz, то я и рассчитываю, что запущенный Cygwin также будет находиться в директории D:xyz.

Если вы обратите внимание, то увидите, что ярлык с рабочего стола запускает утилиту mintty.exe. Мы сразу понимаем, что необходимо ознакомиться с перечнем входящих атрибутов для данной команды.
Открываем Cygwin и вводим

man mintty

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

Открываем наш bat-файл и изменяем его содержимое на следующее:

@start "" C:cygwinbinmintty.exe -i /Cygwin-Terminal.ico --size 120,77 --position -4,0 -

В данном случае я установил нужный мне размер окна Cygwin и позицию появления окна (отрицательное значение -4 нужно, чтобы кромка окна оказалась за границей монитора, и её не было видно).

Теперь моё окно будет всегда появляться в удобных мне координатах, а не будет смещаться при каждом новом запуске на +8 пикселей по x,y.

Но как же быть с директорией запуска Cygwin?

Ведь переходить в нужную директорию из домашней — жутко не удобно!

Решение было найдено! Для установки текущей директории при запуске Cygwin мы можем использовать скрипт автозапуска для запускаемой среды bash.

Значит нам нужно усовершенствовать наш bash.bat файл таким образом, чтобы он создавал файл автозапуска для запускаемой консоли bash

Запускаем Cygwin, вводим команду «man bash» и читаем документацию в поисках необходимого нам. Находим несколько вариантов имён файлов для домашней директории пользователя, который запускаются при авторизации в bash.
Файлы, запускаемые при авторизации в bash:

~/.bash_profile
~/.bash_login
~/.profile

Файл, запускаемый при запуске «bash без авторизации в нём

~/.bashrc

Важное замечание: файл автозапуска ~/.bash_login (или любой другой) должен быть написан в кодировке UTF-8! И не должен использовать символы r. (Например команда pwd у меня не выполнялась, когда файл содержал в конце символ r, свойственный системе Windows).

Как оказалось, вывести UTF-8 текст из CMD не так-то просто, но возможно!
Вот пример, как это делается:

cmd /u /c chcp 65001 | echo некий текст >"имя_файла"

Усовершенствуем наш C:binbash.bat файл, теперь он имеет содержимое:

@echo off
SET file=.bash_login
cmd /u /c chcp 65001 | echo #!/bin/bash > "%HOME%%file%"
cmd /u /c chcp 65001 | echo cd "%CD:=/%" >> "%HOME%%file%"
@start "" C:cygwinbinmintty.exe -i /Cygwin-Terminal.ico --size 120,77 --position -4,0 -

После запуска, консоль bash выполняет содержимое файла ~/.bash_login. Этот файл должен быть в формате UTF-8. Для этого мы вызываем CMD cо флагом /u, который сообщает, что запускаемая консоль должна возвращать результат в формате UTF-8.

Далее в этой же строке после флага мы передаём команду. К
стати, флаг означает, что после выполнения переданной команды, консоль закрывается.

Как можно увидеть, мы передаём две команды, разделённых знаком |. Данный знако позволяет записать две нужных нам команды в одну строку.

Первая команда chcp 65001 устанавливает кодировку UTF-8 в запущенной консоли. (Чтобы узнать, какая текущая кодировка установлена в консоли, достаточно вызвать команду chcp без параметров.)

Вторая команда echo текст > «%HOME%%file%» печатает соответствующий текст в файл с именем «%HOME%%file%«, где имена переменных развёртываются в путь к домашней директории и имени файла .bash_login.

Обратите внимание на необычное обращение к переменной CD, в которой содержится текущий каталог cmd-консоли. Если обычно переменная развёртывается записью

%CD%

То в нашем случае, мы используем запись

%CD:=/%

Что позволяет сразу заменить все слеши в стиле Windows на слеши в стиле Linux / .

Не забываем помещать все имена файлов и директорий в двойные кавычки, таким образом это позволит попадать в директории содержащие пробелы.

За счёт того, что используется UTF-8, данная конструкция успешно позволяет открывать Cygwin в директориях с русскими именами.

Таким образом, при каждом запуске в консоли команды bash, будет запускаться скрипт C:binbash.bat, который перезаписывает файл автозагрузки среды bash в Cygwin. Теперь мы можем легко и удобно запускать консоль bash из любой директории и сразу попадать в эту же самую директорию в bash-консоли.

Радуемся и наслаждаемся результатом!

 

Подведём итоги

  1. Мы установили Cygwin
  2. Создали файл C:binbash.bat с содержимым
        @echo off
        SET file=.bash_login
        cmd /u /c chcp 65001 | echo #!/bin/bash > "%HOME%%file%"
        cmd /u /c chcp 65001 | echo cd "%CD:=/%" >> "%HOME%%file%"
        @start "" C:cygwinbinmintty.exe -i /Cygwin-Terminal.ico --size 120,77 --position -4,0 -

    (Заметка: путь C:bin должен содержаться в переменной окружения PATH)
    За счёт этого мы добились:

    • запуска терминала Cygwin в указанной позиции экрана (параметр —position)
    • запуска окна определённого размера (параметр —size)
    • запуска Cygwin из любой директории, набрав в консоли слово bash
    • при этом запущенный Cygwin располагается в той же директории, откуда был запущен!

Автор: galiego710

Справочники команд Линукс

Автор: r1za
Дата публикации: 2012-01-09T12:00:00.000-08:00

Скомпилировать программу С++ под линукс G++ компилятором


Как компилировать под линукс?
Как скомпилировать программу под линукс?
Как компилировать в линуксе?

Ответ далее.

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

#include 
#include
using namespace std;

int main()
{
cout << "Hello World!;" << endl;
getchar();
return 0;
}

Думал, курить буду долго. Ан нет, через 15 минут задача решилась.

Для тех, кто мало знаком с программированием, объясняю в общих словах.
Программа — это инструкции для операционной системы.
Есть операционные системы Linux и Windows (и другие).
Программа может быть написана на любом языке, мы написали её на С++.

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

Инструкции (или команды) для ОС Windows и Linux — отличаются. Существуют компиляторы, компилирующие программу для Linux и есть компилирующие для Windows (для других ОС тоже есть).

Есть много компиляторов как для Linux (gcc, g++), так и для Windows (MinGW, Visual C++, Borland)

(P.S. Признаю, здесь я смешал понятие «компилятор» с «средой разработки», в которой пишется программа и из которой сразу же может быть вызван компилятор для сборки программы).

Приступаем к действиям
Предполагаю, что мы уже имеем:
VirtualBox с установленной Kubunta 10.04 STL (32bit);

Перемещаемся в консоль и пишем:

# устанавливаем компилятор g++ для С++
sudo aptitude install g++

# перемещаемся в директорию с вашим файлом программы main.cpp
# и компилируем программу командой
g++ main.cpp -o myprog

# после этого создаётся исполняемый файл myprog, ура!
# запустить файл мы можем командой
./myprog

Синтаксис запуска компилятора:

# g++ имя_файла_с_кодом -o имя_выходной_программы
# Более подробно можно прочитать по команде
g++ --help

Чтобы создать файл main.cpp можно использовать одну из следующих команд:

vi main.cpp
nano main.cpp

Чтобы установить g++, можно использовать одну из команд:

sudo apt-get install g++
sudo aptitude install g++

Решение было найдено с использованием ресурсов:
http://ru.wikipedia.org/wiki/G%2B%2B
http://www.linuxcenter.ru/lib/books/linuxdev/linuxdev4.phtml

Автор: galiego710

linux: fedora 16 64 yum защищённые версии multilib

В бете федоры 16 x86_64 при попытке вытянуть через yum зависимости для i686 пишет что-то типа:

Ошибка: Защищённые версии multilib ….

Решается включением репозитория updates-testing:

yum install пакет.i686 --enablerepo=updates-testing

Автор: Дмитрий

fdisk — Partition table entries are not in disk order, или восстанавливаем порядок разделов

Иногда может случиться так, что порядок разделов в таблице разделов меняется. Таким образом, что раздел (партиция) с номером x+2 оказывается физически между разделом x и x+1. Например, так, как это показано ниже: Читать

Введение в прикладное программирование под GNU/Linux

Это конспект, который я готовил для доклада на конференции, проводившейся местным университетом совместно с нашей LUG. Доклад «для самых маленьких», так что профессионалам просьба не жаловаться на поверхностность и обзорность.

Аудитория

Эта статья расчитана на два вида читателей. Во-первых, это люди, имеющие опыт программирования под MS Windows, но не имеющие такого опыта под GNU/Linux. Во-вторых, это люди, не имеющие опыта программирования вовсе. Однако, я предполагаю, что читатель в общем знаком с общепринятой в программировании терминологией, и ему не нужно объяснять, например, что такое «программа», «функция», «компилятор» или «отладка».

Средства разработки

Я буду рассматривать разработку с использованием тех средств, которые являются наиболее «родными» для GNU/Linux. К ним относятся:

  • Язык программирования C

  • Командная оболочка bash

  • Текстовые редакторы Vim и Emacs

  • Компилятор GCC

  • Отладчик GDB

  • Утилита для сборки проекта GNU make

  • Система управления версиями Git

  • Оконная система X11

Выбор именно этих средств не является догмой. Каждое из выше перечисленных средств может быть при желании заменено на другое. Однако, обычно под фразами наподобие «среда разработки Linux» понимается именно этот набор инструментов.

Языки программирования

Наиболее «родным» языком программирования для GNU/Linux является C. Это обусловлено следующими факторами:

  • GNU/Linux заимствует многие идеи (практически, идеологию) операционной системы UNIX;

  • Операционная система UNIX была написана на языке C (собственно, этот язык создавался именно для написания этой ОС);

  • Соответственно, ядро Linux и системное окружение GNU написаны тоже на C.

Ниже я буду рассматривать разработку с использованием языка C. Однако, этот выбор не является догмой. Другими популярными при разработке под GNU/Linux языками являются C++, Python, Perl. Конечно, могут использоваться и любые другие языки.

Среда разработки

В течение последних двух десятилетий очень широкое распространение получили т.н. IDE — интегрированные среды разработки. Такая среда включает в себя текстовый редактор, компилятор, отладчик, средства сборки проекта и мн.др. Такие среды есть и под GNU/Linux (наиболее популярны Eclipse, NetBeans, IDEA, KDevelop, Anjuta). Однако, история разработки под UNIX-подобные системы показывает, что IDE не являются не только единственным, но и наиболее эффективным средством разработки. Практически, правильный ответ на вопрос «какая самая лучшая IDE под GNU/Linux» — это «GNU/Linux это и есть IDE».

Часто можно встретить мнение, что большой проект без IDE разрабатывать невозможно. Это мнение легко опровергается. Первые версии UNIX писались даже не в Vim (его тогда ещё не было), а в Ed. Это так называемый «построчный» текстовый редактор, в котором вы можете редактировать за раз только одну строку текста. Весь файл на экране не отображается. В случае с UNIX по-другому и быть не могло — у разработчиков не было никаких экранов, а общение с системой осуществлялось при помощи телетайпов. Современное ядро Linux пишется в основном в редакторах Emacs и Vim.

Многие утилиты UNIX вызывают «текстовый редактор по умолчанию». Команда, запускающая текстовый редактор по умолчанию, берётся из переменной окружения $EDITOR. Некоторые утилиты смотрят сначала в переменную $VISUAL, и, лишь если она не установлена, в переменную $EDITOR. Это исторически сложившееся поведение: к старым компьютерам зачастую не было подключено никакого дисплея, а только телетайп, поэтому запускать экранный (визуальный) редактор смысла не было. В современных дистрибутивах обычно по умолчанию оказывается EDITOR=vi или EDITOR=nano. Указать использование другого редактора для одной команды можно так:

EDITOR=emacs some-command

Чтобы использовать нужный редактор по умолчанию всегда, нужно добавить в файл ~/.profile строчку типа

export EDITOR=emacs

Исторически сложилось так, ч