Author Topic: Linux-ABI для FoxPro  (Read 4175 times)

0 Members and 1 Guest are viewing this topic.

Offline Xray_Linux_Root

  • Sr. Member
  • ****
  • Posts: 296
  • Karma: +2/-0
Linux-ABI для FoxPro
« on: June 19, 2007, 16:31:47 »
Надо всего навсего подготовить рабочий сервак (на базе 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: [Select]
    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’ я представления не имею  т.к. знаю из "языков программирования" только 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 пашет....
« Last Edit: June 19, 2007, 17:15:08 by Xray_Linux_Root »
Mandrake, ASPLinux, Slackware, RedHat, Fedora, Debian
Зачем M$ Exchange? Есть eGroupware!
-j MASQUERADE + друзья в других сетях помогут построить мир независимо от желания вашего провайдера ;)

Offline Xray_Linux_Root

  • Sr. Member
  • ****
  • Posts: 296
  • Karma: +2/-0
Linux-ABI для FoxPro
« Reply #1 on: June 20, 2007, 12:18:17 »
Мдя......
Снова сам с собой общаюсь

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

А чтобы в логи всякая хрень не писалась, при выполнении бинарников, можно наложить вот этот патчик:
Code: [Select]
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
« Last Edit: June 20, 2007, 12:25:52 by Xray_Linux_Root »
Mandrake, ASPLinux, Slackware, RedHat, Fedora, Debian
Зачем M$ Exchange? Есть eGroupware!
-j MASQUERADE + друзья в других сетях помогут построить мир независимо от желания вашего провайдера ;)