Ошибка компиляции на linux сервере (C проект) - PullRequest
0 голосов
/ 08 мая 2020

Мне нужна помощь.

Я работал над проектом C локально, и он работал отлично, без каких-либо проблем. Затем я переместил все свои файлы проекта на сервер linux (используя Bitwise) и запустил его, используя следующую команду:

gcc -g -std=c99 -Wall -pedantic-errors -Werror -DNDEBUG main.c map.c map.h utilities.c 
utilities.h election.c election.h extended_map.c extended_map.h test_utilities.h -o outmap

, и снова все заработало, как ожидалось.

Теперь я хочу заменить мою версию test_utilities.h версией, сохраненной на этом сервере, поэтому я открыл main.c (это единственный файл, включающий test_utilities.h, и заменил:

#include "test_utilities.h" 

на

#include "~mtm/public/1920b/ex1/test_utilities.h"

Но терминал показывает мне следующую ошибку:

gcc: error: test_utilities.h: No such file or directory
-bash-4.2$

Как было предложено, я изменил его на

gcc -g -std=c99 -Wall -pedantic-errors -Werror -DNDEBUG main.c map.c map.h utilities.c utilities.h election.c election.h extended_map.c extended_map.h test_utilities.h -o outmap -I ~mtm/public/1920b/ex1/

Но все же я получаю следующее:

g cc: ошибка: test_utilities.h: нет такого файла или каталога

update2: (меня попросили удалить файлы .h, теперь я получил)

gcc -g -std=c99 -Wall -pedantic-errors -Werror -DNDEBUG main.c map.c utilities.c election.c extended_map.c -o outmap

1 Ответ

2 голосов
/ 08 мая 2020

Запись ~mtm для ссылки на домашний каталог пользователя mtm - это ярлык, понятный вашей оболочке. Препроцессор C это не понимает. Поэтому вам придется записывать его как /home/mtm (или где бы ни находился домашний каталог mtm) вместо ~mtm.

Тем не менее, лучший способ - просто оставить его. как "test_utilities.h" и вместо этого отрегулируйте путь включения компилятора (указанный через -I при вызове компилятора), чтобы включить ~mtm/public/1920b/ex1/.

Вы также не должны указывать test_utilities.h в качестве аргумента компилятор. Фактически, ни один из файлов заголовков не должен передаваться в качестве аргументов компилятору.

...