我需要协助。
我在本地从事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/
但是我仍然得到以下信息:
gcc:错误: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
最佳答案
编写~mtm
以引用用户mtm
的主目录是您的Shell可以理解的快捷方式。 C预处理程序无法理解。因此,您必须将其拼写为/home/mtm
(或mtm
的主目录所在的位置),而不是~mtm
。
也就是说,更好的方法是将其保留为"test_utilities.h"
,而是调整编译器的包含路径(调用编译器时通过-I
指定)以包括~mtm/public/1920b/ex1/
。
您也不应该将test_utilities.h
指定为编译器的参数。实际上,任何头文件都不应作为参数传递给编译器。