一、gcc

1.关于LInux环境下的C/C++的默认包含路径

  • 首先先来看看编译器的默认搜索路径都是那些,使用如下命令可以查询到GCC的默认头文件(#include<…>)搜索目录:

#对于C:
echo | gcc -v -x c -E -

#对于C++:
echo | g++ -v -x c++ -E -
  • 注意:不明白这两个命令只有在root权限下才能看到路径相关内容,也许跟我安装时就是在root权限下有关。

2.gcc/g++默认的库搜索路径

  • 库文件在链接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的。
  • 一般 Linux 系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用这两个目录中的库时不需要进行设置搜索路径即可直接使用。
  • 对于处于默认库搜索路径之外的库,需要将库的位置添加到 库的搜索路径之中。
    设置库文件的搜索路径有下列两种方式,可任选其一使用:
(1)在环境变量 LD_LIBRARY_PATH 中指明库的搜索路径。

(2)/etc/ld.so.conf 文件中添加库的搜索路径。
将自己可能存放库文件的路径都加入到/etc/ld.so.conf中是明智的选择
添加方法也极其简单,将库文件的绝对路径直接写进去就OK了,一行一个。例如:
/usr/X11R6/lib
/usr/local/lib
/opt/lib

为了保证程序执行时对库的定位,在 /etc/ld.so.conf 中进行了库搜索路径的设置之后,还必须要运行 /sbin/ldconfig 命令更新 /etc/ld.so.cache 文件之后才可以。
其作用就是将/etc/ld.so.conf列出的路径下的库文件缓存到/etc/ld.so.cache 以供使用

二、clang

使用命令查看 clang++的 include 搜索路径

clang++ -E -x c++ - -v < /dev/null

/usr/local/Cellar/llvm/7.0.0/include/c++/v1
 /usr/include/c++/v1
 /usr/local/include
 /usr/local/Cellar/llvm/7.0.0/lib/clang/7.0.0/include
 /System/Library/Frameworks (framework directory)
 /Library/Frameworks (framework directory)

一般情况下,如果想要在ubuntu20.04/22.04中安装clang相关工具链进行编译,必须安装默认的clang版本,即:

	apt-get update -y
	apt install clang libc++-dev libc++abi-dev -y

否则无法安装其他版本,无法进行clang编译。eg:在ubuntu22.04中安装clang-11版本,是无法找到C++相关头文件的!!!会一直出现一以下错误:

 fatal error: 'chrono' file not found
 'string' file not found

原因:
clang编译的时候会取找gun的头文件,但是如果不是安装默认版本的clang,是找不到gun头文件的。可能需要另外配置,但是很麻烦!!!

# clang -v -E
Ubuntu clang version 14.0.0-1ubuntu1.1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/12
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/12
Candidate multilib: .;@m64
Selected multilib: .;@m64
  • 参考:
Debian 入门安装与配置2
https://www.cnblogs.com/wanghaiyang1930/p/5144835.html

Linux添加环境变量与GCC编译器添加INCLUDE与LIB环境变量
https://www.cnblogs.com/image-eye/archive/2011/08/20/2147133.html
Logo

更多推荐