编译Ngnix遇到的问题,查看程序依赖的库文件
要點:ldd 可以讀取每個可以運行的程序依賴的 so 文件。
編譯的時候提示需要Openssl庫.
查看本機,已經安裝了openssl
?
查看編譯報錯文件,查找Openssl所依賴的庫
more objs/autoconf.err
查看openssl所依賴的庫文件
ldd /usr/bin/openssl
ldd –u /usr/bin/openssl
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 源代碼升級系統基本函數庫是一個典型的找抽行為。
舊軟件可以和自己編譯的新軟件共存啊,只要編譯時候指定一個不同的安裝目錄就行了,可以完全不影響舊軟件的。
總結
以上是生活随笔為你收集整理的编译Ngnix遇到的问题,查看程序依赖的库文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hibernate实体JSONObjec
- 下一篇: [汇编] 002基础知识-CPU和寄存器