Linux - Ubuntu中运行编译或其他任务时提示找不到文件或程序
2023-09-11 14:22:09 时间
今天在编译Ingenic x2000(北京君正的MIPS架构芯片)的Linux BSP时,出现了个错误:
scripts/extract-cert.c:21:25: fatal error: openssl/bio.h: No such file or directory
这是因为Ubuntu系统中少安装了一个package,安装一下就好了:
$sudo apt install libssl-dev
在出现这个问题之前,编译这个BSP还提示找不到gcc,没有C++11的编译选项,所以就安装了GCC和G++:
$sudo apt install gcc
$sudo apt install g++
这种情况就是,提示什么缺失,就直接按照提示进行安装即可。
一般这种情况,如果提示缺少某个命令,可以在命令行里尝试运行这个命令,如果失败,就会出现提示你要安装那个包,比如我后面操作还出现的错误,提示找不到mkimage和cmake:
make[2]: mkimage: Command not found
$ mkimage
Command 'mkimage' not found, but can be installed with:
sudo apt install u-boot-tools
$sudo apt install u-boot-tools
/bin/sh: 1: cmake: not found
$ cmake
Command 'cmake' not found, but can be installed with:
sudo apt install cmake
$ sudo apt install cmake
但能否直接找到这个命令、程序或文件是属于哪个package呢?
比如一个程序cmd_xxx:
$dpkg -S $(which cmd_xxx)
或者上面提示的找不到的头文件:
$ dpkg -S openssl/bio.h
libssl-dev:amd64: /usr/include/openssl/bio.h
也可以使用apt-file:
$sudo apt install apt-file
$sudo apt-file update
$ apt-file search /usr/include/openssl/bio.h
libssl-dev: /usr/include/openssl/bio.h
上面apt-file命令,使用search和find都可以。
查看某个package里包含的文件,即使没有安装:
$apt-file list packagename
在之前文章也有关于包管理的说明:
dpkg -L packname
|
找出某个已安装包都安装了哪些文件,并给出路径。
|
dpkg -L apache-perl
dpkg -L perl
|
dpkg - c xyz.deb
dpkg --contents xyz.deb
|
显示出这个包中将要安装的文件,即这个包的内容。
|
dpkg -c dc_1.06-19_i386.deb
|
dpkg -S /path/to/file
|
找出这个文件所属的包
|
dpkg -S /bin/netstat
dpkg -S /sbing/ippool
|
还有另外一种方法, 就是在Ubuntu网站里查:
还有一些其他命令可用:
1. apt-cache
apt-cache search name
2. dpkg-query
* dpkg-query --list 'pattern*' lists all packages that have not been purged
* dpkg-query --search 'pattern*' searches for individual files installed
3. apt search
显示以安装的包:
apt search transmission | grep installed
4, 使用command_not_found_handle来查找命令。
$ command_not_found_handle cmake
Command 'cmake' is available in the following places
* /bin/cmake
* /usr/bin/cmake
cmake: command not found
因为我用的开发环境是Ubuntu 20.04,上面这些都是适用于Debian和Ubuntu环境的。
参考:
相关文章
- Linux解压缩tar.zst类型文件
- Linux命令大全(面试必备)
- 10个 Linux/Unix下 Bash 和 KSH shell 的作业控制实例
- 如何在linux上分享你shell命令的输出
- Linux下如何过滤、分割以及合并 pcap 文件
- Auditd - Linux 服务器安全审计工具
- Linux有问必答:如何在Linux中修改环境变量PATH
- linux shadow文件*,Linux /etc/shadow文件详解
- linux下find(文件查找)命令的用法总结
- 一篇文章带你了解——Linux中 文件权限 和 粘滞位的 概念 / 作用 及 实现方法
- linux下查找指定后缀的文件
- linux中加载驱动程序的命令以及加载方式过程分析
- Linux安装Nexus(图文解说详细版)
- linux下通过命令行把文件拷贝到U盘上
- linux core文件设置
- Linux 下获取进程所在文件的路径
- 深入理解Linux网络内幕(七)——组件初始化的内核基础架构
- Linux中使用expect脚本实现远程机器自动登录_linux shell
- Linux下文件及文件夹权限(学习笔记版)
- Linux ./configure --prefix命令
- Linux—linux 查看一个文件有多少M
- linux编程fcntl获取和设置文件状态
- Linux最大文件打开数
- Linux驱动程序中THIS_MODULE 的定义
- Linux系统下systemctl常用命令以及service文件配置
- [加入用户]解决useradd 用户后没有加入用户Home文件夹的情况,Linux改变文件或文件夹的訪问权限命令,linux改动用户password,usermod的ysuum安装包。飞
- Linux 之 arm linux 板子与 ubuntu 使用 nfs 进行 mount 挂载进行文件传输的简单整理
- Linux 之 Ubuntu FTP服务的安装/配置,并使用FileZilla客户端进行文件互传的简单整理
- (2)linux未使用eth0,未使用IPV4导致无法连接
- Linux输入输出重定向和文件查找值grep命令
- linux 日志统计
- 【Linux】linux中删除指定日期之前的文件
- Linux printf 函数输出问题