компиляция старых программ
Модератор: /dev/random
-
planeswalker
- Сообщения: 8
- ОС: Manndriva 2009 spring
компиляция старых программ
Доброго времени суток!
При компиляции программы (http://www.crystal.chem.uu.nl/~vaneyck/upack.html) столкнуся с проблемой - скрипт для компиляции
настроен под какую-то старую версию linux, я не могу его запустить под Mandriva 2009 spring.
Скрипт собственно выглядит так:
#!/bin/csh -f
f2c -c -C -Wall -72 y*.f
f2c -c -O2 yopth.f
f2c -c -O2 ynonbe*.f
f2c -c -O2 ylist*.f
f2c -c -O2 ykwald.f
f2c -c -O2 ysort.f
f2c -c -O2 ydlist.f
f2c -c -O2 ydclus.f
f2c -c -O2 ylatvib.f
f2c -c -C -Nn802 -Wall -72 yprep.f
f2c -c -C -Nn802 -Wall -72 ypack3.f
echo Now compiling gcc ...
gcc -c -O2 *.c
echo Now linking object files ...
link1
link2
link3
linkclus
linkcodes
linkprep
linkmd
linkdist
link12
при запуске вылезает ошибка: bad identifer: отказано в доступе.
После того как я заменил в первой строке csh на sh скрипт, заработал, но половина команд оказались "незнакомыми",
в итоге исполняемые файлы так и не были созданы. Подскажите пожалуйста, в чем тут проблема.
Заранее спасибо!
При компиляции программы (http://www.crystal.chem.uu.nl/~vaneyck/upack.html) столкнуся с проблемой - скрипт для компиляции
настроен под какую-то старую версию linux, я не могу его запустить под Mandriva 2009 spring.
Скрипт собственно выглядит так:
#!/bin/csh -f
f2c -c -C -Wall -72 y*.f
f2c -c -O2 yopth.f
f2c -c -O2 ynonbe*.f
f2c -c -O2 ylist*.f
f2c -c -O2 ykwald.f
f2c -c -O2 ysort.f
f2c -c -O2 ydlist.f
f2c -c -O2 ydclus.f
f2c -c -O2 ylatvib.f
f2c -c -C -Nn802 -Wall -72 yprep.f
f2c -c -C -Nn802 -Wall -72 ypack3.f
echo Now compiling gcc ...
gcc -c -O2 *.c
echo Now linking object files ...
link1
link2
link3
linkclus
linkcodes
linkprep
linkmd
linkdist
link12
при запуске вылезает ошибка: bad identifer: отказано в доступе.
После того как я заменил в первой строке csh на sh скрипт, заработал, но половина команд оказались "незнакомыми",
в итоге исполняемые файлы так и не были созданы. Подскажите пожалуйста, в чем тут проблема.
Заранее спасибо!
-
Atolstoy
- Сообщения: 1655
- Статус: Tux in the rain
- ОС: Linux x86_64
Re: компиляция старых программ
1. "Нет доступа" - может нет прав на запись файла? Попробуй под рутом.
2. проверь, всё ли поставлено для сборки
3. если действительно не собирается из-за возраста, то проще собрать в виртуалке под старым дистром.
2. проверь, всё ли поставлено для сборки
3. если действительно не собирается из-за возраста, то проще собрать в виртуалке под старым дистром.
Всего лишь 26 литров пива достаточно человеку для удовлетворения ежедневной потребности в кальции. Здоровое питание - это так просто!
http://atolstoy.wordpress.com
http://atolstoy.wordpress.com
-
sciko
- Сообщения: 1744
- Статус: Ъ-участник
- ОС: Debian/Ubuntu/etc
Re: компиляция старых программ
И не удивительно. Тут идёт попытка использовать нецелевой шелл. Т.е. скрипту нужен csh, а в Мандряве, как и в большинстве Линуксов, по умолчанию стоит bash.planeswalker писал(а): ↑04.02.2010 10:14После того как я заменил в первой строке csh на sh скрипт, заработал, но половина команд оказались "незнакомыми"
Варианты решения:
1. установить csh,
2. переписать скрипт на bash.
ЗЫ. По умолчанию csh обычно стоит ОС типа BSD.
-
planeswalker
- Сообщения: 8
- ОС: Manndriva 2009 spring
Re: компиляция старых программ
под рутом пробовал, файлы вроде все на месте.
to sciko: а как можно установить csh? переписать скрипт я вряд ли смогу..
to sciko: а как можно установить csh? переписать скрипт я вряд ли смогу..
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: компиляция старых программ
насколько я понял, у ТС уже есть csh.
planeswalker можно увидеть полное сообщение об ошибке?
для начала rpm -qa | grep "csh"
если у вас его нет, то
urpmi csh от рута.
-
sciko
- Сообщения: 1744
- Статус: Ъ-участник
- ОС: Debian/Ubuntu/etc
Re: компиляция старых программ
Я же написал: разрешаю. Добавлю, что рекомендую воспользоваться репами Мандрявы.
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: компиляция старых программ
с такой строчкой bash (который по умолчанию) вызовет для выполнения скрипта csh, и если-бы у TC его небыло-бы, то bash-бы выругался примерно так:
Код: Выделить всё
bash: ./ZZZ: /bin/ZZZ: bad interpreter: Нет такого файла или каталогат.к. bash так не сказал, то у ТС уже есть csh.
-
planeswalker
- Сообщения: 8
- ОС: Manndriva 2009 spring
Re: компиляция старых программ
to drBatty: да, именно такое сообщение и выходит (нет такого файла или каталога), прошу прощения, в первом посте я ошибся.
в bin такой папки (csh) действительно нет, видимо придется установить csh.
спасибо за помощь!
в bin такой папки (csh) действительно нет, видимо придется установить csh.
спасибо за помощь!
-
planeswalker
- Сообщения: 8
- ОС: Manndriva 2009 spring
Re: компиляция старых программ
после rpm -qa | grep "csh" вылазит несколько сообщений типа:
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Нет такого файла или каталога
после urpmi csh :
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Нет такого файла или каталога
устанавливается tcsh-6.15-5mdv2009.1.i586.rpm из /media/cdrom/i586/media/main
Подготовка... ################################################################################
##########
1/1: tcsh ################################################################################
##########
ошибка: распаковка архива не удалась на файле /bin/csh: cpio: renameне удалось - Это каталог
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Нет такого файла или каталога
после urpmi csh :
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Нет такого файла или каталога
устанавливается tcsh-6.15-5mdv2009.1.i586.rpm из /media/cdrom/i586/media/main
Подготовка... ################################################################################
##########
1/1: tcsh ################################################################################
##########
ошибка: распаковка архива не удалась на файле /bin/csh: cpio: renameне удалось - Это каталог
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: компиляция старых программ
planeswalker писал(а): ↑04.02.2010 11:45в bin такой папки (csh) действительно нет, видимо придется установить csh.
это не каталог, это файл, или ссылка на файл.
planeswalker писал(а): ↑04.02.2010 11:54ошибка: распаковка архива не удалась на файле /bin/csh: cpio: renameне удалось - Это каталог
может вы ручками сделали каталог /bin/csh/ ?
-
planeswalker
- Сообщения: 8
- ОС: Manndriva 2009 spring
Re: компиляция старых программ
csh установился, но скрипт все равно не работает:
f2c: Command not found.
f2c: Command not found.
f2c: Command not found.
f2c: Command not found.
f2c: Command not found.
f2c: Command not found.
f2c: Command not found.
f2c: Command not found.
f2c: Command not found.
f2c: Command not found.
f2c: Command not found.
f2c: Command not found.
f2c: Command not found.
Now compiling gcc ...
gcc: No match.
Now linking object files ...
link2: Command not found.
link3: Command not found.
linkprep: Command not found.
linkmd: Command not found.
link12: Command not found.
наверно дело в том что у меня другой компилятор (надо будет сменить название), но что делать с командами link2, link3 итд?
и еще вопрос, после установки csh мне не надо менять текущую оболочку? скрипт я запускал из терминала, той ошибки больше не было
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: компиляция старых программ
planeswalker писал(а): ↑04.02.2010 12:18csh установился, но скрипт все равно не работает:
f2c: Command not found.
вот что пишет вика:
f2c is the name of a program to convert Fortran 77 to C code, developed at Bell Laboratories. The standalone f2c program was based on the core of the first complete Fortran 77 compiler to be implemented, the "f77" program by Feldman and Weinberger. Because the f77 compiler was itself written in C and relied on a C compiler back end to complete its final compilation step, it and its derivatives like f2c were much more portable than compilers generating machine code directly.
The f2c program was released as free software (open-source software) and subsequently became one of the most common means to compile Fortran code on many systems where native Fortran compilers were unavailable or expensive. Several large Fortran libraries, such as LAPACK, were made available as C libraries via conversion with f2c. The f2c program also influenced the development of the GNU g77 compiler, which uses a modified version of the f2c runtime libraries.
т.е. теперь вам нужно поставить конвертор из фортрана в си. может он есть в репах, поищите, где-то в "разработка" был (ЕМНИП, никогда не юзал).
сначала поставьте конвертор.
-
sciko
- Сообщения: 1744
- Статус: Ъ-участник
- ОС: Debian/Ubuntu/etc
Re: компиляция старых программ
Да, всё проще. Мандрява -- пакетный дистр, а значит программы для компиляции и разработки по умолчанию не установлены. Надо бы их установить. Пакет не подскажу.
-
planeswalker
- Сообщения: 8
- ОС: Manndriva 2009 spring
Re: компиляция старых программ
Поставил конвертор, файлы компилируются, но link... все равно не выполняется.
по той же вике вроде нужна еще программа - linker или что-то типа того, пока что ищу...
по той же вике вроде нужна еще программа - linker или что-то типа того, пока что ищу...
-
planeswalker
- Сообщения: 8
- ОС: Manndriva 2009 spring
Re: компиляция старых программ
planeswalker писал(а): ↑04.02.2010 13:07Поставил конвертор, файлы компилируются, но link... все равно не выполняется.
по той же вике вроде нужна еще программа - linker или что-то типа того, пока что ищу...
На самом деле, эти "линки" относятся к скриптам самой программы. Всем большое огромное спасибо за помощь, тему можно закрывать..
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: компиляция старых программ
это понятно что пакетный... я не предлагал ТС ставить из сырцов, перечитайте мои посты.
planeswalker писал(а): ↑04.02.2010 14:03На самом деле, эти "линки" относятся к скриптам самой программы.
я так и думал. программа-то поставилась? и как называется пакет?
-
planeswalker
- Сообщения: 8
- ОС: Manndriva 2009 spring
Re: компиляция старых программ
да, поставилась
, пакет вроде так и называется f2c,
к нему идут еще 2 библиотеки - libf2c-devel и libf2c0, я устанавливал ч/з "установку программ"...
еще раз спасибо...
к нему идут еще 2 библиотеки - libf2c-devel и libf2c0, я устанавливал ч/з "установку программ"...
еще раз спасибо...