编译Ngnix遇到的问题,查看程序依赖的库文件

要点:ldd 可以读取每个可以运行的程序依赖的 so 文件。

编译的时候提示需要Openssl库.

查看本机,已经安装了openssl

image

 

查看编译报错文件,查找Openssl所依赖的库

more objs/autoconf.err

image

查看openssl所依赖的库文件

ldd /usr/bin/openssl

image

ldd –u /usr/bin/openssl

image

objdump -x obj 以某种分类信息的形式把目标文件的数据组织(被分为几大块)输出   

objdump -t obj 输出目标文件的符号表

objdump -h obj 输出目标文件的所有段概括

 

[root@rhel nginx-1.6.0]# objdump -x /usr/bin/openssl

/usr/bin/openssl:     file format elf64-x86-64
/usr/bin/openssl
architecture: i386:x86-64, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x0000000000416e20

Program Header:
    PHDR off    0x0000000000000040 vaddr 0x0000000000400040 paddr 0x0000000000400040 align 2**3
         filesz 0x0000000000000230 memsz 0x0000000000000230 flags r-x
  INTERP off    0x0000000000000270 vaddr 0x0000000000400270 paddr 0x0000000000400270 align 2**0
         filesz 0x000000000000001c memsz 0x000000000000001c flags r--
    LOAD off    0x0000000000000000 vaddr 0x0000000000400000 paddr 0x0000000000400000 align 2**21
         filesz 0x0000000000079114 memsz 0x0000000000079114 flags r-x
    LOAD off    0x0000000000079618 vaddr 0x0000000000679618 paddr 0x0000000000679618 align 2**21
         filesz 0x0000000000005690 memsz 0x0000000000006640 flags rw-
    LOAD off    0x000000000007eca8 vaddr 0x000000000087eca8 paddr 0x000000000087eca8 align 2**21
         filesz 0x0000000000004de5 memsz 0x0000000000004de5 flags rw-
DYNAMIC off    0x0000000000079bc8 vaddr 0x0000000000679bc8 paddr 0x0000000000679bc8 align 2**3
         filesz 0x0000000000000210 memsz 0x0000000000000210 flags rw-
    NOTE off    0x000000000000028c vaddr 0x000000000040028c paddr 0x000000000040028c align 2**2
         filesz 0x0000000000000044 memsz 0x0000000000000044 flags r--
EH_FRAME off    0x0000000000075be8 vaddr 0x0000000000475be8 paddr 0x0000000000475be8 align 2**2
         filesz 0x00000000000006f4 memsz 0x00000000000006f4 flags r--
   STACK off    0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**3
         filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw-
   RELRO off    0x0000000000079618 vaddr 0x0000000000679618 paddr 0x0000000000679618 align 2**0
         filesz 0x00000000000009e8 memsz 0x00000000000009e8 flags r--

Dynamic Section:
  NEEDED               libssl.so.10
  NEEDED               libgssapi_krb5.so.2
  NEEDED               libkrb5.so.3
  NEEDED               libcom_err.so.2
  NEEDED               libk5crypto.so.3
  NEEDED               libcrypto.so.10
  NEEDED               libdl.so.2
  NEEDED               libz.so.1
  NEEDED               libc.so.6
  INIT                 0x0000000000412c00
  FINI                 0x00000000004625d8
  GNU_HASH             0x00000000004002d0
  STRTAB               0x000000000087eca8
  SYMTAB               0x00000000004003c0
  STRSZ                0x0000000000004d75
  SYMENT               0x0000000000000018
  DEBUG                0x0000000000000000
  PLTGOT               0x0000000000679fe8
  PLTRELSZ             0x00000000000062e8
  PLTREL               0x0000000000000007
  JMPREL               0x000000000040c918
  RELA                 0x000000000040c2e8
  RELASZ               0x0000000000000630
  RELAENT              0x0000000000000018
  VERNEED              0x000000000040c228
  VERNEEDNUM           0x0000000000000003
  VERSYM               0x000000000040b96e
  0x6ffffef9           0x0000000000406c30
  0x6ffffdf7           0x000000000000012c
  0x6ffffef8           0x0000000000406d60
  0x6ffffdf6           0x0000000000000db0

http://wapiknow.baidu.com/question/523406943.html

linux依赖关系及软件编译更新

linux各种软件相互依赖,如一张网一般,如果需要更新其中一个软件,rpm的好像可以解决软件间的相互依赖关系;如果自己编译更新软件(很多软件没有rpm格式的),用tar更新,如何解决相互依赖关系? 卸载旧版软件,如何将软件间依赖关系更新到新装软件? 我发现我编译更新软件之后,其他软件仍然依赖旧版软件,如果卸载旧软件就会影响其他软件的依赖关系,系统软件网就会有一个大破洞,很多软件都不能再用,严重的只能重装系统。

fuyaosuixin 2013-2-7

下载知道客户端,10分钟内有问必答

最佳推荐答案最佳推荐答案

脑补……
因为你没有软件,所有这些事情都要自己动手。

ldd 可以读取每个可以运行的程序依赖的 so 文件。

objdump 好像也可以读取依赖的一些内容。

之后用读取的这些内容反推程序对应的软件包,之后把这些反推出来的软件包都重新编译。

一般来说 ldd 对应的 so 文件只要正确,一般函数接口就问题不大,当然并不绝对。

所以,这种情况,最好的解决办法是把所有系统都整体的重新编译一遍。


言外之意,用 tar 源代码升级系统基本函数库是一个典型的找抽行为。

旧软件可以和自己编译的新软件共存啊,只要编译时候指定一个不同的安装目录就行了,可以完全不影响旧软件的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461174.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[JavaWeb修行之路 Day1] 安装、配置、部署Tomcat

一、相关软件下载 Tomcat下载地址:http://tomcat.apache.org 。选择Tomcat 6或者Tomcat 7。Eclipse下载地址:http://www.eclipse.org/downloads/ 。选择Eclipse IDE for Java EE Developers进行下载。当然,也可以使用MyEclipse,收…

应用层为何不能设置分辨率

以下内容源于朱有鹏《物联网大讲堂》课程的学习,如有侵权,请告知删除。 5、在应用程序中设置分辨率 (1)可视分辨率(即实际分辨率)、虚拟分辨率 (2)实验及结果 vinfo.xres 1024; …

Vagrant 快速入门

1. Vagrant功能: Vagrant uses Oracle’s VirtualBox to build configurable, lightweight, and portable virtual machines dynamically.. 【Vagrant 使用Oracle VM VirtualBox 动态创建和配置轻量级的,可重现的,便携的虚拟机环境。】 2. Vagrant下载: …

各种分页存储过程 (转)

在项目中,我们经常遇到或用到分页,那么在大数据量(百万级以上)下,哪种分页算法效率最优呢?我们不妨用事实说话。 测试环境 硬件:CPU 酷睿双核T5750 内存:2G 软件:Windows server 20…

ViewBag 找不到编译动态表达式所需的一种或多种类型,是否缺少引用?

症状: 类似上面的警告提示,运行程序不会有任何错误,但若干地方都提示警告,并且明明dll的引用都是正确的。 解决方案: 删除:C:\Users\{your computer name}\AppData\Local\Temp\Temporary ASP.NET Files 该目…

framebuffer驱动详解4——framebuffer驱动分析2(probe函数讲解)

以下内容源于朱有鹏《物联网大讲堂》课程的学习,如有侵权,请告知删除。 主要在填充fbdev这个结构体。 二、framebuffer驱动分析2 1、probe函数分析 (1)struct s3c_platform_fb 这个结构体是fb的platform_data结构体&#xff1…

XenDesktop 5 SQL Server Mirror事务日志比较大的原因分析

在实施XenDesktop5项目过程中,发现XenDesktop5版本的数据库镜像事务日志很大,在XenDesktop4和XenApp版本中不存在该问题;于是我根据该现象探究XenDesktop5及以上版本镜像数据库事务日志为何如此之大以及我们今后实施的过程中该如何来维护这么…

input子系统详解1——input子系统简介

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 转载博客:input输入子系统 - 涛少& - 博客园​​​​​​​ 前言 Linux系统支持的输入设备繁多,例如键盘、鼠标、触摸屏、手柄等等,Linux系统是如何管理如此…

【04】Effective Java - 类和接口

为什么80%的码农都做不了架构师?>>> 1、使类和成员的可访问性最小化 封装是软件设计的基本原则之一,它的好处就是解除组成系统的各个模块之间的耦合关系,使得这些模块可以独立地开发、测试、优化、使用、理解 修改,同…

input子系统详解3——input子系统框架核心层分析

以下内容源于朱有鹏嵌入式课程的学习,如有侵权请告知删除。 一、前言 由input子系统简介可知,input子系统分为三层: 1、上层输入事件驱动层 涉及的文件有x210_kernel\drivers\input\evdev.c、mousedev.c 和 joydev.c文件,分别对应…

Gitlab Merge Request Builder Plugin 配置小记

2019独角兽企业重金招聘Python工程师标准>>> 以前在给一些开源项目贡献代码的时候,在github上一提交pull request或者提交的分支代码更新了的时候,jenkins就会自动把代码进行merge并且运行单元测试,当时看了心里就2个字&#xff1…

IOS:屏幕旋转与Transform

IOS:屏幕旋转与Transform iTouch,iPhone,iPad设置都是支持旋转的,如果我们的程序能够根据不同的方向做出不同的布局,体验会更好。 如何设置程序支持旋转呢,通常我们会在程序的info.plist中进行设置Supporte…

input子系统详解4——输入事件驱动层源码分析

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 一、前言 由input子系统简介可知,input子系统分为三层: ​ 1、上层输入事件驱动层 涉及的文件有x210_kernel\drivers\input\evdev.c、mousedev.c 和 joydev.c文件&#xff0…

java公钥加密私钥解密过程_GPG加密解密过程

GPG加密解密过程一、Linux系统下1.安装yum安装[rootPOC-ORACLE ~]# yum install gnupg下载安装包安装https://www.gnupg.org/download/index.en.html查看gpg帮助[rootPOC-ORACLE ~]# gpg --helpgpg (GnuPG) 2.0.14libgcrypt 1.4.5Copyright (C) 2009 Free Software Foundation,…

十分钟让你明白Objective-C的语法(和Java、C++的对比)

2019独角兽企业重金招聘Python工程师标准>>> 很多想开发iOS,或者正在开发iOS的程序员以前都做过Java或者C,当第一次看到Objective-C的代码时都会头疼,Objective-C的代码在语法上和Java, C有着很大的区别,有的同学会感觉…

I2C子系统详解1——I2C总线设备的驱动框架

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 参考博客 I2C总线驱动框架详解 linux内核I2C子系统详解 一、I2C总线的物理特征 这部分内容的简介可见博客:SPI、I2C、UART(即串口)三种串行总线详解。 &#x…

神经网络编程入门

本文主要内容包括: (1) 介绍神经网络基本原理, (2) AForge.NET实现前向神经网络的方法, (3) Matlab实现前向神经网络的方法 。 第0节、引例 本文以Fisher的Iris数据集作为神经网络程序的测试数据集。Iris数据集可以在http://en.wikipedia.or…

软考复习之路—组成原理

计算机系统的基础知识应该是作为一个编程人员必备的一门课程,仅仅有了解了计算机的组成,程序在计算 机中的存储状态,运算等基本内容,我们才干继续对计算机有更深层次的认识,更easy学习与上手。比方说要 想学习操作系统…

python内存管理机制错误_Python内存管理机制和垃圾回收机制的简单理解

一、内存管理机制1.由c开发出来的cpython2.include / objests3.需要下载python源码包4.Pyobject:floatPyVarObject:5.在python中所有东西创建对象的时候,内部都会存储一个数据// 维护双向链表struct _object *_ob_next;struct _object *_ob_p…

求背包问题所有解(C++实现)

这是我学习数据结构时的一道上机作业&#xff0c;那时还没养成写注释的习惯&#xff0c;所以各位得受点苦了。 只是简易背包问题。 代码&#xff1a; 展开 1 // 背包问题所有解2 // 作者:王锦 3 // 邮箱:jinkswvip.qq.com4 5 #include "stdafx.h"6 #include <iost…