Здравствуйте, гость ( Вход | Регистрация )

 
Reply to this topicStart new topic
Linux-ABI для FoxPro, Запуск SCO-шных бинарников FoxPro в Linux
Xray_Linux_Root
сообщение 19 Jun 2007, 15:31
Сообщение #1


Advanced Member
***

Группа: Members
Сообщений: 280
Регистрация: 25.11.2004
Из: Russia
Пользователь №: 50



Надо всего навсего подготовить рабочий сервак (на базе ASPLinux 11.2 или Fedora) для запуска FoxPro (того что для SCO Unix был). В общем-то задачка простая, если бы не это "бы".

Пройдясь поиском по всемогущему интернету нашёл в общем-то всё необходимое:
1. http://foxpopuli.narod.ru/ix/readfpu.htm - статейка для старта
2. http://linux-abi.sourceforge.net/ - страничка проекта
3. http://ace-host.stuart.id.au/russell/files...patch-linuxabi/ - набор патчей для более свежих ядер (за основу взял 2.6.17 с kernel.org)
4. ядро пропатчил, нужные опции включил (в ядро [*]), но на выходе получаю слово в слово как тут: http://ubuntuforums.org/showthread.php?t=4...1&highlight=abi
CODE

CC [M] fs/binfmt_coff.o
fs/binfmt_coff.c: In function ‘coff_load_object’:
fs/binfmt_coff.c:569: warning: implicit declaration of function ‘__set_mm_counter’
fs/binfmt_coff.c:569: error: ‘file_rss’ undeclared (first use in this function)
fs/binfmt_coff.c:569: error: (Each undeclared identifier is reported only once
fs/binfmt_coff.c:569: error: for each function it appears in.)

что значит: implicit declaration of function ‘__set_mm_counter’ - неявное объявление функции ‘__set_mm_counter’ я представления не имею smile.gif т.к. знаю из "языков программирования" только bash. Но догадываюсь что ‘__set_mm_counter’ просто нигде не описано.... и пройдясь поиском по всему каталогу с исходниками ядра убедился в этом, найдя только ‘set_mm_counter’. И естественно произвёл замену ‘__set_mm_counter’ на ‘set_mm_counter’ в этом файлике binfmt_coff.c (т.к. откопал подобное тут: http://www.mail-archive.com/pld-cvs-commit...g/msg02233.html ).
5. О чудо! Оно собралось.
6. Пускаю бинарник [user@lnxserver ~]$ /usr/local/foxpro/foxpro.pr
А чудес больше не происходит..... в консоли наблюдаю только чёрный экран и не более, тогда по alt+f2 переключаюсь во вторую консоль и запускаю top. Так вот обнаруживается что процесс foxpro.pr откусил 99,9% CPU......
Здесь описаны абсолютно все произведённые манипуляции от начала наложения патча до запуска самого приложения, т.е. доп. подготовка никакая больше не велась ни до ни после.

Так вот, вопрос к гурманам по связке FoxPro+Linux где я что-то упустил или что-то не так сделал?

З.Ы. Под руками имеется сервак на сборной солянке из mandrake+debian на который сборщики гордо повесили российский бренд, на нём FoxPro пашет....


--------------------
ASPLinux, Slackware, RedHat, Fedora, Debian
Зачем M$ Exchange? Есть eGroupware!
-j MASQUERADE + друзья в других сетях помогут построить мир независимо от желания Томтела ;)
Go to the top of the page
 
+Quote Post
Xray_Linux_Root
сообщение 20 Jun 2007, 11:18
Сообщение #2


Advanced Member
***

Группа: Members
Сообщений: 280
Регистрация: 25.11.2004
Из: Russia
Пользователь №: 50



Мдя......
Снова сам с собой общаюсь smile.gif

Короче идём сюда http://sourceforge.net/project/showfiles.php?group_id=13130 и берём ibcs-3_3.tgz, делаем всё как написано в приложенной инструкции и будет вам счастье biggrin.gif

А чтобы в логи всякая хрень не писалась, при выполнении бинарников, можно наложить вот этот патчик:
CODE

diff -Naur orig/sco/ioctl.c new/sco/ioctl.c
--- orig/sco/ioctl.c    2007-02-27 22:02:00.000000000 +0600
+++ new/sco/ioctl.c    2007-06-20 10:55:21.000000000 +0700
@@ -163,9 +163,6 @@
    class_str[2] = class & 0x0000FF ? (char)((class      ) & 0xFF) : '.';
    class_str[3] = 0;

-    printk(KERN_DEBUG "sco: ioctl(%d, %lx[%s], 0x%p) unsupported\n",
-        fd, ioctl_num, class_str, arg);
-
    return -EINVAL;
}

diff -Naur orig/sco/tapeio.c new/sco/tapeio.c
--- orig/sco/tapeio.c    2007-02-27 22:02:00.000000000 +0600
+++ new/sco/tapeio.c    2007-06-20 10:55:31.000000000 +0700
@@ -100,8 +100,6 @@
    case 64:  /* MT_REPORT */
#endif
    default:
-        printk (KERN_ERR "abi: SCO tape ioctl func=%d arg=%x unsupported\n",
-            cmd & 0xff, (int)data);
        return -EINVAL;
    }

diff -Naur orig/sco/vtkbd.c new/sco/vtkbd.c
--- orig/sco/vtkbd.c    2007-02-27 22:02:00.000000000 +0600
+++ new/sco/vtkbd.c    2007-06-20 10:55:13.000000000 +0700
@@ -85,6 +85,5 @@
        }
        /* FALLTHROUGH */
    }
-    printk(KERN_ERR "%s: vtkd ioctl 0x%02x unsupported\n", __FILE__, cmd);
    return -EINVAL;
}


З.Ы. Причём пашет даже с текущим ядром версии 2.6.21.5


--------------------
ASPLinux, Slackware, RedHat, Fedora, Debian
Зачем M$ Exchange? Есть eGroupware!
-j MASQUERADE + друзья в других сетях помогут построить мир независимо от желания Томтела ;)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 9.2.2010, 23:59