现象:本机安装的是Linux; 运行32位的apache;
错误提示: No such file or directory
解决过程: 首先我查看次二进制程序是否是unix/linux版本的:
file filename: httpd: setuid ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.2.5, not stripped
由此可见此程序是32位可执行linux程序;
第二步查看操作系统版本:uname -a: Linux ubuntu 2.6.35-22-generic #33-Ubuntu SMP Sun Sep 19 20:32:27 UTC 2010 x86_64 GNU/Linux
可见安装的内核是64位的linux;
那么可以定位问题为32位的可执行程序不能在64位内核上运行的的问题;但是我只到64为内核是可以运行32为的程序的,可能是缺少一些32位的动态库吧。于是google了下,发现果然是缺少ia32-libs这个包;于是apt-get install ia32-lib安装这个包;
问题解决;
总结: 我们知道一个可执行二进制程序文件头都是有一个魔数的,比如linux c程序的都有ELF魔数;现如今linux 环境在加载可执行程序时,可以动态根据不同的魔数,加载java,ruby,python,awk,go,等等语言的执行器来执行程序;
同样一个技巧,有时候我们运行一个程序时会报缺少动态链接库的问题,我们先odd filename;可以知道缺少的库;
分享到:
相关推荐
本资源提供了在Linux环境下运行C#程序的详细步骤,通过实例程序“ConsoleApp1”进行讲解。 首先,我们需要理解C#在Linux上的运行环境是.NET Core。.NET Core是一个开源、跨平台的开发框架,支持Windows、macOS和...
这里提到的"snail007-phprunner-0ce9948"可能是一个专为此目的编写的特定工具,允许你在不依赖系统PHP解释器的情况下运行PHP代码。下面将详细讨论如何实现这一功能以及相关的技术知识点。 首先,了解PHP的运行机制...
### 在Linux下编译并运行C程序 #### 环境准备与编译器安装 在开始编写并编译C/C++程序之前,确保已经安装了必要的编译工具。Linux系统通常内置或提供了多种编译工具,其中最常用的是GCC (GNU Compiler Collection)...
总的来说,这个“在Linux下用Qt编写的一个程序”涉及了Qt的网络编程、图形视图、定时器和多线程等核心模块。通过合理利用这些工具,开发者可以构建出一个实时监控和展示数据变化的高效应用。在实际开发过程中,还需...
此外,本书还涉及到了Linux内核模块编程的相关知识点,模块编程允许开发者在不重新编译整个内核的情况下,动态地加载和卸载驱动程序。 该书为读者提供了Linux驱动程序开发的详尽介绍,例如,如何实现设备的初始化和...
Linux 设备驱动程序设计的模块需要包含模块初始化和模块卸载函数,前者在 insmod 的时候运行,后者在 rmmod 的时候运行。初始化与卸载函数必须在宏 module_init 和 module_exit 使用前定义,否则会出现编译错误。 6...
### Wine使用者指南:深入探索Linux下运行Windows程序 #### 概览与目的 Wine,一个开创性的软件,旨在让Linux用户能够在不依赖Windows操作系统的情况下,执行原生的Windows应用程序和游戏。它通过提供Windows API...
在没有设置core dump大小限制的情况下,运行程序不会生成core文件。但当执行`ulimit -c unlimited`设置无限制的core文件大小后,再次运行程序,就会产生一个core dump文件,可以用于后续分析。 为了分析core dump...
4. **运行程序**: 执行生成的可执行文件,如`./lottery`。 二、链表数据结构 链表是一种线性数据结构,每个元素(节点)包含数据和指向下一个元素的指针。在C语言中,链表的实现涉及以下概念: 1. **节点定义**: ...
在Linux下,Makefile用于自动化编译、链接等构建过程。学习如何编写Makefile,理解规则、依赖关系和目标,能帮助我们更有效地管理和构建项目。 七、版本控制工具 源码通常在版本控制系统如Git中进行管理。掌握Git的...
"Linux下的段错误Segmentationfault产生的原因及调试方法经典" 在 Linux 系统中,段错误(Segmentation fault)是一种常见的错误,它是指访问了错误的内存段,或者访问了没有权限的内存区域,或者根本不存在对应的...
9. **编译与链接**:在Linux下,通常使用`gcc`或`g++`编译器进行源代码编译,`make`工具则可以帮助组织和自动化编译过程。 10. **调试技巧**:学会使用`gdb`调试器来跟踪程序执行,设置断点,查看变量值,单步执行...
在Linux系统中,后台运行服务程序是常见的需求,特别是对于长时间运行的任务,如Python脚本。在标题和描述中提到的“&”符号和“nohup”命令就是实现这一目标的关键工具。下面我们将深入探讨如何使用这些命令以及...
Qt 程序在 Linux 下发布 在 Linux 平台下发布 Qt 应用程序需要注意到动态链接库的管理。通过运行 ldd 命令可以查看应用程序依赖的动态链接库,然后复制缺失的动态库到应用程序目录下,并建立软链接实现应用程序与...
Linux是多用户、多任务的操作系统,它的内核提供了丰富的系统调用来支持程序的运行。 2. **Shell编程**:Linux中的Shell是用户与系统交互的主要接口,也是编写脚本程序的重要工具。学习Bash Shell语法,包括变量、...
在Linux系统中,C++编程时常常需要创建守护线程(daemon thread)来执行特定的任务,比如监控系统状态、定时任务或确保某个服务始终运行。守护线程是一种长期运行的后台进程,它不依赖于终端会话,即使用户注销或者...
### Linux下的段错误产生的原因及调试方法 #### 概述 段错误,即`Segmentation fault`,是在程序运行过程中由于非法访问内存所引发的一种错误。这种错误在Linux环境下非常常见,尤其对于使用C/C++这类需要手动管理...
10. **Makefile与编译构建**:在Linux下,通常使用Makefile来组织和自动化编译过程。书中会介绍Makefile的规则、目标和依赖关系,以及如何优化编译过程。 通过深入学习《Linux C程序设计大全》,你将能够编写出能在...
在Linux下编写程序,程序员可以直接与操作系统内核进行交互,实现更底层的功能控制。C语言则是与操作系统接口最直接的语言之一,它的语法简洁、高效,是系统编程的首选语言。 课程内容可能涵盖以下几个关键知识点:...