C++ g++;在函数\uu start中链接到crt1.o时遇到致命错误
我一直在尝试编译和链接Qt5,这意味着我一直在搞乱一些ldconfig,包括我不完全理解的路径默认值。我会尽我最大的努力把我的问题限制在一个非常具体的问题上,因为我的首要任务是修复我的编译器 我已使用命令尝试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
`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传递一些标志
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