Как мне скомпилировать этот старый код с помощью cc - PullRequest
0 голосов
/ 18 мая 2019

Я пытаюсь скомпилировать исходный код, начиная с 2001 года, в Ubuntu 18.04.2 LTS. Но я получил ошибки ниже и на самом деле не знаю, как я должен изменить код компиляции. Можете ли вы помочь мне для компиляции этого кода?

Предлагаемая часть компиляции из программы

  SUGGESTED COMPILATION COMMAND LINE (FOR A DEC-ALPHA CC-COMPILER):

  cc -lm -fast -tune host -arch host -assume whole_program \
     -o mol_volume mol_volume.c

Когда я попробовал этот код, ошибки;

cc: error: host: No such file or directory
cc: error: host: No such file or directory
cc: error: whole_program: No such file or directory
cc: error: unrecognized command line option ‘-fast’; did you mean ‘-Ofast’?
cc: error: unrecognized command line option ‘-tune’; did you mean ‘-mtune=’?
cc: error: unrecognized command line option ‘-arch’; did you mean ‘-march=’?
cc: error: unrecognized command line option ‘-assume’; did you mean ‘-msse’?

Затем я изменил -fast, -tune, -arch, -assume флаги с -Ofast, -mtune=native, -march=native, -msse, затем добавил путь для части каталога ошибки.

cc -lm -Ofast -mtune=native -march=native -msse /mypath/ -o mol_volume mol_volume.c

Тогда я получил эту ошибку;

mol_volume.c: In function ‘main’:
mol_volume.c:235:10: warning: implicit declaration of function ‘gets’; did you mean ‘fgets’? [-Wimplicit-function-declaration]
   while( gets(s) ) {
          ^~~~
          fgets
mol_volume.c:311:26: warning: format ‘%i’ expects argument of type ‘int’, but argument 2 has type ‘long int’ [-Wformat=]
    printf("WARNING: the %i-th atom of the pdb file %s has an unknown chemical type %s.\n",
                         ~^
                         %li
      i+1, pdb_name, atom_type);
      ~~~                  
/usr/bin/ld: cannot find .: File format not recognized
collect2: error: ld returned 1 exit status

Вы можете получить доступ к исходному коду по этой ссылке; Исходный код

Информация о моем ПК:

Операционная система : Ubuntu 18.04.2 LTS

Ядро вер.: 4.15.0-50-универсальный

GCC ver. : 7.4.0

1 Ответ

1 голос
/ 18 мая 2019

gets был удален в C11. Компилировать с gcc -o mol_volume -Wall -std=c99 -mtune=native -O3 mol_volume.c -lm.

Это будет работать, но вы должны исправить код, чтобы удалить все предупреждения.

...