centos查看哪些包提供指定头文件

【问题】:项目迁移时,原来在suse上正常的代码在centos上报错:

g++ -g -Wall -fPIC -I../include -I./ -I../src -I/share/comm_ext -I/home/appadmin/workspace/comm/export_include/ -I/home/appadmin/workspace/comm/export_include/c2cplatform -I/home/appadmin/workspace/comm/export_include/app_platform -I/home/appadmin/workspace/comm/export_include/app_platform/2.4.1 -c ../include/myutil/net_util.cpp
../include/myutil/net_util.cpp:5:21: 错误:stropts.h:没有那个文件或目录

【查找原因】

1. “stropts.h”似乎是系统提供的头文件,那么位于哪个目录下呢?

在suse上使用如下命令:

g++ -g -Wall -fPIC -I../include -I./ -I../src -I/share/comm_ext -I/home/appadmin/workspace/comm/export_include/ -I/home/appadmin/workspace/comm/export_include/c2cplatform -I/home/appadmin/workspace/comm/export_include/app_platform -I/home/appadmin/workspace/comm/export_include/app_platform/2.4.1 -E ../include/myutil/net_util.cpp >util.i

使用g++的 -E选项进行预处理(关于-E选项的更多内容,请自行搜索)

打开util.i,有如下内容:

# 1 "/usr/include/stropts.h" 1 3 4

可知在suse上该文件位于/usr/include/stropts.h

2. 再centos上查看,确实不存在/usr/include/stropts.h文件:

find /usr -name *stropts.h*
find: “/usr/lib64/audit”: 权限不够

也就是说,centos上的环境确实缺少该头文件

3.既然缺少那就安装。首先需要知道的是,该头文件属于哪个包?

$ yum provides */stropts.h
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
1:compat-glibc-headers-2.5-46.2.x86_64 : Header files for development using standard C libraries.
Repo        : base
Matched from:
Filename    : /usr/lib/x86_64-redhat-linux5E/include/stropts.h
Filename    : /usr/lib/x86_64-redhat-linux5E/include/bits/stropts.h
Filename    : /usr/lib/x86_64-redhat-linux5E/include/sys/stropts.h

可知compat-glibc-headers-2.5-46.2.x86_64包提供我们需要的头文件,我们只需要安装该包就行了。

4.先确认一下该包有没有被安装过:

$ yum list|grep installed
CollabNetSubversion-client.x86_64        1.8.10-2                          installed
ImageMagick.x86_64                       6-7                               installed
cpp.x86_64                               4.1.2-55.el5                      installed
dal_auto_script.i586                     1-3                               installed
dal_auto_script_set.i586                 1-3                               installed
gcc.x86_64                               4.1.2-55.el5                      installed
gcc-c++.x86_64                           4.1.2-55.el5                      installed
libgcc.x86_64                            4.1.2-55.el5                      installed
libstdc++.x86_64                         4.1.2-55.el5                      installed
libstdc++-devel.x86_64                   4.1.2-55.el5                      installed
perl_crontab.i586                        1-0                               installed
public_scripts.i586                      1-8                               installed
wget.x86_64                              1.12-1.8.el6                      installed

既然没有,那就安装吧。。。

时间: 2024-10-08 21:39:26

centos查看哪些包提供指定头文件的相关文章

gcc指定头文件路径及动态链接库路径

一. #include <>与#include "" #include <>直接到系统指定的某些目录中去找某些头文件.#include ""先到源文件所在文件夹去找,然后再到系统指定的某些目录中去找某些头文件. 二. gcc指定头文件的三种情况: 1.会在默认情况下指定到/usr/include文件夹(更深层次的是一个相对路径,gcc可执行程序的路径是/usr/bin/gcc,那么它在实际工作时指定头文件头径是一种相对路径方法,换算成绝对路径

virtualbox linux客户机中安装增强功能包缺少kernel头文件问题解决

linux客户机中安装增强功能包总会提示缺少kernel头文件 根据发行版的不同,用命令行软件包管理命令安装dkms build-essential linux-headers-$(uname -r),我的客户机是openSUSE,所以命令如下: zypper install dkms build-essential linux-headers-$(uname -r) 然后,再用root身份安装光盘中的vboxaddition.run,安装完成后,重启客户机即可.

查看gcc版本和引用头文件路径

# echo | gcc -v -x c -E - Using built-in specs. COLLECT_GCC=gcc Target: i686-pc-linux-gnu Configured with: ../gcc-5.2.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib Thread model: posix gcc version 5.2.0 (GCC) COLLEC

怎么查看jar包里面的.class文件源java代码

http://book.zhulang.com/299056/736458.html http://book.zhulang.com/299056/736459.html http://book.zhulang.com/299056/736460.html http://book.zhulang.com/299056/736461.html http://book.zhulang.com/299056/736462.html http://book.zhulang.com/299056/7364

gcc 查看 引用头文件的位置

场景: 代码 使用了 msgpack库,但makefile 没有指定 msgpack的头文件所在位置,也可以编译通过. 可以得出 一定是在系统的某个位置 安装了 msgpack,并且被找到. 但具体头文件在哪个位置呢? 从网上 搜到 看到 都是 gcc/g++ 头文件的 搜索路径,-I指定头文件的搜索路径. 知道了搜索路径,那我 需要 遍历 搜索路径上的每个目录 去查找, 这样比较费时, 但也是最容易想到的. 但可以通过 gcc 编译程序的 过程,让 gcc 自己列出所在位置. gcc 由源码到

如何指定GCC的默认头文件路径

如何指定GCC的默认头文件路径 网上偶搜得之,以之为宝:)原地址:http://blog.chinaunix.net/u/28781/showart.php?id=401631=============================================================================== 在交叉编译的时候我们需要用到其他的库,在config时候可以通过“-l”来指定目录,但是每次都需要设置的话难免有些麻烦,找到一个简单的方法.看下文的红色部分. 有大

C语言笔记之头文件与链接(二)

从上篇文章中,我们可以看到一点头文件的作用:就是声明各个函数或变量,以供调用:而至于函数或变量的本体,在链接阶段补上.在main.c中.我们手动声明了两个函数,但其实这样比较费力不讨好,因为如果还有很多其他文件也需要调用这两个函数,那么也要在那些文件中一次次的声明:两个函数还好,如果是成千上百个呢?还要一个一个的去声明吗?这时候,头文件就是一个更好的选择:只要把那些需要用到的函数或变量写进头文件,然后include这个头文件就可以了.头文件就是声明的替代,或者说是批量的声明. 我们的头文件fil

GCC、头文件查找顺序总结

GCC笔记 The History of GCC -------------------------------------------------------------------------------- 1984年,Richard Stallman发起了自由软件运动,GNU (Gnu's Not Unix)项目应运而生,3年后,最初版 的GCC横空出世,成为第一款可移植.可优化.支持ANSI C的开源C编译器. GCC最初的全名是GNU C Compiler,之后,随着GCC支持的语言越

[转]Linux学习笔记——例说makefile 头文件查找路径

0.前言 从学习C语言开始就慢慢开始接触makefile,查阅了很多的makefile的资料但总感觉没有真正掌握makefile,如果自己动手写一个makefile总觉得非常吃力.所以特意借助博客总结makefile的相关知识,通过例子说明makefile的具体用法. 例说makefile分为以下几个部分,更多内容请参考[例说makefile索引博文] 1.只有单个C文件 2.含有多个C文件 3.需要包括头文件路径 4.增加宏定义 5.增加系统共享库 6.增加自定义共享库 7.一个实际的例子 [