next up previous contents
Next: Проблемы компоновки программ на Up: Проблемы компиляции или компоновки Previous: Проблемы компиляции или компоновки   Contents

Общие

  1. В: При компоновке тестовой программы генерируется следующее сообщение:
    f77 -g -o secondf secondf.o -L/usr/local/mpich/lib/sun4/ch_p4 -lmpich
    invalid option -L/usr/local/mpich/lib/sun4/ch_p4
    ld: -lmpich: No such file or directory
    О: Эта программа f77 не принимает команду -L для установки пути поиска библиотек. Некоторые системы предлагают скрипт shell для f77, очень ограниченный по своим возможностям. Чтобы обойти это, используйте полный путь к библиотекам вместо опции -L:
    f77 -g -o secondf secondf.o /usr/local/mpich/lib/sun4/ch_p4/libmpich.a
    Начиная с версии mpich 1.2.0, configure для mpich пытается определить корректную опцию для определения путей библиотек для компилятора Фортрана. Если Вы обнаружили, что configure для mpich делает ошибки, пожалуйста сообщите о них по адресу mpi-bugs@mcs.anl.gov.
  2. В: При компоновке программ на Фортране выводятся непонятные обозначения вида:
    f77 -c secondf.f
    secondf.f:
    MAIN main:
    f77 -o secondf secondf.o -L/home/mpich/lib/solaris/ch_shmem -lmpich
    Undefined first referenced
    symbol in file
    getdomainname /home/mpich/lib/solaris/ch_shmem/libmpi.a (shmempriv.o)
    ld: fatal: Symbol referencing errors. No output written to secondf
    С программами на С этого не происходит.

    О: Это означает, что Ваш компилятор С предоставляет Вам библиотеки, которые не может предоставить компилятор Фортрана. Найдите опции для компиляторов С и Фортрана, указывающие, какие из бибилотек используются (или же Вы можете обнаружить такие опции, как -dryrun, которая покажет команды, используемые компилятором). Создайте простую программу на С или Фортране и сравните использованные библиотеки (обычно в командной строке ld). Попробуйте те, которые представлены для компилятора С, но отсутствуют для компилятора Фортран.

  3. В: При попытке компиляции кода Фортрана компилятором Фортран 90 или Фортран 95 получены сообщения об ошибке
    Error: foo.f, line 30: Inconsistent datatype for argument 1 in MPI_SEND
    О: Фортран требует, чтобы в двух вызовах одной и той же процедуры типы аргументов совпадали. Т.е., если Вы вызываете MPI_SEND с буфером REAL в качестве первого аргумента, то вызов его с буфером INTEGER в качестве первого аргумента компилятор Фортрана воспринимает как ошибку. Некоторые компиляторы Фортрана 77 могут пропустить это; большинство компиляторов Фортран 90 или Фортран 95 проверяют это. Существует два решения. Одно из них - использование модуля MPI (в версии с ``аргументами по выбору'': используйте опцию -choicemod для mpif90); другим является указание опции компилятору Фортрана 90, допускающей несовпадение аргументов. Использование модуля MPI более предпочтительно. Пользователи Фортрана 77 могут иногда увидеть подобные сообщения, особенно в последних версиях g77. Опция -Wno-globals запрещает появление этих предупреждений.


Alex Otwagin 2002-12-16