On-line: tnsr2, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 316
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.08.07 21:54. Заголовок: Как переделать прогу под Linux


Всем привет, а админам особо.
Предлагаю открыть отдельую рубрику "переход под Linux"
В связи с гонениями за ворованный Виндовс нужно переползать под Linux.

Пытался запустить терминалку xHarbour'a под эмулятором на Ubuntu Linux и на Linux-XP и 2-облома:
1) кракозябы заместо букв (866-кодировка в терминале)
2) не может открыть файлы, т.к. заместо путей типа c:\nMyProg\ - там другой "слеш" ?/Home/.....

Кто делал что-то под Linux'om - поделитесь опытом.
А то и не знаешь с чего начать, Крестин вообще не отвечает.

Спасибо: 0 
Профиль
Ответов - 9 [только новые]


Администратор




Пост N: 581
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.08.07 15:59. Заголовок: Re:


Я в прошлом году собирал свои программы под Линукс, но ввиду отсутсвия спроса на них дальше тестовой сборки дело не пошло

1.

#ifdef __HARBOUR__
REQUEST HB_CODEPAGE_RU866
REQUEST HB_LANG_RU866
#ifndef __PLATFORM__Windows
REQUEST HB_CODEPAGE_RU1251
REQUEST HB_CODEPAGE_RUKOI8
#endif
#endif

#ifndef __PLATFORM__Windows
hb_SetTermCP( 'RU1251', 'RU866', .t. )
или
hb_SetTermCP( 'RUKOI8', 'RU866', .t. )
в зависимости от того, на какую кодовую страницу настроен терминал
#endif

2. Надо определить макрос
#ifndef __HARBOUR__

#define __PATH_DELIM__ '\'

#else

#ifdef __PLATFORM__Windows
#define __PATH_DELIM__ '\'
#else
#define __PATH_DELIM__ '/'
#endif

#endif

и в программах вместо слеша использовать его в именах каталогов

Спасибо: 0 
Профиль
Администратор




Пост N: 582
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 08.08.07 16:20. Заголовок: Re:


уточняю - делал native linux без всяких эмуляторов
скачал готовый xHb-linux и собирал свои программы под него

Спасибо: 0 
Профиль
постоянный участник




Пост N: 318
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.08.07 20:45. Заголовок: Re:


Pasha пишет:

 цитата:
уточняю - делал native linux без всяких эмуляторов
скачал готовый xHb-linux и собирал свои программы под него


А какой xHb-linux, т.е. под какую систему ? И как собирать ?

У меня в терминале используется 866 кодовая страница. А в Linux'e его нет и как добавить не знаю.

Спасибо: 0 
Профиль
Администратор




Пост N: 583
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 09.08.07 09:40. Заголовок: Re:


Версий линукса очень много, выбирай сам какой ставить
Я ставил ASP Linux - RedHat compatible

Далее скачиваешь с xharbour.org бинарники в виде rpm для соответствующей версии - сам харбор, contrib - всего 3 пакета, уже точно не помню какие
Устанавливаешь их:
rpm -i <пакет>

Затем собираешь свой софт
Для сборки простого теста нужен батник: bld.sh

#!/bin/sh

INC_DIR="-I../include:/usr/include"
MY_EXE=$1
shift
MY_FILES="$*"
MY_LIBS="-L./ -L/usr/lib -lgd -lpng -lz -ljpeg -lfreetype -lm -lct"
MY_GTLIB="-gtcrs"

if [ -z ${MY_FILES} ]; then
MY_FILES=${MY_EXE};
fi

echo "Exe = ${MY_EXE}, Files = ${MY_FILES}"

echo "xhbcmp -n -w -es2 -go ${INC_DIR} ${MY_FILES}"
xhbcmp -n -w -es2 -go -I${INC_DIR} ${MY_FILES}
xhbcmp -n -w -es2 -go -I${INC_DIR} screen3.prg


echo "xhblnk ${MY_GTLIB} *.o ${MY_LIBS} -o${MY_EXE}"
xhblnk ${MY_GTLIB} *.o libserv.a ${MY_LIBS} -o${MY_EXE} >_err

rm -f *.o

Обрати внимание, что используется терминал gtcrs

Пока все, попробуй собрать хотя бы "Hello, world"

Andrey пишет:

 цитата:
У меня в терминале используется 866 кодовая страница. А в Linux'e его нет и как добавить не знаю



Для этого как раз и нужна команда:

hb_SetTermCP( 'RUKOI8', 'RU866', .t. )


Спасибо: 0 
Профиль
Администратор




Пост N: 586
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 10.08.07 10:20. Заголовок: Re:


Я исчезну из эфира на пару недель

Спасибо: 0 
Профиль



Пост N: 38
Зарегистрирован: 15.11.05
ссылка на сообщение  Отправлено: 15.08.07 08:06. Заголовок: Re:


На HARBOUR-е не пробовал.

>Пытался запустить терминалку xHarbour'a под эмулятором на Ubuntu Linux и на Linux-XP и 2-облома:
>1) кракозябы заместо букв (866-кодировка в терминале)
>2) не может открыть файлы, т.к. заместо путей типа c:\nMyProg\ - там другой "слеш" ?/Home/.....

А вот на Clip (www.itk.ru) все работает (50 текстовых терминалов) - и 866 кодировка и расширенная клава, и "слеш" переделывать не нужно и буквы дисков работают...

>Кто делал что-то под Linux'om - поделитесь опытом.
>А то и не знаешь с чего начать, Крестин вообще не отвечает.

Так что для Кпипа помогу...


Спасибо: 0 
Профиль
постоянный участник




Пост N: 320
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.08.07 11:26. Заголовок: Re:


Спасибо большое за помощь, но от Клипера уже ушел.
На хХарборе надежней будет, несмотря на некоторую "тормознутость".
А пересобрать под Linux тоже интересно.

А что за версию Linux - используете ?

Спасибо: 0 
Профиль



Пост N: 39
Зарегистрирован: 15.11.05
ссылка на сообщение  Отправлено: 16.08.07 12:01. Заголовок: Re:


Andrey пишет:

 цитата:
Спасибо большое за помощь, но от Клипера уже ушел.



Это не Клиппер, а Клип. Это другая ветка, отличная от Хабора. Со своими плюсами и минусами.


 цитата:
На хХарборе надежней будет, несмотря на некоторую "тормознутость".



На Кпипе очень надежно, если задачу запусить под терминалы (что у меня и работает).
Хотя терминал текстовый, скорости обработки большие.


 цитата:
А пересобрать под Linux тоже интересно.


Клип ориентирован в основном под *nux, в Винде под CigWin.
А для пересбоки, нужно поставить Клип, сделать Маке, что-то подправить...


 цитата:
А что за версию Linux - используете ?



Дебиан. Хотя это не принципиально.


Спасибо: 0 
Профиль
постоянный участник


Пост N: 218
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 07.09.07 17:35. Заголовок: Re:


lista пишет:

 цитата:
А вот на Clip (www.itk.ru) все работает (50 текстовых терминалов) - и 866 кодировка и расширенная клава, и "слеш" переделывать не нужно и буквы дисков работают...



Для [x]Harbour "слеш" переделывать вовсе не обязательно.

SET DIRSEPARATOR "\"
SET DIRSEPARATOR "/"
еще для портирования предусмотрены SET DIRCASE, SET FILECASE

Жесткое задание путей доступа типа c:\nMyProg\, что в Windows, что в Linux - IMHO bad idea.
Путь должен быть или относительный или

SET MY_PATH = c:\nMyProg
..
cFileName = GetEnv("MY_PATH") + "\file.name"

В Linux создать переменную окружения, насколько я знаю, тоже не проблема.











Спасибо: 0 
Профиль
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 17
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет