Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.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
C++ g++;在函数\uu start中链接到crt1.o时遇到致命错误_C++_Linker_Include_Ld_Include Path - Fatal编程技术网

C++ g++;在函数\uu start中链接到crt1.o时遇到致命错误

C++ g++;在函数\uu start中链接到crt1.o时遇到致命错误,c++,linker,include,ld,include-path,C++,Linker,Include,Ld,Include Path,我一直在尝试编译和链接Qt5,这意味着我一直在搞乱一些ldconfig,包括我不完全理解的路径默认值。我会尽我最大的努力把我的问题限制在一个非常具体的问题上,因为我的首要任务是修复我的编译器 我已使用命令尝试 `gcc -print-prog-name=cc1plus` -v ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../x86_64-linux-gnu/include" #includ

我一直在尝试编译和链接Qt5,这意味着我一直在搞乱一些ldconfig,包括我不完全理解的路径默认值。我会尽我最大的努力把我的问题限制在一个非常具体的问题上,因为我的首要任务是修复我的编译器

我已使用命令尝试

`gcc -print-prog-name=cc1plus` -v
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../x86_64-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/c++/4.7
 /usr/include/c++/4.7/x86_64-linux-gnu
 /usr/include/c++/4.7/backward
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include
 /usr/local/include
 /usr/lib/gcc/x86_64-linux-gnu/4.7/include-fixed
 /usr/include
End of search list.
我的编译器直到几个小时前才这样做(以前,它会编译!),我输入的“不可逆命令”是一个:

sudo ldconfig
有人能帮我摆脱这个链接和编译问题的可怕陷阱,并从我的include路径中删除这条讨厌的行吗

你可能也能回答一些让我非常高兴的问题:

  • 如何查看和编辑编译器搜索包含的路径?(非-I)
  • 如何查看和编辑编译器搜索库的路径?(不是-L,ld应该能够找到它需要的库)
  • ld与整个过程有什么关系,有没有办法通过我的g++调用(例如,-rpath)向ld传递一些标志

首先,您可以使用“-v”选项运行gcc(g++),例如:

echo "int main() { return 0; }" > /tmp/test.c
gcc -v /tmp/test.c
您可以在输出中找到如下内容:

--with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/include/g++-v4
加上

#包含搜索从这里开始:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/include
/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/include-fixed
/usr/包括
LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../../../lib64/:/usr/lib//lib64/:/usr/lib gcc/x86_64-pc-linux-gnu/4.7.3/../../../../../x8664-pc-linux-gnu/lib/
还有很多其他的东西


第二种变体是,您可以在命令前面使用“strace-f”,即打开模式的grep-output,以找出使用的位置和文件。

哦,天哪,这太尴尬了。我的问题是,在放弃新构建之后,我没有修复我的Makefile;错误来自于代码库中缺少main()函数

以下命令允许我测试编译器的内部错误:

echo "int main() { return 0; }" > /tmp/test.c; gcc -v /tmp/test.c

我回到了git上的一个旧提交,并得到了要编译的代码,这是对我的编译器是否健全的一个很好的双重检查。

接受你自己的答案!我遇到了同样的问题…嗯…这里也缺少
main()
。你活着,你学习——他们说:)
#include <...> search starts here:
 /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/include
 /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/include-fixed
 /usr/include

LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../x86_64-pc-linux-gnu/lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../:/lib/:/usr/lib/
echo "int main() { return 0; }" > /tmp/test.c; gcc -v /tmp/test.c