我一直在尝试编译和链接 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.
开头有一行有问题,关于在搜索标头时忽略不存在的目录。不幸的是,这正是 g++ 认为寻找 crt1.o 的好主意,我认为它是将 main() 函数变形为可执行文件的某种二进制文件:
g++ -Isrc --std=c++11 -g -c -o src/tissuecell.o src/tissuecell.cpp
g++ -Isrc --std=c++11 -g -c -o src/analyze.o src/analyze.cpp
g++ -o TissueCells src/tissuecell.o src/analyze.o
/usr/lib/gcc/x86_64-linux-gnu/4.7/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
我的编译器直到几个小时前才这样做(以前,它会编译!),我输入的“不可逆命令”想到的是一个:
sudo ldconfig
谁能让我摆脱这个可怕的链接和编译问题,并从我的包含路径中删除这条讨厌的行?
一些你可能也能回答的问题会让我很高兴:
- 如何查看和编辑编译器搜索包含的路径?(不是-我)
- 如何查看和编辑编译器搜索库的路径?(不是 -L,ld 应该能够在需要时找到库)
- ld 与整个过程有什么关系,有没有办法通过我的 g++ 调用(例如,-rpath)传递 ld 一些标志?