Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
gcc-I标志有问题吗_C_Linux_Gcc_Glfw - Fatal编程技术网

gcc-I标志有问题吗

gcc-I标志有问题吗,c,linux,gcc,glfw,C,Linux,Gcc,Glfw,我确信这是一件非常简单的事情,但我不能让gcc或clang使用自定义的include目录。 我正在使用LinuxMint。该项目位于名为morg的目录中 这是我在morg/src/main.c #包括 #包括“GLFW/glfw3.h” int main(){ printf(“你好,世界!\n”); 返回0; } 目录morg/include包含GLFW/glfw3.h 目录morg/lib包含我试图使用的编译库libglfw3.a 我在morg/build.sh #/bin/bash gcc

我确信这是一件非常简单的事情,但我不能让gcc或clang使用自定义的include目录。 我正在使用LinuxMint。该项目位于名为
morg
的目录中

这是我在
morg/src/main.c

#包括
#包括“GLFW/glfw3.h”
int main(){
printf(“你好,世界!\n”);
返回0;
}
目录
morg/include
包含
GLFW/glfw3.h
目录
morg/lib
包含我试图使用的编译库
libglfw3.a

我在
morg/build.sh

#/bin/bash
gcc-Wall-Wextra-v-g-o-Iinclude-Llib-lglfw3 morg src/main.c
我用这个网站帮我把它组合起来。 编译器能够看到我试图链接到的静态库,但运行上述结果如下:

Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.4.0-1ubuntu1~18.04.1' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1) 
COLLECT_GCC_OPTIONS='-Wall' '-Wextra' '-v' '-g' '-o' '-Iinclude' '-Llib' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-linux-gnu/7/cc1 -quiet -v -imultiarch x86_64-linux-gnu src/main.c -quiet -dumpbase main.c -mtune=generic -march=x86-64 -auxbase main -g -Wall -Wextra -version -fstack-protector-strong -Wformat-security -o /tmp/cc7OGbRB.s
GNU C11 (Ubuntu 7.4.0-1ubuntu1~18.04.1) version 7.4.0 (x86_64-linux-gnu)
    compiled by GNU C version 7.4.0, GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version isl-0.19-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/7/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-linux-gnu/7/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/7/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
GNU C11 (Ubuntu 7.4.0-1ubuntu1~18.04.1) version 7.4.0 (x86_64-linux-gnu)
    compiled by GNU C version 7.4.0, GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version isl-0.19-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: fa57db1fe2d756b22d454aa8428fd3bd
src/main.c:2:10: fatal error: GLFW/glfw3.h: No such file or directory
 #include "GLFW/glfw3.h"
          ^~~~~~~~~~~~~~
compilation terminated.
使用内置规格。
收集\u GCC=GCC
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/LTO WRAPPER
卸载\u目标\u名称=nvptx无
卸载\目标\默认值=1
目标:x86_64-linux-gnu
配置为:../src/configure-v--with-pkgversion='Ubuntu 7.4.0-1ubuntu1~18.04.1'--with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs ——启用语言= C、艾达、C++、GO、BRIG、D、FORTRAN、Objc,obj-c++--prefix=/usr--仅限gcc主版本--程序后缀=-7--程序前缀=x86_64-linux-gnu----启用共享--启用链接器构建id--libexecdir=/usr/lib--不包括gettext--启用线程=posix--libdir=/usr/lib--启用nls--使用sysroot=/--启用clocale=gnu--启用libstdcxx调试--启用libstdcxx时间=yes--使用默认libstdcxx abi=new--启用gnu唯一对象--禁用vtable验证--启用libmpx--启用插件--启用默认饼图--使用系统zlib--使用目标系统zlib--启用objc gc=auto--启用多库--禁用werror--使用-arch-32=i686--使用abi=m64--使用多库列表=m32,m64,mx32--启用多库--使用tune=generic--启用卸载目标=nvptx none--不使用cuda驱动程序--启用检查=release--构建=x86_64-linux-gnu--主机=x86_64-linux-gnu--目标=x86_64-linux-gnu
线程模型:posix
gcc版本7.4.0(Ubuntu 7.4.0-1ubuntu1~18.04.1)
COLLECT\u GCC\u OPTIONS='-Wall'-Wextra'-v'-g'-o'-Iinclude'-Llib'-mtune=generic'-march=x86-64'
/usr/lib/gcc/x86_64-linux-gnu/7/cc1-quiet-v-imultimarch x86_64-linux-gnu src/main.c-quiet-dumpbase main.c-mtune=generic-march=x86-64-auxbase main-g-Wall-Wextra-version-fstack protector-strong-Wformat security-o/tmp/cc7OGbRB.s
GNU C11(Ubuntu 7.4.0-1ubuntu1~18.04.1)7.4.0版(x86_64-linux-GNU)
由GNU C版本7.4.0、GMP版本6.1.2、MPFR版本4.0.1、MPC版本1.1.0、isl版本isl-0.19-GMP编制
GGC启发式:--param GGC min expand=100--param GGC min heapsize=131072
忽略不存在的目录“/usr/local/include/x86_64-linux-gnu”
忽略不存在的目录“/usr/lib/gcc/x86_64-linux-gnu/7/../../../../../../../x86_64-linux-gnu/include”
#包括“…”搜索从这里开始:
#包括搜索从这里开始:
/usr/lib/gcc/x86_64-linux-gnu/7/include
/usr/本地/包括
/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed
/usr/include/x86_64-linux-gnu
/usr/包括
搜索列表结束。
GNU C11(Ubuntu 7.4.0-1ubuntu1~18.04.1)7.4.0版(x86_64-linux-GNU)
由GNU C版本7.4.0、GMP版本6.1.2、MPFR版本4.0.1、MPC版本1.1.0、isl版本isl-0.19-GMP编制
GGC启发式:--param GGC min expand=100--param GGC min heapsize=131072
编译器可执行校验和:fa57db1fe2d756b22d454aa8428fd3bd
src/main.c:2:10:致命错误:GLFW/glfw3.h:没有这样的文件或目录
#包括“GLFW/glfw3.h”
^~~~~~~~~~~~~~
编译终止。
我可以看到,
include“…”从这里开始
为空,
include从这里开始
保持不变,无论我是否在命令行选项中包括
-Iinclude

我也有一点担心那些说忽略不存在的目录的行,但是它看起来并不相关

我认为clang可能会提供更多有用的错误消息,但基本上是一样的

值得一提的是,我以前在Windows和Visual Studio上使用过GLFW

我错过了什么?在我的搜索过程中,我在互联网上到处搜索,感觉自己很傻

编辑: 正如上面的评论所说,我把
-o
命令放错了位置,但这不是唯一的问题!我需要在主源文件之后放置
-lglfw
(而不是
-lglfw3
),如下所示:


gcc-Wall-Wextra-g-Iinclude-Llib-o morg src/main.c-lglfw

看起来-o选项放错了位置,导致了错误

试试这个


gcc-Wall-Wextra-v-g-Iinclude-Llib-lglfw3-o morg src/main.c看起来像是-o选项放错了位置,导致了错误

试试这个


gcc-Wall-Wextra-v-g-Iinclude-Llib-lglfw3-o morg src/main.c

I…谢谢。哇!非常感谢。你是一个了不起的人。我觉得自己很笨,但你知道吗?我不会忘记的。祝您健康和安全。使用
gcc
ld
时,除非库能够解析未解析的外部引用,否则不会从库中“提取”任何内容。因此,必须在库之前列出源文件:
src/main.c
。谢谢。哇!非常感谢。你是一个了不起的人。我觉得自己很笨,但你知道吗?我不会忘记的。祝您健康和安全。使用
gcc
ld
时,除非库能够解析未解析的外部引用,否则不会从库中“提取”任何内容。因此,必须在库之前列出源文件:
src/main.c