我使用gcc編譯器和Ubuntu 12.04操作系統。我想知道哪裏可以找到目標文件,以及哪個目錄下包含printf函數的定義。再次,我不尋找包含原型但包含實際定義的目標文件的頭文件。我在哪裏可以找到包含printf函數定義的目標文件?
回答
你在尋找目標文件還是源文件?
.o目標文件存儲在庫中,libc.so
。在大多數Linux發行版中,該文件位於/lib/libc.so
。在Ubuntu 11和12上,作爲multiarch support的一部分,/ lib的內容已被移至/lib/i386-linux-gnu
和/lib/x86_64-linux-gnu
。
您可以通過使用被用來創建與x
(摘錄)選項庫中的ar
(存檔)命令獲取單個對象文件:
ar x libc.a stdio.o
這似乎不是很有用,但,所以我猜你確實需要源文件而不是目標文件。爲此,您將安裝glibc package,其中包含printf.c(它調用vprintf,它調用vfprintf,其中包含printf的實際代碼)。
此源碼可能爲browsed on Launchpad。它非常複雜,並且延伸超過2000行代碼。
我有3個具體的問題關於這個即(1)使用ar命令,列出libC中存在的所有目標文件 2.在這些目標文件中,什麼是包含printf定義的文件()?你用什麼命令找出來的? 3.是否可以通過僅包含程序中實際需要/使用的那些定義來減小最終可執行文件的大小?如果是這樣,如何。 – Ananda 2012-07-26 04:39:13
感嘆。這是功課嗎? (1)man ar,(2)'objdump + some options | grep printf'(3)參見GCC文檔並試用它。 – 2012-07-26 10:23:05
我找到確切的答案我的前兩個問題 -
要列出所有目標文件提出了libc中,我們使用下面的命令:
x86_64系統上:$ AR -t在/ usr/LIB/x86_64的-Linux的GNU/libc.a的
i386的系統:$ AR -t /usr/lib/i386-linux-gnu/libc.a
要找出哪些對象文件包含printf的樂趣ction在/ usr/lib/x86_64-linux-gnu/usr/lib/i386-linux-gnu或目錄下運行此命令:
$ nm -o libc.a | grep -w printf
仍在努力尋找正確的答案。
是的,在處理庫時,'nm'是'objdump'的一個很好的選擇。 – 2012-07-26 13:42:32
- 1. 我在哪裏可以找到com.mathworks.jmi包
- 2. 我在哪裏可以找到包org.omg.CosTransactions
- 3. 我在哪裏可以找到包javax.media.opengl?
- 4. 哪裏可以找到缺少的「C」包含文件。 (* .h)中
- 5. EDI X12標準 - 我在哪裏可以找到這個定義?
- 6. 我到底在哪裏包含自定義主題文件?
- 7. 我在哪裏可以找到npm軟件包的文檔?
- 8. 我在哪裏可以找到包含functionaljava 3.0的存儲庫?
- 9. 我在哪裏可以找到自定義的可可/ xcode類文件?
- 10. 我可以在哪裏找到一個包含私有API的ipa文件?
- 11. 我在哪裏可以找到Ember的文檔nearestOfType()函數
- 12. 我在哪裏可以找到數據,目標模態
- 13. 我在哪裏可以找到c標準頭文件中聲明的函數的定義,如stdlib.h?
- 14. 哪裏可以找到CeCreateDatabaseWithProps的定義
- 15. 哪裏可以找到Theme_Material_Light的定義?
- 16. 我在哪裏可以找到WordPress主題中的自定義函數?
- 17. 哪裏可以找到源函數定義?
- 18. 我在哪裏可以找到Oracle Forms中JNI包的文檔?
- 19. 我在哪裏可以找到size_t的定義?
- 20. 我在哪裏可以找到spatstat中類對象的定義
- 21. 我在哪裏可以找到「eslint:recommended」的規則定義?
- 22. 我在哪裏可以找到build.gradle文件中scmVersion的DSL定義
- 23. 我在哪裏可以找到以下PopOut_Position()函數?
- 24. 我在哪裏可以找到RedHat 7的php-pgsql軟件包?
- 25. 我在哪裏可以找到Cygwin Boost軟件包中的bjam?
- 26. 我在哪裏可以找到JavaEE軟件包的源代碼?
- 27. 我在哪裏可以找到我的ca.crt文件的私鑰
- 28. 我在哪裏可以找到JOSSO數據庫配置文件?
- 29. 我在哪裏可以找到我的Localizeable.strings文件?
- 30. 我在哪裏可以找到itertools.combinations()函數的源代碼
它是'libc'的一部分。你到底在找什麼?如果你正在尋找源代碼或庫中包含它的機器中的定義? – 2012-07-25 16:26:56
我正在尋找包含printf代碼定義的libc下的目標文件。 – Ananda 2012-07-26 04:27:35