Как заставить tcopy в 32-разрядной системе копировать с ленты на диск файл более 2Gb?
В общем, поскольку не программирую уже больше 10 лет, трудно понять что именно надобно сотворить.
В исходнике tcopy http://src.opensolaris.org/source/xr.../tcopy/tcopy.c нет тех функций, к примеру D_FILE_OFFSET_BITS, которые требуют отредактировать в этих документах http://www.gnu.org/software/coreutil...ined-data-type http://www.sun.com/software/whitepap...largefiles.pdf И вообще не смотря на то, что проблема типа стара, я не нашёл ни в одном форуме или блоге, чтобы хоть кто-то описывал, что решил эту проблему. Я думаю за эти годы уже саму tcopy можно было переделать 300 раз. В общем-то хочется понять что же требуется? - либо отредактировать функции как для 64-разрядной системы, но ссылки оставить на 32-разрядные библиотеки; - либо наоборот отредактировать оставить функции, но ссылки сделать на 64-разрядные библиотеки и установить эти бибилиотеки; Потому что если редактировать всё, то не проще ли взять и скопировать tcopy из 64-разрядной системы? Заранее благодарен! Пните в нужном направлении, а то ваще туплю. |
Как я понимаю, проблема в sys/types.h или его аналога
Цитата:
|
Да, всё получилось!
В исходнике поменял в двух местах open() на open64() и откомпилировал: gcc -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 tcopy2.c -o tcopy2 И на CentOS 5.2. и на Solaris 8 всё откомпилировалось без ошибок. Но долго не удавалось проверить - не было доступа к ленточным устройствам. Сегодня получил доступ на Solaris 8 и удалось скопировать с ленты на диск 10-гигабайтный файл. Правда он всё равно что-то в конце гадостливое сказал на прощание: file 1: records 223462 to 223463: size 512 file 1: records 223464 to 223523: size 64512 file 1: record 223524: size 52992 file 1: record 223525: size 4 file 1: record 223526: size 512 file 1: records 223527 to 223529: size 64512 file 1: record 223530: size 49824 file 1: record 223531: size 4 file 1: records 223532 to 223635: size 512 file 1: eof after 223635 records: 10195176924 bytes Write EOF: Inappropriate ioctl for device |
Время: 05:12. |
Время: 05:12.
© OSzone.net 2001-